[S390] Some documentation typos.

Signed-off-by: Nicolas Kaiser <nikai@nikai.net>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Nicolas Kaiser 2006-12-04 15:40:23 +01:00 committed by Martin Schwidefsky
parent 6b4044bdd1
commit 2254f5a777
5 changed files with 34 additions and 34 deletions

View file

@ -74,7 +74,7 @@ Command line parameters
Note: While already known devices can be added to the list of devices to be Note: While already known devices can be added to the list of devices to be
ignored, there will be no effect on then. However, if such a device ignored, there will be no effect on then. However, if such a device
disappears and then reappeares, it will then be ignored. disappears and then reappears, it will then be ignored.
For example, For example,
"echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore" "echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
@ -82,7 +82,7 @@ Command line parameters
devices. devices.
The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward
compatibilty, by the device number in hexadecimal (0xabcd or abcd). compatibility, by the device number in hexadecimal (0xabcd or abcd).
* /proc/s390dbf/cio_*/ (S/390 debug feature) * /proc/s390dbf/cio_*/ (S/390 debug feature)

View file

@ -7,7 +7,7 @@
Overview of Document: Overview of Document:
===================== =====================
This document is intended to give an good overview of how to debug This document is intended to give a good overview of how to debug
Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a Linux for s/390 & z/Architecture. It isn't intended as a complete reference & not a
tutorial on the fundamentals of C & assembly. It doesn't go into tutorial on the fundamentals of C & assembly. It doesn't go into
390 IO in any detail. It is intended to complement the documents in the 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
but only mess with 2 segment indices each time we mess with but only mess with 2 segment indices each time we mess with
a PMD. a PMD.
3) As z/Architecture supports upto a massive 5-level page table lookup we 3) As z/Architecture supports up to a massive 5-level page table lookup we
can only use 3 currently on Linux ( as this is all the generic kernel can only use 3 currently on Linux ( as this is all the generic kernel
currently supports ) however this may change in future currently supports ) however this may change in future
this allows us to access ( according to my sums ) this allows us to access ( according to my sums )
@ -502,7 +502,7 @@ Notes:
------ ------
1) The only requirement is that registers which are used 1) The only requirement is that registers which are used
by the callee are saved, e.g. the compiler is perfectly by the callee are saved, e.g. the compiler is perfectly
capible of using r11 for purposes other than a frame a capable of using r11 for purposes other than a frame a
frame pointer if a frame pointer is not needed. frame pointer if a frame pointer is not needed.
2) In functions with variable arguments e.g. printf the calling procedure 2) In functions with variable arguments e.g. printf the calling procedure
is identical to one without variable arguments & the same number of 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
instead if the code isn't compiled -g, as it is much faster: instead if the code isn't compiled -g, as it is much faster:
objdump --disassemble-all --syms vmlinux > vmlinux.lst objdump --disassemble-all --syms vmlinux > vmlinux.lst
As hard drive space is valuble most of us use the following approach. As hard drive space is valuable most of us use the following approach.
1) Look at the emitted psw on the console to find the crash address in the kernel. 1) Look at the emitted psw on the console to find the crash address in the kernel.
2) Look at the file System.map ( in the linux directory ) produced when building 2) Look at the file System.map ( in the linux directory ) produced when building
the kernel to find the closest address less than the current PSW to find the 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
to a file & on the screen. to a file & on the screen.
Q. What use is it ? Q. What use is it ?
A. You can used it to find out what files a particular program opens. A. You can use it to find out what files a particular program opens.
@ -911,7 +911,7 @@ Example 1
If you wanted to know does ping work but didn't have the source If you wanted to know does ping work but didn't have the source
strace ping -c 1 127.0.0.1 strace ping -c 1 127.0.0.1
& then look at the man pages for each of the syscalls below, & then look at the man pages for each of the syscalls below,
( In fact this is sometimes easier than looking at some spagetti ( In fact this is sometimes easier than looking at some spaghetti
source which conditionally compiles for several architectures ). source which conditionally compiles for several architectures ).
Not everything that it throws out needs to make sense immediately. Not everything that it throws out needs to make sense immediately.
@ -1037,7 +1037,7 @@ e.g. man strace, man alarm, man socket.
Performance Debugging Performance Debugging
===================== =====================
gcc is capible of compiling in profiling code just add the -p option gcc is capable of compiling in profiling code just add the -p option
to the CFLAGS, this obviously affects program size & performance. to the CFLAGS, this obviously affects program size & performance.
This can be used by the gprof gnu profiling tool or the This can be used by the gprof gnu profiling tool or the
gcov the gnu code coverage tool ( code coverage is a means of testing 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
To issue a command to a particular cpu try cpu <cpu number> e.g. To issue a command to a particular cpu try cpu <cpu number> e.g.
CPU 01 TR I R 2000.3000 CPU 01 TR I R 2000.3000
If you are running on a guest with several cpus & you have a IO related problem If you are running on a guest with several cpus & you have a IO related problem
& cannot follow the flow of code but you know it isnt smp related. & cannot follow the flow of code but you know it isn't smp related.
from the bash prompt issue from the bash prompt issue
shutdown -h now or halt. shutdown -h now or halt.
do a Q CPUS to find out how many cpus you have do a Q CPUS to find out how many cpus you have
@ -1602,7 +1602,7 @@ V000FFFD0 00010400 80010802 8001085A 000FFFA0
our 3rd return address is 8001085A our 3rd return address is 8001085A
as the 04B52002 looks suspiciously like rubbish it is fair to assume that the kernel entry routines as the 04B52002 looks suspiciously like rubbish it is fair to assume that the kernel entry routines
for the sake of optimisation dont set up a backchain. for the sake of optimisation don't set up a backchain.
now look at System.map to see if the addresses make any sense. now look at System.map to see if the addresses make any sense.
@ -1638,11 +1638,11 @@ more useful information.
Unlike other bus architectures modern 390 systems do their IO using mostly Unlike other bus architectures modern 390 systems do their IO using mostly
fibre optics & devices such as tapes & disks can be shared between several mainframes, fibre optics & devices such as tapes & disks can be shared between several mainframes,
also S390 can support upto 65536 devices while a high end PC based system might be choking also S390 can support up to 65536 devices while a high end PC based system might be choking
with around 64. Here is some of the common IO terminology with around 64. Here is some of the common IO terminology
Subchannel: Subchannel:
This is the logical number most IO commands use to talk to an IO device there can be upto This is the logical number most IO commands use to talk to an IO device there can be up to
0x10000 (65536) of these in a configuration typically there is a few hundred. Under VM 0x10000 (65536) of these in a configuration typically there is a few hundred. Under VM
for simplicity they are allocated contiguously, however on the native hardware they are not for simplicity they are allocated contiguously, however on the native hardware they are not
they typically stay consistent between boots provided no new hardware is inserted or removed. 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
TEST SUBCHANNEL ) we use this as the ID of the device we wish to talk to, the most TEST SUBCHANNEL ) we use this as the ID of the device we wish to talk to, the most
important of these instructions are START SUBCHANNEL ( to start IO ), TEST SUBCHANNEL ( to check important of these instructions are START SUBCHANNEL ( to start IO ), TEST SUBCHANNEL ( to check
whether the IO completed successfully ), & HALT SUBCHANNEL ( to kill IO ), a subchannel whether the IO completed successfully ), & HALT SUBCHANNEL ( to kill IO ), a subchannel
can have up to 8 channel paths to a device this offers redunancy if one is not available. can have up to 8 channel paths to a device this offers redundancy if one is not available.
Device Number: Device Number:
@ -1659,7 +1659,7 @@ This number remains static & Is closely tied to the hardware, there are 65536 of
also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits ) also they are made up of a CHPID ( Channel Path ID, the most significant 8 bits )
& another lsb 8 bits. These remain static even if more devices are inserted or removed & another lsb 8 bits. These remain static even if more devices are inserted or removed
from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided from the hardware, there is a 1 to 1 mapping between Subchannels & Device Numbers provided
devices arent inserted or removed. devices aren't inserted or removed.
Channel Control Words: Channel Control Words:
CCWS are linked lists of instructions initially pointed to by an operation request block (ORB), 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
from which you receive an Interruption response block (IRB). If you get channel & device end from which you receive an Interruption response block (IRB). If you get channel & device end
status in the IRB without channel checks etc. your IO probably went okay. If you didn't you status in the IRB without channel checks etc. your IO probably went okay. If you didn't you
probably need a doctor to examine the IRB & extended status word etc. probably need a doctor to examine the IRB & extended status word etc.
If an error occurs, more sophistocated control units have a facitity known as If an error occurs, more sophisticated control units have a facility known as
concurrent sense this means that if an error occurs Extended sense information will concurrent sense this means that if an error occurs Extended sense information will
be presented in the Extended status word in the IRB if not you have to issue a be presented in the Extended status word in the IRB if not you have to issue a
subsequent SENSE CCW command after the test subchannel. subsequent SENSE CCW command after the test subchannel.
@ -1749,7 +1749,7 @@ Interface (OEMI).
This byte wide Parallel channel path/bus has parity & data on the "Bus" cable This byte wide Parallel channel path/bus has parity & data on the "Bus" cable
& control lines on the "Tag" cable. These can operate in byte multiplex mode for & control lines on the "Tag" cable. These can operate in byte multiplex mode for
sharing between several slow devices or burst mode & monopolize the channel for the sharing between several slow devices or burst mode & monopolize the channel for the
whole burst. Upto 256 devices can be addressed on one of these cables. These cables are whole burst. Up to 256 devices can be addressed on one of these cables. These cables are
about one inch in diameter. The maximum unextended length supported by these cables is about one inch in diameter. The maximum unextended length supported by these cables is
125 Meters but this can be extended up to 2km with a fibre optic channel extended 125 Meters but this can be extended up to 2km with a fibre optic channel extended
such as a 3044. The maximum burst speed supported is 4.5 megabytes per second however 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.
ESCON if fibre optic it is also called FICON ESCON if fibre optic it is also called FICON
Was introduced by IBM in 1990. Has 2 fibre optic cables & uses either leds or lasers Was introduced by IBM in 1990. Has 2 fibre optic cables & uses either leds or lasers
for communication at a signaling rate of upto 200 megabits/sec. As 10bits are transferred for communication at a signaling rate of up to 200 megabits/sec. As 10bits are transferred
for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once for every 8 bits info this drops to 160 megabits/sec & to 18.6 Megabytes/sec once
control info & CRC are added. ESCON only operates in burst mode. control info & CRC are added. ESCON only operates in burst mode.
@ -1767,7 +1767,7 @@ ESCONs typical max cable length is 3km for the led version & 20km for the laser
known as XDF ( extended distance facility ). This can be further extended by using an known as XDF ( extended distance facility ). This can be further extended by using an
ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is ESCON director which triples the above mentioned ranges. Unlike Bus & Tag as ESCON is
serial it uses a packet switching architecture the standard Bus & Tag control protocol serial it uses a packet switching architecture the standard Bus & Tag control protocol
is however present within the packets. Upto 256 devices can be attached to each control is however present within the packets. Up to 256 devices can be attached to each control
unit that uses one of these interfaces. unit that uses one of these interfaces.
Common 390 Devices include: Common 390 Devices include:
@ -2050,7 +2050,7 @@ list test.c:1,10
directory: directory:
Adds directories to be searched for source if gdb cannot find the source. Adds directories to be searched for source if gdb cannot find the source.
(note it is a bit sensititive about slashes) (note it is a bit sensitive about slashes)
e.g. To add the root of the filesystem to the searchpath do e.g. To add the root of the filesystem to the searchpath do
directory // directory //
@ -2152,7 +2152,7 @@ program as if it just crashed on your system, it is usually called core & create
current working directory. current working directory.
This is very useful in that a customer can mail a core dump to a technical support department This is very useful in that a customer can mail a core dump to a technical support department
& the technical support department can reconstruct what happened. & the technical support department can reconstruct what happened.
Provided the have an identical copy of this program with debugging symbols compiled in & Provided they have an identical copy of this program with debugging symbols compiled in &
the source base of this build is available. the source base of this build is available.
In short it is far more useful than something like a crash log could ever hope to be. In short it is far more useful than something like a crash log could ever hope to be.

View file

@ -98,7 +98,7 @@ The following chapters describe the I/O related interface routines the
Linux/390 common device support (CDS) provides to allow for device specific Linux/390 common device support (CDS) provides to allow for device specific
driver implementations on the IBM ESA/390 hardware platform. Those interfaces driver implementations on the IBM ESA/390 hardware platform. Those interfaces
intend to provide the functionality required by every device driver intend to provide the functionality required by every device driver
implementaion to allow to drive a specific hardware device on the ESA/390 implementation to allow to drive a specific hardware device on the ESA/390
platform. Some of the interface routines are specific to Linux/390 and some platform. Some of the interface routines are specific to Linux/390 and some
of them can be found on other Linux platforms implementations too. of them can be found on other Linux platforms implementations too.
Miscellaneous function prototypes, data declarations, and macro definitions Miscellaneous function prototypes, data declarations, and macro definitions
@ -114,7 +114,7 @@ the ESA/390 architecture has implemented a so called channel subsystem, that
provides a unified view of the devices physically attached to the systems. provides a unified view of the devices physically attached to the systems.
Though the ESA/390 hardware platform knows about a huge variety of different Though the ESA/390 hardware platform knows about a huge variety of different
peripheral attachments like disk devices (aka. DASDs), tapes, communication peripheral attachments like disk devices (aka. DASDs), tapes, communication
controllers, etc. they can all by accessed by a well defined access method and controllers, etc. they can all be accessed by a well defined access method and
they are presenting I/O completion a unified way : I/O interruptions. Every they are presenting I/O completion a unified way : I/O interruptions. Every
single device is uniquely identified to the system by a so called subchannel, single device is uniquely identified to the system by a so called subchannel,
where the ESA/390 architecture allows for 64k devices be attached. where the ESA/390 architecture allows for 64k devices be attached.
@ -338,7 +338,7 @@ DOIO_REPORT_ALL - report all interrupt conditions
The ccw_device_start() function returns : The ccw_device_start() function returns :
0 - successful completion or request successfully initiated 0 - successful completion or request successfully initiated
-EBUSY - The device is currently processing a previous I/O request, or ther is -EBUSY - The device is currently processing a previous I/O request, or there is
a status pending at the device. a status pending at the device.
-ENODEV - cdev is invalid, the device is not operational or the ccw_device is -ENODEV - cdev is invalid, the device is not operational or the ccw_device is
not online. not online.
@ -361,7 +361,7 @@ first:
-EIO: the common I/O layer terminated the request due to an error state -EIO: the common I/O layer terminated the request due to an error state
If the concurrent sense flag in the extended status word in the irb is set, the If the concurrent sense flag in the extended status word in the irb is set, the
field irb->scsw.count describes the numer of device specific sense bytes field irb->scsw.count describes the number of device specific sense bytes
available in the extended control word irb->scsw.ecw[0]. No device sensing by available in the extended control word irb->scsw.ecw[0]. No device sensing by
the device driver itself is required. the device driver itself is required.
@ -410,7 +410,7 @@ ccw_device_start() must be called disabled and with the ccw device lock held.
The device driver is allowed to issue the next ccw_device_start() call from The device driver is allowed to issue the next ccw_device_start() call from
within its interrupt handler already. It is not required to schedule a within its interrupt handler already. It is not required to schedule a
bottom-half, unless an non deterministically long running error recovery procedure bottom-half, unless a non deterministically long running error recovery procedure
or similar needs to be scheduled. During I/O processing the Linux/390 generic or similar needs to be scheduled. During I/O processing the Linux/390 generic
I/O device driver support has already obtained the IRQ lock, i.e. the handler I/O device driver support has already obtained the IRQ lock, i.e. the handler
must not try to obtain it again when calling ccw_device_start() or we end in a must not try to obtain it again when calling ccw_device_start() or we end in a
@ -431,7 +431,7 @@ information prior to device-end the device driver urgently relies on. In this
case all I/O interruptions are presented to the device driver until final case all I/O interruptions are presented to the device driver until final
status is recognized. status is recognized.
If a device is able to recover from asynchronosly presented I/O errors, it can If a device is able to recover from asynchronously presented I/O errors, it can
perform overlapping I/O using the DOIO_EARLY_NOTIFICATION flag. While some perform overlapping I/O using the DOIO_EARLY_NOTIFICATION flag. While some
devices always report channel-end and device-end together, with a single devices always report channel-end and device-end together, with a single
interrupt, others present primary status (channel-end) when the channel is interrupt, others present primary status (channel-end) when the channel is

View file

@ -17,8 +17,8 @@ arch/s390/crypto directory.
2. Probing for availability of MSA 2. Probing for availability of MSA
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It should be possible to use Kernels with the z990 crypto implementations both It should be possible to use Kernels with the z990 crypto implementations both
on machines with MSA available an on those without MSA (pre z990 or z990 on machines with MSA available and on those without MSA (pre z990 or z990
without MSA). Therefore a simple probing mechanisms has been implemented: without MSA). Therefore a simple probing mechanism has been implemented:
In the init function of each crypto module the availability of MSA and of the In the init function of each crypto module the availability of MSA and of the
respective crypto algorithm in particular will be tested. If the algorithm is respective crypto algorithm in particular will be tested. If the algorithm is
available the module will load and register its algorithm with the crypto API. 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.
If the respective crypto algorithm is not available, the init function will If the respective crypto algorithm is not available, the init function will
return -ENOSYS. In that case a fallback to the standard software implementation return -ENOSYS. In that case a fallback to the standard software implementation
of the crypto algorithm must be taken ( -> the standard crypto modules are of the crypto algorithm must be taken ( -> the standard crypto modules are
also build when compiling the kernel). also built when compiling the kernel).
3. Ensuring z990 crypto module preference 3. Ensuring z990 crypto module preference

View file

@ -36,7 +36,7 @@ switches to the next debug area. This is done in order to be sure
that the records which describe the origin of the exception are not that the records which describe the origin of the exception are not
overwritten when a wrap around for the current area occurs. overwritten when a wrap around for the current area occurs.
The debug areas itselve are also ordered in form of a ring buffer. The debug areas themselves are also ordered in form of a ring buffer.
When an exception is thrown in the last debug area, the following debug When an exception is thrown in the last debug area, the following debug
entries are then written again in the very first area. entries are then written again in the very first area.
@ -55,7 +55,7 @@ The debug logs can be inspected in a live system through entries in
the debugfs-filesystem. Under the toplevel directory "s390dbf" there is the debugfs-filesystem. Under the toplevel directory "s390dbf" there is
a directory for each registered component, which is named like the a directory for each registered component, which is named like the
corresponding component. The debugfs normally should be mounted to corresponding component. The debugfs normally should be mounted to
/sys/kernel/debug therefore the debug feature can be accessed unter /sys/kernel/debug therefore the debug feature can be accessed under
/sys/kernel/debug/s390dbf. /sys/kernel/debug/s390dbf.
The content of the directories are files which represent different views 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
globally. The first possibility is to use the "debug_active" sysctl. If globally. The first possibility is to use the "debug_active" sysctl. If
set to 1 the debug feature is running. If "debug_active" is set to 0 the set to 1 the debug feature is running. If "debug_active" is set to 0 the
debug feature is turned off. debug feature is turned off.
The second trigger which stops the debug feature is an kernel oops. The second trigger which stops the debug feature is a kernel oops.
That prevents the debug feature from overwriting debug information that That prevents the debug feature from overwriting debug information that
happened before the oops. After an oops you can reactivate the debug feature happened before the oops. After an oops you can reactivate the debug feature
by piping 1 to /proc/sys/s390dbf/debug_active. Nevertheless, its not by piping 1 to /proc/sys/s390dbf/debug_active. Nevertheless, its not
suggested to use an oopsed kernel in an production environment. suggested to use an oopsed kernel in a production environment.
If you want to disallow the deactivation of the debug feature, you can use If you want to disallow the deactivation of the debug feature, you can use
the "debug_stoppable" sysctl. If you set "debug_stoppable" to 0 the debug the "debug_stoppable" sysctl. If you set "debug_stoppable" to 0 the debug
feature cannot be stopped. If the debug feature is already stopped, it feature cannot be stopped. If the debug feature is already stopped, it