Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 39870
b: refs/heads/master
c: acbd39f
h: refs/heads/master
v: v3
  • Loading branch information
Dominik Brodowski authored and Greg Kroah-Hartman committed Oct 18, 2006
1 parent f5ca32c commit b65a83f
Show file tree
Hide file tree
Showing 23 changed files with 164 additions and 328 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6a13a857becef065cd138b67c162dc5c5dd88655
refs/heads/master: acbd39fbc5d8757aa920c6045399374df7a6dd68
2 changes: 1 addition & 1 deletion trunk/Documentation/feature-removal-schedule.txt
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ Who: Stephen Hemminger <shemminger@osdl.org>


What: PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
When: Oktober 2008
When: October 2008
Why: The stacking of class devices makes these values misleading and
inconsistent.
Class devices should not carry any of these properties, and bus
Expand Down
2 changes: 1 addition & 1 deletion trunk/Documentation/s390/CommonIO
Original file line number Diff line number Diff line change
Expand Up @@ -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. Note that un-ignoring is performed asynchronously.
available to the system.

You can also add ranges of devices to be ignored by piping to
/proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
Expand Down
52 changes: 28 additions & 24 deletions trunk/Documentation/s390/cds.txt
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,14 @@ read_dev_chars() - Read Device Characteristics

This routine returns the characteristics for the device specified.

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

The ccw_device must not be locked prior to calling read_dev_chars().
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 function may be called enabled or disabled.

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

Usage Notes :

ccw_device_start() must be called disabled and with the ccw device lock held.
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.

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
Expand Down Expand Up @@ -465,7 +488,7 @@ int ccw_device_resume(struct ccw_device *cdev);

cdev - ccw_device the resume operation is requested for

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

0 - suspended channel program is resumed
-EBUSY - status pending
Expand All @@ -484,8 +507,6 @@ a long-running channel program or the device might require to initially issue
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);

Expand All @@ -496,7 +517,7 @@ intparm : interruption parameter; value is only used if no I/O

The ccw_device_halt() function returns :

0 - request successfully initiated
0 - successful completion or 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.
Expand All @@ -512,23 +533,6 @@ can then perform an appropriate action. Prior to interrupt of an outstanding
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

Expand Down
3 changes: 0 additions & 3 deletions trunk/Documentation/s390/driver-model.txt
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,6 @@ 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
-----------------
Expand Down
Loading

0 comments on commit b65a83f

Please sign in to comment.