drivers/s390/cio/cio.h
Source file repositories/reference/linux-study-clean/drivers/s390/cio/cio.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/s390/cio/cio.h- Extension
.h- Size
- 4316 bytes
- Lines
- 142
- Domain
- Driver Families
- Bucket
- drivers/s390
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/mutex.hlinux/device.hlinux/mod_devicetable.hasm/chpid.hasm/cio.hasm/fcx.hasm/schid.hasm/tpi.hchsc.h
Detected Declarations
struct pmcwstruct schib_configstruct schibstruct subchannelenum sch_todofunction cio_register_early_subchannels
Annotated Snippet
struct pmcw {
u32 intparm; /* interruption parameter */
u32 qf : 1; /* qdio facility */
u32 w : 1;
u32 isc : 3; /* interruption subclass */
u32 res5 : 3; /* reserved zeros */
u32 ena : 1; /* enabled */
u32 lm : 2; /* limit mode */
u32 mme : 2; /* measurement-mode enable */
u32 mp : 1; /* multipath mode */
u32 tf : 1; /* timing facility */
u32 dnv : 1; /* device number valid */
u32 dev : 16; /* device number */
u8 lpm; /* logical path mask */
u8 pnom; /* path not operational mask */
u8 lpum; /* last path used mask */
u8 pim; /* path installed mask */
u16 mbi; /* measurement-block index */
u8 pom; /* path operational mask */
u8 pam; /* path available mask */
u8 chpid[8]; /* CHPID 0-7 (if available) */
u32 unused1 : 8; /* reserved zeros */
u32 st : 3; /* subchannel type */
u32 unused2 : 18; /* reserved zeros */
u32 mbfc : 1; /* measurement block format control */
u32 xmwme : 1; /* extended measurement word mode enable */
u32 csense : 1; /* concurrent sense; can be enabled ...*/
/* ... per MSCH, however, if facility */
/* ... is not installed, this results */
/* ... in an operand exception. */
} __attribute__ ((packed));
/* Target SCHIB configuration. */
struct schib_config {
u64 mba;
u32 intparm;
u16 mbi;
u32 isc:3;
u32 ena:1;
u32 mme:2;
u32 mp:1;
u32 csense:1;
u32 mbfc:1;
} __attribute__ ((packed));
/*
* subchannel information block
*/
struct schib {
struct pmcw pmcw; /* path management control word */
union scsw scsw; /* subchannel status word */
__u64 mba; /* measurement block address */
__u8 mda[4]; /* model dependent area */
} __attribute__ ((packed,aligned(4)));
/*
* When rescheduled, todo's with higher values will overwrite those
* with lower values.
*/
enum sch_todo {
SCH_TODO_NOTHING,
SCH_TODO_EVAL,
SCH_TODO_UNREG,
};
/* subchannel data structure used by I/O subroutines */
struct subchannel {
struct subchannel_id schid;
spinlock_t lock; /* subchannel lock */
struct mutex reg_mutex;
enum {
SUBCHANNEL_TYPE_IO = 0,
SUBCHANNEL_TYPE_CHSC = 1,
SUBCHANNEL_TYPE_MSG = 2,
SUBCHANNEL_TYPE_ADM = 3,
} st; /* subchannel type */
__u8 vpm; /* verified path mask */
__u8 lpm; /* logical path mask */
__u8 opm; /* operational path mask */
struct schib schib; /* subchannel information block */
int isc; /* desired interruption subclass */
struct chsc_ssd_info ssd_info; /* subchannel description */
struct device dev; /* entry in device tree */
struct css_driver *driver;
enum sch_todo todo;
struct work_struct todo_work;
struct schib_config config;
u64 dma_mask;
} __attribute__ ((aligned(8)));
Annotation
- Immediate include surface: `linux/mutex.h`, `linux/device.h`, `linux/mod_devicetable.h`, `asm/chpid.h`, `asm/cio.h`, `asm/fcx.h`, `asm/schid.h`, `asm/tpi.h`.
- Detected declarations: `struct pmcw`, `struct schib_config`, `struct schib`, `struct subchannel`, `enum sch_todo`, `function cio_register_early_subchannels`.
- Atlas domain: Driver Families / drivers/s390.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.