[S390] cio: update documentation.



From: Cornelia Huck <cornelia.huck@xxxxxxxxxx>

[S390] cio: update documentation.

Signed-off-by: Cornelia Huck <cornelia.huck@xxxxxxxxxx>
Signed-off-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx>
---

Documentation/s390/CommonIO | 2 -
Documentation/s390/cds.txt | 52 ++++++++++++++++--------------------
Documentation/s390/driver-model.txt | 3 ++
3 files changed, 28 insertions(+), 29 deletions(-)

diff -urpN linux-2.6/Documentation/s390/cds.txt linux-2.6-patched/Documentation/s390/cds.txt
--- linux-2.6/Documentation/s390/cds.txt 2006-10-18 17:12:31.000000000 +0200
+++ linux-2.6-patched/Documentation/s390/cds.txt 2006-10-18 17:12:58.000000000 +0200
@@ -174,14 +174,10 @@ read_dev_chars() - Read Device Character

This routine returns the characteristics for the device specified.

-The function is meant to be called with an irq handler in place; that is,
+The function is meant to be called with the device already enabled; that is,
at earliest during set_online() processing.

-While the request is processed synchronously, the device interrupt
-handler is called for final ending status. In case of error situations the
-interrupt handler may recover appropriately. The device irq handler can
-recognize the corresponding interrupts by the interruption parameter be
-0x00524443. The ccw_device must not be locked prior to calling read_dev_chars().
+The ccw_device must not be locked prior to calling read_dev_chars().

The function may be called enabled or disabled.

@@ -410,26 +406,7 @@ individual flag meanings.

Usage Notes :

-Prior to call ccw_device_start() the device driver must assure disabled state,
-i.e. the I/O mask value in the PSW must be disabled. This can be accomplished
-by calling local_save_flags( flags). The current PSW flags are preserved and
-can be restored by local_irq_restore( flags) at a later time.
-
-If the device driver violates this rule while running in a uni-processor
-environment an interrupt might be presented prior to the ccw_device_start()
-routine returning to the device driver main path. In this case we will end in a
-deadlock situation as the interrupt handler will try to obtain the irq
-lock the device driver still owns (see below) !
-
-The driver must assure to hold the device specific lock. This can be
-accomplished by
-
-(i) spin_lock(get_ccwdev_lock(cdev)), or
-(ii) spin_lock_irqsave(get_ccwdev_lock(cdev), flags)
-
-Option (i) should be used if the calling routine is running disabled for
-I/O interrupts (see above) already. Option (ii) obtains the device gate und
-puts the CPU into I/O disabled state by preserving the current PSW flags.
+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
within its interrupt handler already. It is not required to schedule a
@@ -488,7 +465,7 @@ int ccw_device_resume(struct ccw_device

cdev - ccw_device the resume operation is requested for

-The resume_IO() function returns:
+The ccw_device_resume() function returns:

0 - suspended channel program is resumed
-EBUSY - status pending
@@ -507,6 +484,8 @@ a long-running channel program or the de
a halt subchannel (HSCH) I/O command. For those purposes the ccw_device_halt()
command is provided.

+ccw_device_halt() must be called disabled and with the ccw device lock held.
+
int ccw_device_halt(struct ccw_device *cdev,
unsigned long intparm);

@@ -517,7 +496,7 @@ intparm : interruption parameter; value

The ccw_device_halt() function returns :

- 0 - successful completion or request successfully initiated
+ 0 - request successfully initiated
-EBUSY - the device is currently busy, or status pending.
-ENODEV - cdev invalid.
-EINVAL - The device is not operational or the ccw device is not online.
@@ -533,6 +512,23 @@ can then perform an appropriate action.
read to a network device (with or without PCI flag) a ccw_device_halt()
is required to end the pending operation.

+ccw_device_clear() - Terminage I/O Request Processing
+
+In order to terminate all I/O processing at the subchannel, the clear subchannel
+(CSCH) command is used. It can be issued via ccw_device_clear().
+
+ccw_device_clear() must be called disabled and with the ccw device lock held.
+
+int ccw_device_clear(struct ccw_device *cdev, unsigned long intparm);
+
+cdev: ccw_device the clear operation is requested for
+intparm: interruption parameter (see ccw_device_halt())
+
+The ccw_device_clear() function returns:
+
+ 0 - request successfully initiated
+-ENODEV - cdev invalid
+-EINVAL - The device is not operational or the ccw device is not online.

Miscellaneous Support Routines

diff -urpN linux-2.6/Documentation/s390/CommonIO linux-2.6-patched/Documentation/s390/CommonIO
--- linux-2.6/Documentation/s390/CommonIO 2006-09-20 05:42:06.000000000 +0200
+++ linux-2.6-patched/Documentation/s390/CommonIO 2006-10-18 17:12:58.000000000 +0200
@@ -66,7 +66,7 @@ Command line parameters

When a device is un-ignored, device recognition and sensing is performed and
the device driver will be notified if possible, so the device will become
- available to the system.
+ available to the system. Note that un-ignoring is performed asynchronously.

You can also add ranges of devices to be ignored by piping to
/proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
diff -urpN linux-2.6/Documentation/s390/driver-model.txt linux-2.6-patched/Documentation/s390/driver-model.txt
--- linux-2.6/Documentation/s390/driver-model.txt 2006-10-18 17:12:31.000000000 +0200
+++ linux-2.6-patched/Documentation/s390/driver-model.txt 2006-10-18 17:12:58.000000000 +0200
@@ -239,6 +239,9 @@ status - Can be 'online' or 'offline'.

type - The physical type of the channel path.

+shared - Whether the channel path is shared.
+
+cmg - The channel measurement group.

3. System devices
-----------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Please pull git390 for-linus branch
    ... Fix pte type checking. ... -Prior to call ccw_device_startthe device driver must assure disabled state, ... -environment an interrupt might be presented prior to the ccw_device_start ... -ENODEV - cdev invalid. ...
    (Linux-Kernel)
  • [PATCH 11/17] Fix IRQ flag handling naming
    ... +static inline bool arch_irqs_disabled ... Save the current interrupt enable state & disable IRQs ... This will restore ALL status register flags, ...
    (Linux-Kernel)
  • Re: Alternative to a thread THread in MFC??
    ... To do DMA, you need to lock all the ... This can only be done in a device driver, ... interface this bad could possibly have done them. ... >Waiting for an interrupt is done in a device driver. ...
    (microsoft.public.vc.mfc)
  • Broadcom BCM5780 Link-UP before auto-negotiation completes
    ... I've got three different workstations each with a Broadcom Gigabit Ethernet card ... device driver) on ... interrupt handler could be run before setting IFF_DRV_RUNNING flag. ... This can lose initial link state change interrupt which in turn ...
    (freebsd-questions)
  • Re: Alternative to a thread THread in MFC??
    ... you have a completely unsalvageable mess and both the device driver and the ... You still talk about "interrupt received", although there is no mechanism in Windows ... interface is nearly impossible, but I'm guessing what the interface is likely to be doing. ... Waiting for an interrupt is done in a device driver. ...
    (microsoft.public.vc.mfc)