diff options
Diffstat (limited to 'Documentation/s390/Debugging390.txt')
-rw-r--r-- | Documentation/s390/Debugging390.txt | 38 |
1 files changed, 19 insertions, 19 deletions
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 | ||