diff options
author | Dave Jones <davej@redhat.com> | 2006-12-12 17:41:41 -0500 |
---|---|---|
committer | Dave Jones <davej@redhat.com> | 2006-12-12 17:41:41 -0500 |
commit | c4366889dda8110247be59ca41fddb82951a8c26 (patch) | |
tree | 705c1a996bed8fd48ce94ff33ec9fd00f9b94875 /Documentation/s390 | |
parent | db2fb9db5735cc532fd4fc55e94b9a3c3750378e (diff) | |
parent | e1036502e5263851259d147771226161e5ccc85a (diff) |
Merge ../linus
Conflicts:
drivers/cpufreq/cpufreq.c
Diffstat (limited to 'Documentation/s390')
-rw-r--r-- | Documentation/s390/CommonIO | 6 | ||||
-rw-r--r-- | Documentation/s390/Debugging390.txt | 38 | ||||
-rw-r--r-- | Documentation/s390/cds.txt | 64 | ||||
-rw-r--r-- | Documentation/s390/crypto/crypto-API.txt | 10 | ||||
-rw-r--r-- | Documentation/s390/driver-model.txt | 10 | ||||
-rw-r--r-- | Documentation/s390/s390dbf.txt | 8 |
6 files changed, 71 insertions, 65 deletions
diff --git a/Documentation/s390/CommonIO b/Documentation/s390/CommonIO index 59d1166d41ee..22f82f21bc60 100644 --- a/Documentation/s390/CommonIO +++ b/Documentation/s390/CommonIO | |||
@@ -66,7 +66,7 @@ Command line parameters | |||
66 | 66 | ||
67 | When a device is un-ignored, device recognition and sensing is performed and | 67 | When a device is un-ignored, device recognition and sensing is performed and |
68 | the device driver will be notified if possible, so the device will become | 68 | the device driver will be notified if possible, so the device will become |
69 | available to the system. | 69 | available to the system. Note that un-ignoring is performed asynchronously. |
70 | 70 | ||
71 | You can also add ranges of devices to be ignored by piping to | 71 | You can also add ranges of devices to be ignored by piping to |
72 | /proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the | 72 | /proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the |
@@ -74,7 +74,7 @@ Command line parameters | |||
74 | 74 | ||
75 | Note: While already known devices can be added to the list of devices to be | 75 | Note: While already known devices can be added to the list of devices to be |
76 | ignored, there will be no effect on then. However, if such a device | 76 | ignored, there will be no effect on then. However, if such a device |
77 | disappears and then reappeares, it will then be ignored. | 77 | disappears and then reappears, it will then be ignored. |
78 | 78 | ||
79 | For example, | 79 | For example, |
80 | "echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore" | 80 | "echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore" |
@@ -82,7 +82,7 @@ Command line parameters | |||
82 | devices. | 82 | devices. |
83 | 83 | ||
84 | The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward | 84 | The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward |
85 | compatibilty, by the device number in hexadecimal (0xabcd or abcd). | 85 | compatibility, by the device number in hexadecimal (0xabcd or abcd). |
86 | 86 | ||
87 | 87 | ||
88 | * /proc/s390dbf/cio_*/ (S/390 debug feature) | 88 | * /proc/s390dbf/cio_*/ (S/390 debug feature) |
diff --git a/Documentation/s390/Debugging390.txt b/Documentation/s390/Debugging390.txt index 4dd25ee549e9..3f9ddbc23b27 100644 --- a/Documentation/s390/Debugging390.txt +++ b/Documentation/s390/Debugging390.txt | |||
@@ -7,7 +7,7 @@ | |||
7 | 7 | ||
8 | Overview of Document: | 8 | Overview of Document: |
9 | ===================== | 9 | ===================== |
10 | This document is intended to give an good overview of how to debug | 10 | This document is intended to give a good overview of how to debug |
11 | Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a | 11 | Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a |
12 | tutorial on the fundamentals of C & assembly. It doesn't go into | 12 | tutorial on the fundamentals of C & assembly. It doesn't go into |
13 | 390 IO in any detail. It is intended to complement the documents in the | 13 | 390 IO in any detail. It is intended to complement the documents in the |
@@ -300,7 +300,7 @@ On z/Architecture our page indexes are now 2k in size | |||
300 | but only mess with 2 segment indices each time we mess with | 300 | but only mess with 2 segment indices each time we mess with |
301 | a PMD. | 301 | a PMD. |
302 | 302 | ||
303 | 3) As z/Architecture supports upto a massive 5-level page table lookup we | 303 | 3) As z/Architecture supports up to a massive 5-level page table lookup we |
304 | can only use 3 currently on Linux ( as this is all the generic kernel | 304 | can only use 3 currently on Linux ( as this is all the generic kernel |
305 | currently supports ) however this may change in future | 305 | currently supports ) however this may change in future |
306 | this allows us to access ( according to my sums ) | 306 | this allows us to access ( according to my sums ) |
@@ -502,7 +502,7 @@ Notes: | |||
502 | ------ | 502 | ------ |
503 | 1) The only requirement is that registers which are used | 503 | 1) The only requirement is that registers which are used |
504 | by the callee are saved, e.g. the compiler is perfectly | 504 | by the callee are saved, e.g. the compiler is perfectly |
505 | capible of using r11 for purposes other than a frame a | 505 | capable of using r11 for purposes other than a frame a |
506 | frame pointer if a frame pointer is not needed. | 506 | frame pointer if a frame pointer is not needed. |
507 | 2) In functions with variable arguments e.g. printf the calling procedure | 507 | 2) In functions with variable arguments e.g. printf the calling procedure |
508 | is identical to one without variable arguments & the same number of | 508 | is identical to one without variable arguments & the same number of |
@@ -846,7 +846,7 @@ of time searching for debugging info. The following self explanatory line should | |||
846 | instead if the code isn't compiled -g, as it is much faster: | 846 | instead if the code isn't compiled -g, as it is much faster: |
847 | objdump --disassemble-all --syms vmlinux > vmlinux.lst | 847 | objdump --disassemble-all --syms vmlinux > vmlinux.lst |
848 | 848 | ||
849 | As hard drive space is valuble most of us use the following approach. | 849 | As hard drive space is valuable most of us use the following approach. |
850 | 1) Look at the emitted psw on the console to find the crash address in the kernel. | 850 | 1) Look at the emitted psw on the console to find the crash address in the kernel. |
851 | 2) Look at the file System.map ( in the linux directory ) produced when building | 851 | 2) Look at the file System.map ( in the linux directory ) produced when building |
852 | the kernel to find the closest address less than the current PSW to find the | 852 | the kernel to find the closest address less than the current PSW to find the |
@@ -902,7 +902,7 @@ A. It is a tool for intercepting calls to the kernel & logging them | |||
902 | to a file & on the screen. | 902 | to a file & on the screen. |
903 | 903 | ||
904 | Q. What use is it ? | 904 | Q. What use is it ? |
905 | A. You can used it to find out what files a particular program opens. | 905 | A. You can use it to find out what files a particular program opens. |
906 | 906 | ||
907 | 907 | ||
908 | 908 | ||
@@ -911,7 +911,7 @@ Example 1 | |||
911 | If you wanted to know does ping work but didn't have the source | 911 | If you wanted to know does ping work but didn't have the source |
912 | strace ping -c 1 127.0.0.1 | 912 | strace ping -c 1 127.0.0.1 |
913 | & then look at the man pages for each of the syscalls below, | 913 | & then look at the man pages for each of the syscalls below, |
914 | ( In fact this is sometimes easier than looking at some spagetti | 914 | ( In fact this is sometimes easier than looking at some spaghetti |
915 | source which conditionally compiles for several architectures ). | 915 | source which conditionally compiles for several architectures ). |
916 | Not everything that it throws out needs to make sense immediately. | 916 | Not everything that it throws out needs to make sense immediately. |
917 | 917 | ||
@@ -1037,7 +1037,7 @@ e.g. man strace, man alarm, man socket. | |||
1037 | 1037 | ||
1038 | Performance Debugging | 1038 | Performance Debugging |
1039 | ===================== | 1039 | ===================== |
1040 | gcc is capible of compiling in profiling code just add the -p option | 1040 | gcc is capable of compiling in profiling code just add the -p option |
1041 | to the CFLAGS, this obviously affects program size & performance. | 1041 | to the CFLAGS, this obviously affects program size & performance. |
1042 | This can be used by the gprof gnu profiling tool or the | 1042 | This can be used by the gprof gnu profiling tool or the |
1043 | gcov the gnu code coverage tool ( code coverage is a means of testing | 1043 | gcov the gnu code coverage tool ( code coverage is a means of testing |
@@ -1419,7 +1419,7 @@ On a SMP guest issue a command to all CPUs try prefixing the command with cpu al | |||
1419 | To issue a command to a particular cpu try cpu <cpu number> e.g. | 1419 | To issue a command to a particular cpu try cpu <cpu number> e.g. |
1420 | CPU 01 TR I R 2000.3000 | 1420 | CPU 01 TR I R 2000.3000 |
1421 | If you are running on a guest with several cpus & you have a IO related problem | 1421 | If you are running on a guest with several cpus & you have a IO related problem |
1422 | & cannot follow the flow of code but you know it isnt smp related. | 1422 | & cannot follow the flow of code but you know it isn't smp related. |
1423 | from the bash prompt issue | 1423 | from the bash prompt issue |
1424 | shutdown -h now or halt. | 1424 | shutdown -h now or halt. |
1425 | do a Q CPUS to find out how many cpus you have | 1425 | do a Q CPUS to find out how many cpus you have |
@@ -1602,7 +1602,7 @@ V000FFFD0 00010400 80010802 8001085A 000FFFA0 | |||
1602 | our 3rd return address is 8001085A | 1602 | our 3rd return address is 8001085A |
1603 | 1603 | ||
1604 | as the 04B52002 looks suspiciously like rubbish it is fair to assume that the kernel entry routines | 1604 | as the 04B52002 looks suspiciously like rubbish it is fair to assume that the kernel entry routines |
1605 | for the sake of optimisation dont set up a backchain. | 1605 | for the sake of optimisation don't set up a backchain. |
1606 | 1606 | ||
1607 | now look at System.map to see if the addresses make any sense. | 1607 | now look at System.map to see if the addresses make any sense. |
1608 | 1608 | ||
@@ -1638,11 +1638,11 @@ more useful information. | |||
1638 | 1638 | ||
1639 | Unlike other bus architectures modern 390 systems do their IO using mostly | 1639 | Unlike other bus architectures modern 390 systems do their IO using mostly |
1640 | fibre optics & devices such as tapes & disks can be shared between several mainframes, | 1640 | fibre optics & devices such as tapes & disks can be shared between several mainframes, |
1641 | also S390 can support upto 65536 devices while a high end PC based system might be choking | 1641 | also S390 can support up to 65536 devices while a high end PC based system might be choking |
1642 | with around 64. Here is some of the common IO terminology | 1642 | with around 64. Here is some of the common IO terminology |
1643 | 1643 | ||
1644 | Subchannel: | 1644 | Subchannel: |
1645 | This is the logical number most IO commands use to talk to an IO device there can be upto | 1645 | This is the logical number most IO commands use to talk to an IO device there can be up to |
1646 | 0x10000 (65536) of these in a configuration typically there is a few hundred. Under VM | 1646 | 0x10000 (65536) of these in a configuration typically there is a few hundred. Under VM |
1647 | for simplicity they are allocated contiguously, however on the native hardware they are not | 1647 | for simplicity they are allocated contiguously, however on the native hardware they are not |
1648 | they typically stay consistent between boots provided no new hardware is inserted or removed. | 1648 | they typically stay consistent between boots provided no new hardware is inserted or removed. |
@@ -1651,7 +1651,7 @@ HALT SUBCHANNEL,MODIFY SUBCHANNEL,RESUME SUBCHANNEL,START SUBCHANNEL,STORE SUBCH | |||
1651 | TEST SUBCHANNEL ) we use this as the ID of the device we wish to talk to, the most | 1651 | TEST SUBCHANNEL ) we use this as the ID of the device we wish to talk to, the most |
1652 | important of these instructions are START SUBCHANNEL ( to start IO ), TEST SUBCHANNEL ( to check | 1652 | important of these instructions are START SUBCHANNEL ( to start IO ), TEST SUBCHANNEL ( to check |
1653 | whether the IO completed successfully ), & HALT SUBCHANNEL ( to kill IO ), a subchannel | 1653 | whether the IO completed successfully ), & HALT SUBCHANNEL ( to kill IO ), a subchannel |
1654 | can have up to 8 channel paths to a device this offers redunancy if one is not available. | 1654 | can have up to 8 channel paths to a device this offers redundancy if one is not available. |
1655 | 1655 | ||
1656 | 1656 | ||
1657 | Device Number: | 1657 | Device Number: |
@@ -1659,7 +1659,7 @@ This number remains static & Is closely tied to the hardware, there are 65536 of | |||
1659 | also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits ) | 1659 | also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits ) |
1660 | & another lsb 8 bits. These remain static even if more devices are inserted or removed | 1660 | & another lsb 8 bits. These remain static even if more devices are inserted or removed |
1661 | from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided | 1661 | from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided |
1662 | devices arent inserted or removed. | 1662 | devices aren't inserted or removed. |
1663 | 1663 | ||
1664 | Channel Control Words: | 1664 | Channel Control Words: |
1665 | CCWS are linked lists of instructions initially pointed to by an operation request block (ORB), | 1665 | CCWS are linked lists of instructions initially pointed to by an operation request block (ORB), |
@@ -1674,7 +1674,7 @@ concurrently, you check how the IO went on by issuing a TEST SUBCHANNEL at each | |||
1674 | from which you receive an Interruption response block (IRB). If you get channel & device end | 1674 | from which you receive an Interruption response block (IRB). If you get channel & device end |
1675 | status in the IRB without channel checks etc. your IO probably went okay. If you didn't you | 1675 | status in the IRB without channel checks etc. your IO probably went okay. If you didn't you |
1676 | probably need a doctor to examine the IRB & extended status word etc. | 1676 | probably need a doctor to examine the IRB & extended status word etc. |
1677 | If an error occurs, more sophistocated control units have a facitity known as | 1677 | If an error occurs, more sophisticated control units have a facility known as |
1678 | concurrent sense this means that if an error occurs Extended sense information will | 1678 | concurrent sense this means that if an error occurs Extended sense information will |
1679 | be presented in the Extended status word in the IRB if not you have to issue a | 1679 | be presented in the Extended status word in the IRB if not you have to issue a |
1680 | subsequent SENSE CCW command after the test subchannel. | 1680 | subsequent SENSE CCW command after the test subchannel. |
@@ -1749,7 +1749,7 @@ Interface (OEMI). | |||
1749 | This byte wide Parallel channel path/bus has parity & data on the "Bus" cable | 1749 | This byte wide Parallel channel path/bus has parity & data on the "Bus" cable |
1750 | & control lines on the "Tag" cable. These can operate in byte multiplex mode for | 1750 | & control lines on the "Tag" cable. These can operate in byte multiplex mode for |
1751 | sharing between several slow devices or burst mode & monopolize the channel for the | 1751 | sharing between several slow devices or burst mode & monopolize the channel for the |
1752 | whole burst. Upto 256 devices can be addressed on one of these cables. These cables are | 1752 | whole burst. Up to 256 devices can be addressed on one of these cables. These cables are |
1753 | about one inch in diameter. The maximum unextended length supported by these cables is | 1753 | about one inch in diameter. The maximum unextended length supported by these cables is |
1754 | 125 Meters but this can be extended up to 2km with a fibre optic channel extended | 1754 | 125 Meters but this can be extended up to 2km with a fibre optic channel extended |
1755 | such as a 3044. The maximum burst speed supported is 4.5 megabytes per second however | 1755 | such as a 3044. The maximum burst speed supported is 4.5 megabytes per second however |
@@ -1759,7 +1759,7 @@ One of these paths can be daisy chained to up to 8 control units. | |||
1759 | 1759 | ||
1760 | ESCON if fibre optic it is also called FICON | 1760 | ESCON if fibre optic it is also called FICON |
1761 | Was introduced by IBM in 1990. Has 2 fibre optic cables & uses either leds or lasers | 1761 | Was introduced by IBM in 1990. Has 2 fibre optic cables & uses either leds or lasers |
1762 | for communication at a signaling rate of upto 200 megabits/sec. As 10bits are transferred | 1762 | for communication at a signaling rate of up to 200 megabits/sec. As 10bits are transferred |
1763 | for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once | 1763 | for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once |
1764 | control info & CRC are added. ESCON only operates in burst mode. | 1764 | control info & CRC are added. ESCON only operates in burst mode. |
1765 | 1765 | ||
@@ -1767,7 +1767,7 @@ ESCONs typical max cable length is 3km for the led version & 20km for the laser | |||
1767 | known as XDF ( extended distance facility ). This can be further extended by using an | 1767 | known as XDF ( extended distance facility ). This can be further extended by using an |
1768 | ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is | 1768 | ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is |
1769 | serial it uses a packet switching architecture the standard Bus & Tag control protocol | 1769 | serial it uses a packet switching architecture the standard Bus & Tag control protocol |
1770 | is however present within the packets. Upto 256 devices can be attached to each control | 1770 | is however present within the packets. Up to 256 devices can be attached to each control |
1771 | unit that uses one of these interfaces. | 1771 | unit that uses one of these interfaces. |
1772 | 1772 | ||
1773 | Common 390 Devices include: | 1773 | Common 390 Devices include: |
@@ -2050,7 +2050,7 @@ list test.c:1,10 | |||
2050 | 2050 | ||
2051 | directory: | 2051 | directory: |
2052 | Adds directories to be searched for source if gdb cannot find the source. | 2052 | Adds directories to be searched for source if gdb cannot find the source. |
2053 | (note it is a bit sensititive about slashes) | 2053 | (note it is a bit sensitive about slashes) |
2054 | e.g. To add the root of the filesystem to the searchpath do | 2054 | e.g. To add the root of the filesystem to the searchpath do |
2055 | directory // | 2055 | directory // |
2056 | 2056 | ||
@@ -2152,7 +2152,7 @@ program as if it just crashed on your system, it is usually called core & create | |||
2152 | current working directory. | 2152 | current working directory. |
2153 | This is very useful in that a customer can mail a core dump to a technical support department | 2153 | This is very useful in that a customer can mail a core dump to a technical support department |
2154 | & the technical support department can reconstruct what happened. | 2154 | & the technical support department can reconstruct what happened. |
2155 | Provided the have an identical copy of this program with debugging symbols compiled in & | 2155 | Provided they have an identical copy of this program with debugging symbols compiled in & |
2156 | the source base of this build is available. | 2156 | the source base of this build is available. |
2157 | In short it is far more useful than something like a crash log could ever hope to be. | 2157 | In short it is far more useful than something like a crash log could ever hope to be. |
2158 | 2158 | ||
diff --git a/Documentation/s390/cds.txt b/Documentation/s390/cds.txt index d80e5733827d..05a2b4f7e38f 100644 --- a/Documentation/s390/cds.txt +++ b/Documentation/s390/cds.txt | |||
@@ -98,7 +98,7 @@ The following chapters describe the I/O related interface routines the | |||
98 | Linux/390 common device support (CDS) provides to allow for device specific | 98 | Linux/390 common device support (CDS) provides to allow for device specific |
99 | driver implementations on the IBM ESA/390 hardware platform. Those interfaces | 99 | driver implementations on the IBM ESA/390 hardware platform. Those interfaces |
100 | intend to provide the functionality required by every device driver | 100 | intend to provide the functionality required by every device driver |
101 | implementaion to allow to drive a specific hardware device on the ESA/390 | 101 | implementation to allow to drive a specific hardware device on the ESA/390 |
102 | platform. Some of the interface routines are specific to Linux/390 and some | 102 | platform. Some of the interface routines are specific to Linux/390 and some |
103 | of them can be found on other Linux platforms implementations too. | 103 | of them can be found on other Linux platforms implementations too. |
104 | Miscellaneous function prototypes, data declarations, and macro definitions | 104 | Miscellaneous function prototypes, data declarations, and macro definitions |
@@ -114,7 +114,7 @@ the ESA/390 architecture has implemented a so called channel subsystem, that | |||
114 | provides a unified view of the devices physically attached to the systems. | 114 | provides a unified view of the devices physically attached to the systems. |
115 | Though the ESA/390 hardware platform knows about a huge variety of different | 115 | Though the ESA/390 hardware platform knows about a huge variety of different |
116 | peripheral attachments like disk devices (aka. DASDs), tapes, communication | 116 | peripheral attachments like disk devices (aka. DASDs), tapes, communication |
117 | controllers, etc. they can all by accessed by a well defined access method and | 117 | controllers, etc. they can all be accessed by a well defined access method and |
118 | they are presenting I/O completion a unified way : I/O interruptions. Every | 118 | they are presenting I/O completion a unified way : I/O interruptions. Every |
119 | single device is uniquely identified to the system by a so called subchannel, | 119 | single device is uniquely identified to the system by a so called subchannel, |
120 | where the ESA/390 architecture allows for 64k devices be attached. | 120 | where the ESA/390 architecture allows for 64k devices be attached. |
@@ -174,14 +174,10 @@ read_dev_chars() - Read Device Characteristics | |||
174 | 174 | ||
175 | This routine returns the characteristics for the device specified. | 175 | This routine returns the characteristics for the device specified. |
176 | 176 | ||
177 | The function is meant to be called with an irq handler in place; that is, | 177 | The function is meant to be called with the device already enabled; that is, |
178 | at earliest during set_online() processing. | 178 | at earliest during set_online() processing. |
179 | 179 | ||
180 | While the request is processed synchronously, the device interrupt | 180 | The ccw_device must not be locked prior to calling read_dev_chars(). |
181 | handler is called for final ending status. In case of error situations the | ||
182 | interrupt handler may recover appropriately. The device irq handler can | ||
183 | recognize the corresponding interrupts by the interruption parameter be | ||
184 | 0x00524443. The ccw_device must not be locked prior to calling read_dev_chars(). | ||
185 | 181 | ||
186 | The function may be called enabled or disabled. | 182 | The function may be called enabled or disabled. |
187 | 183 | ||
@@ -342,7 +338,7 @@ DOIO_REPORT_ALL - report all interrupt conditions | |||
342 | The ccw_device_start() function returns : | 338 | The ccw_device_start() function returns : |
343 | 339 | ||
344 | 0 - successful completion or request successfully initiated | 340 | 0 - successful completion or request successfully initiated |
345 | -EBUSY - The device is currently processing a previous I/O request, or ther is | 341 | -EBUSY - The device is currently processing a previous I/O request, or there is |
346 | a status pending at the device. | 342 | a status pending at the device. |
347 | -ENODEV - cdev is invalid, the device is not operational or the ccw_device is | 343 | -ENODEV - cdev is invalid, the device is not operational or the ccw_device is |
348 | not online. | 344 | not online. |
@@ -365,7 +361,7 @@ first: | |||
365 | -EIO: the common I/O layer terminated the request due to an error state | 361 | -EIO: the common I/O layer terminated the request due to an error state |
366 | 362 | ||
367 | If the concurrent sense flag in the extended status word in the irb is set, the | 363 | If the concurrent sense flag in the extended status word in the irb is set, the |
368 | field irb->scsw.count describes the numer of device specific sense bytes | 364 | field irb->scsw.count describes the number of device specific sense bytes |
369 | available in the extended control word irb->scsw.ecw[0]. No device sensing by | 365 | available in the extended control word irb->scsw.ecw[0]. No device sensing by |
370 | the device driver itself is required. | 366 | the device driver itself is required. |
371 | 367 | ||
@@ -410,30 +406,11 @@ individual flag meanings. | |||
410 | 406 | ||
411 | Usage Notes : | 407 | Usage Notes : |
412 | 408 | ||
413 | Prior to call ccw_device_start() the device driver must assure disabled state, | 409 | ccw_device_start() must be called disabled and with the ccw device lock held. |
414 | i.e. the I/O mask value in the PSW must be disabled. This can be accomplished | ||
415 | by calling local_save_flags( flags). The current PSW flags are preserved and | ||
416 | can be restored by local_irq_restore( flags) at a later time. | ||
417 | |||
418 | If the device driver violates this rule while running in a uni-processor | ||
419 | environment an interrupt might be presented prior to the ccw_device_start() | ||
420 | routine returning to the device driver main path. In this case we will end in a | ||
421 | deadlock situation as the interrupt handler will try to obtain the irq | ||
422 | lock the device driver still owns (see below) ! | ||
423 | |||
424 | The driver must assure to hold the device specific lock. This can be | ||
425 | accomplished by | ||
426 | |||
427 | (i) spin_lock(get_ccwdev_lock(cdev)), or | ||
428 | (ii) spin_lock_irqsave(get_ccwdev_lock(cdev), flags) | ||
429 | |||
430 | Option (i) should be used if the calling routine is running disabled for | ||
431 | I/O interrupts (see above) already. Option (ii) obtains the device gate und | ||
432 | puts the CPU into I/O disabled state by preserving the current PSW flags. | ||
433 | 410 | ||
434 | The device driver is allowed to issue the next ccw_device_start() call from | 411 | The device driver is allowed to issue the next ccw_device_start() call from |
435 | within its interrupt handler already. It is not required to schedule a | 412 | within its interrupt handler already. It is not required to schedule a |
436 | bottom-half, unless an non deterministically long running error recovery procedure | 413 | bottom-half, unless a non deterministically long running error recovery procedure |
437 | or similar needs to be scheduled. During I/O processing the Linux/390 generic | 414 | or similar needs to be scheduled. During I/O processing the Linux/390 generic |
438 | I/O device driver support has already obtained the IRQ lock, i.e. the handler | 415 | I/O device driver support has already obtained the IRQ lock, i.e. the handler |
439 | must not try to obtain it again when calling ccw_device_start() or we end in a | 416 | must not try to obtain it again when calling ccw_device_start() or we end in a |
@@ -454,7 +431,7 @@ information prior to device-end the device driver urgently relies on. In this | |||
454 | case all I/O interruptions are presented to the device driver until final | 431 | case all I/O interruptions are presented to the device driver until final |
455 | status is recognized. | 432 | status is recognized. |
456 | 433 | ||
457 | If a device is able to recover from asynchronosly presented I/O errors, it can | 434 | If a device is able to recover from asynchronously presented I/O errors, it can |
458 | perform overlapping I/O using the DOIO_EARLY_NOTIFICATION flag. While some | 435 | perform overlapping I/O using the DOIO_EARLY_NOTIFICATION flag. While some |
459 | devices always report channel-end and device-end together, with a single | 436 | devices always report channel-end and device-end together, with a single |
460 | interrupt, others present primary status (channel-end) when the channel is | 437 | interrupt, others present primary status (channel-end) when the channel is |
@@ -488,7 +465,7 @@ int ccw_device_resume(struct ccw_device *cdev); | |||
488 | 465 | ||
489 | cdev - ccw_device the resume operation is requested for | 466 | cdev - ccw_device the resume operation is requested for |
490 | 467 | ||
491 | The resume_IO() function returns: | 468 | The ccw_device_resume() function returns: |
492 | 469 | ||
493 | 0 - suspended channel program is resumed | 470 | 0 - suspended channel program is resumed |
494 | -EBUSY - status pending | 471 | -EBUSY - status pending |
@@ -507,6 +484,8 @@ a long-running channel program or the device might require to initially issue | |||
507 | a halt subchannel (HSCH) I/O command. For those purposes the ccw_device_halt() | 484 | a halt subchannel (HSCH) I/O command. For those purposes the ccw_device_halt() |
508 | command is provided. | 485 | command is provided. |
509 | 486 | ||
487 | ccw_device_halt() must be called disabled and with the ccw device lock held. | ||
488 | |||
510 | int ccw_device_halt(struct ccw_device *cdev, | 489 | int ccw_device_halt(struct ccw_device *cdev, |
511 | unsigned long intparm); | 490 | unsigned long intparm); |
512 | 491 | ||
@@ -517,7 +496,7 @@ intparm : interruption parameter; value is only used if no I/O | |||
517 | 496 | ||
518 | The ccw_device_halt() function returns : | 497 | The ccw_device_halt() function returns : |
519 | 498 | ||
520 | 0 - successful completion or request successfully initiated | 499 | 0 - request successfully initiated |
521 | -EBUSY - the device is currently busy, or status pending. | 500 | -EBUSY - the device is currently busy, or status pending. |
522 | -ENODEV - cdev invalid. | 501 | -ENODEV - cdev invalid. |
523 | -EINVAL - The device is not operational or the ccw device is not online. | 502 | -EINVAL - The device is not operational or the ccw device is not online. |
@@ -533,6 +512,23 @@ can then perform an appropriate action. Prior to interrupt of an outstanding | |||
533 | read to a network device (with or without PCI flag) a ccw_device_halt() | 512 | read to a network device (with or without PCI flag) a ccw_device_halt() |
534 | is required to end the pending operation. | 513 | is required to end the pending operation. |
535 | 514 | ||
515 | ccw_device_clear() - Terminage I/O Request Processing | ||
516 | |||
517 | In order to terminate all I/O processing at the subchannel, the clear subchannel | ||
518 | (CSCH) command is used. It can be issued via ccw_device_clear(). | ||
519 | |||
520 | ccw_device_clear() must be called disabled and with the ccw device lock held. | ||
521 | |||
522 | int ccw_device_clear(struct ccw_device *cdev, unsigned long intparm); | ||
523 | |||
524 | cdev: ccw_device the clear operation is requested for | ||
525 | intparm: interruption parameter (see ccw_device_halt()) | ||
526 | |||
527 | The ccw_device_clear() function returns: | ||
528 | |||
529 | 0 - request successfully initiated | ||
530 | -ENODEV - cdev invalid | ||
531 | -EINVAL - The device is not operational or the ccw device is not online. | ||
536 | 532 | ||
537 | Miscellaneous Support Routines | 533 | Miscellaneous Support Routines |
538 | 534 | ||
diff --git a/Documentation/s390/crypto/crypto-API.txt b/Documentation/s390/crypto/crypto-API.txt index 29dee792c887..71ae6ca9f2c2 100644 --- a/Documentation/s390/crypto/crypto-API.txt +++ b/Documentation/s390/crypto/crypto-API.txt | |||
@@ -17,8 +17,8 @@ arch/s390/crypto directory. | |||
17 | 2. Probing for availability of MSA | 17 | 2. Probing for availability of MSA |
18 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 18 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
19 | It should be possible to use Kernels with the z990 crypto implementations both | 19 | It should be possible to use Kernels with the z990 crypto implementations both |
20 | on machines with MSA available an on those without MSA (pre z990 or z990 | 20 | on machines with MSA available and on those without MSA (pre z990 or z990 |
21 | without MSA). Therefore a simple probing mechanisms has been implemented: | 21 | without MSA). Therefore a simple probing mechanism has been implemented: |
22 | In the init function of each crypto module the availability of MSA and of the | 22 | In the init function of each crypto module the availability of MSA and of the |
23 | respective crypto algorithm in particular will be tested. If the algorithm is | 23 | respective crypto algorithm in particular will be tested. If the algorithm is |
24 | available the module will load and register its algorithm with the crypto API. | 24 | available the module will load and register its algorithm with the crypto API. |
@@ -26,7 +26,7 @@ available the module will load and register its algorithm with the crypto API. | |||
26 | If the respective crypto algorithm is not available, the init function will | 26 | If the respective crypto algorithm is not available, the init function will |
27 | return -ENOSYS. In that case a fallback to the standard software implementation | 27 | return -ENOSYS. In that case a fallback to the standard software implementation |
28 | of the crypto algorithm must be taken ( -> the standard crypto modules are | 28 | of the crypto algorithm must be taken ( -> the standard crypto modules are |
29 | also build when compiling the kernel). | 29 | also built when compiling the kernel). |
30 | 30 | ||
31 | 31 | ||
32 | 3. Ensuring z990 crypto module preference | 32 | 3. Ensuring z990 crypto module preference |
@@ -75,8 +75,8 @@ name of the respective module is given in square brackets. | |||
75 | 75 | ||
76 | - SHA1 Digest Algorithm [sha1 -> sha1_z990] | 76 | - SHA1 Digest Algorithm [sha1 -> sha1_z990] |
77 | - DES Encrypt/Decrypt Algorithm (64bit key) [des -> des_z990] | 77 | - DES Encrypt/Decrypt Algorithm (64bit key) [des -> des_z990] |
78 | - Tripple DES Encrypt/Decrypt Algorithm (128bit key) [des3_ede128 -> des_z990] | 78 | - Triple DES Encrypt/Decrypt Algorithm (128bit key) [des3_ede128 -> des_z990] |
79 | - Tripple DES Encrypt/Decrypt Algorithm (192bit key) [des3_ede -> des_z990] | 79 | - Triple DES Encrypt/Decrypt Algorithm (192bit key) [des3_ede -> des_z990] |
80 | 80 | ||
81 | In order to load, for example, the sha1_z990 module when the sha1 algorithm is | 81 | In order to load, for example, the sha1_z990 module when the sha1 algorithm is |
82 | requested (see 3.2.) add 'alias sha1 sha1_z990' to /etc/modprobe.conf. | 82 | requested (see 3.2.) add 'alias sha1 sha1_z990' to /etc/modprobe.conf. |
diff --git a/Documentation/s390/driver-model.txt b/Documentation/s390/driver-model.txt index 62c082387aea..e938c442277d 100644 --- a/Documentation/s390/driver-model.txt +++ b/Documentation/s390/driver-model.txt | |||
@@ -18,11 +18,18 @@ devices/ | |||
18 | - 0.0.0002/ | 18 | - 0.0.0002/ |
19 | - 0.1.0000/0.1.1234/ | 19 | - 0.1.0000/0.1.1234/ |
20 | ... | 20 | ... |
21 | - defunct/ | ||
21 | 22 | ||
22 | In this example, device 0815 is accessed via subchannel 0 in subchannel set 0, | 23 | In this example, device 0815 is accessed via subchannel 0 in subchannel set 0, |
23 | device 4711 via subchannel 1 in subchannel set 0, and subchannel 2 is a non-I/O | 24 | device 4711 via subchannel 1 in subchannel set 0, and subchannel 2 is a non-I/O |
24 | subchannel. Device 1234 is accessed via subchannel 0 in subchannel set 1. | 25 | subchannel. Device 1234 is accessed via subchannel 0 in subchannel set 1. |
25 | 26 | ||
27 | The subchannel named 'defunct' does not represent any real subchannel on the | ||
28 | system; it is a pseudo subchannel where disconnnected ccw devices are moved to | ||
29 | if they are displaced by another ccw device becoming operational on their | ||
30 | former subchannel. The ccw devices will be moved again to a proper subchannel | ||
31 | if they become operational again on that subchannel. | ||
32 | |||
26 | You should address a ccw device via its bus id (e.g. 0.0.4711); the device can | 33 | You should address a ccw device via its bus id (e.g. 0.0.4711); the device can |
27 | be found under bus/ccw/devices/. | 34 | be found under bus/ccw/devices/. |
28 | 35 | ||
@@ -239,6 +246,9 @@ status - Can be 'online' or 'offline'. | |||
239 | 246 | ||
240 | type - The physical type of the channel path. | 247 | type - The physical type of the channel path. |
241 | 248 | ||
249 | shared - Whether the channel path is shared. | ||
250 | |||
251 | cmg - The channel measurement group. | ||
242 | 252 | ||
243 | 3. System devices | 253 | 3. System devices |
244 | ----------------- | 254 | ----------------- |
diff --git a/Documentation/s390/s390dbf.txt b/Documentation/s390/s390dbf.txt index 000230cd26db..0eb7c58916de 100644 --- a/Documentation/s390/s390dbf.txt +++ b/Documentation/s390/s390dbf.txt | |||
@@ -36,7 +36,7 @@ switches to the next debug area. This is done in order to be sure | |||
36 | that the records which describe the origin of the exception are not | 36 | that the records which describe the origin of the exception are not |
37 | overwritten when a wrap around for the current area occurs. | 37 | overwritten when a wrap around for the current area occurs. |
38 | 38 | ||
39 | The debug areas itselve are also ordered in form of a ring buffer. | 39 | The debug areas themselves are also ordered in form of a ring buffer. |
40 | When an exception is thrown in the last debug area, the following debug | 40 | When an exception is thrown in the last debug area, the following debug |
41 | entries are then written again in the very first area. | 41 | entries are then written again in the very first area. |
42 | 42 | ||
@@ -55,7 +55,7 @@ The debug logs can be inspected in a live system through entries in | |||
55 | the debugfs-filesystem. Under the toplevel directory "s390dbf" there is | 55 | the debugfs-filesystem. Under the toplevel directory "s390dbf" there is |
56 | a directory for each registered component, which is named like the | 56 | a directory for each registered component, which is named like the |
57 | corresponding component. The debugfs normally should be mounted to | 57 | corresponding component. The debugfs normally should be mounted to |
58 | /sys/kernel/debug therefore the debug feature can be accessed unter | 58 | /sys/kernel/debug therefore the debug feature can be accessed under |
59 | /sys/kernel/debug/s390dbf. | 59 | /sys/kernel/debug/s390dbf. |
60 | 60 | ||
61 | The content of the directories are files which represent different views | 61 | The content of the directories are files which represent different views |
@@ -87,11 +87,11 @@ There are currently 2 possible triggers, which stop the debug feature | |||
87 | globally. The first possibility is to use the "debug_active" sysctl. If | 87 | globally. The first possibility is to use the "debug_active" sysctl. If |
88 | set to 1 the debug feature is running. If "debug_active" is set to 0 the | 88 | set to 1 the debug feature is running. If "debug_active" is set to 0 the |
89 | debug feature is turned off. | 89 | debug feature is turned off. |
90 | The second trigger which stops the debug feature is an kernel oops. | 90 | The second trigger which stops the debug feature is a kernel oops. |
91 | That prevents the debug feature from overwriting debug information that | 91 | That prevents the debug feature from overwriting debug information that |
92 | happened before the oops. After an oops you can reactivate the debug feature | 92 | happened before the oops. After an oops you can reactivate the debug feature |
93 | by piping 1 to /proc/sys/s390dbf/debug_active. Nevertheless, its not | 93 | by piping 1 to /proc/sys/s390dbf/debug_active. Nevertheless, its not |
94 | suggested to use an oopsed kernel in an production environment. | 94 | suggested to use an oopsed kernel in a production environment. |
95 | If you want to disallow the deactivation of the debug feature, you can use | 95 | If you want to disallow the deactivation of the debug feature, you can use |
96 | the "debug_stoppable" sysctl. If you set "debug_stoppable" to 0 the debug | 96 | the "debug_stoppable" sysctl. If you set "debug_stoppable" to 0 the debug |
97 | feature cannot be stopped. If the debug feature is already stopped, it | 97 | feature cannot be stopped. If the debug feature is already stopped, it |