pc-bios/s390-ccw: Get rid of the the __u* types

The types starting with double underscores have likely been
introduced into the s390-ccw bios to be able to re-use structs
from the Linux kernel in the past, but the corresponding structs
in cio.h have been changed there a long time ago already to not
use the variants with the double underscores anymore:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/drivers/s390/cio/cio.h?id=cd6b4f27b9bb2a

So it would be good to replace these in the s390-ccw bios now, too.

Message-Id: <20230627114101.122231-1-thuth@redhat.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2023-06-27 13:41:01 +02:00
parent f7f2f96f33
commit 0c2a6e1242
2 changed files with 116 additions and 120 deletions

View file

@ -17,32 +17,32 @@
* path management control word * path management control word
*/ */
struct pmcw { struct pmcw {
__u32 intparm; /* interruption parameter */ u32 intparm; /* interruption parameter */
__u32 qf:1; /* qdio facility */ u32 qf:1; /* qdio facility */
__u32 w:1; u32 w:1;
__u32 isc:3; /* interruption subclass */ u32 isc:3; /* interruption subclass */
__u32 res5:3; /* reserved zeros */ u32 res5:3; /* reserved zeros */
__u32 ena:1; /* enabled */ u32 ena:1; /* enabled */
__u32 lm:2; /* limit mode */ u32 lm:2; /* limit mode */
__u32 mme:2; /* measurement-mode enable */ u32 mme:2; /* measurement-mode enable */
__u32 mp:1; /* multipath mode */ u32 mp:1; /* multipath mode */
__u32 tf:1; /* timing facility */ u32 tf:1; /* timing facility */
__u32 dnv:1; /* device number valid */ u32 dnv:1; /* device number valid */
__u32 dev:16; /* device number */ u32 dev:16; /* device number */
__u8 lpm; /* logical path mask */ u8 lpm; /* logical path mask */
__u8 pnom; /* path not operational mask */ u8 pnom; /* path not operational mask */
__u8 lpum; /* last path used mask */ u8 lpum; /* last path used mask */
__u8 pim; /* path installed mask */ u8 pim; /* path installed mask */
__u16 mbi; /* measurement-block index */ u16 mbi; /* measurement-block index */
__u8 pom; /* path operational mask */ u8 pom; /* path operational mask */
__u8 pam; /* path available mask */ u8 pam; /* path available mask */
__u8 chpid[8]; /* CHPID 0-7 (if available) */ u8 chpid[8]; /* CHPID 0-7 (if available) */
__u32 unused1:8; /* reserved zeros */ u32 unused1:8; /* reserved zeros */
__u32 st:3; /* subchannel type */ u32 st:3; /* subchannel type */
__u32 unused2:18; /* reserved zeros */ u32 unused2:18; /* reserved zeros */
__u32 mbfc:1; /* measurement block format control */ u32 mbfc:1; /* measurement block format control */
__u32 xmwme:1; /* extended measurement word mode enable */ u32 xmwme:1; /* extended measurement word mode enable */
__u32 csense:1; /* concurrent sense; can be enabled ...*/ u32 csense:1; /* concurrent sense; can be enabled ...*/
/* ... per MSCH, however, if facility */ /* ... per MSCH, however, if facility */
/* ... is not installed, this results */ /* ... is not installed, this results */
/* ... in an operand exception. */ /* ... in an operand exception. */
@ -50,24 +50,24 @@ struct pmcw {
/* Target SCHIB configuration. */ /* Target SCHIB configuration. */
struct schib_config { struct schib_config {
__u64 mba; u64 mba;
__u32 intparm; u32 intparm;
__u16 mbi; u16 mbi;
__u32 isc:3; u32 isc:3;
__u32 ena:1; u32 ena:1;
__u32 mme:2; u32 mme:2;
__u32 mp:1; u32 mp:1;
__u32 csense:1; u32 csense:1;
__u32 mbfc:1; u32 mbfc:1;
} __attribute__ ((packed)); } __attribute__ ((packed));
struct scsw { struct scsw {
__u16 flags; u16 flags;
__u16 ctrl; u16 ctrl;
__u32 cpa; u32 cpa;
__u8 dstat; u8 dstat;
__u8 cstat; u8 cstat;
__u16 count; u16 count;
} __attribute__ ((packed)); } __attribute__ ((packed));
/* Function Control */ /* Function Control */
@ -117,42 +117,42 @@ struct scsw {
typedef struct schib { typedef struct schib {
struct pmcw pmcw; /* path management control word */ struct pmcw pmcw; /* path management control word */
struct scsw scsw; /* subchannel status word */ struct scsw scsw; /* subchannel status word */
__u64 mba; /* measurement block address */ u64 mba; /* measurement block address */
__u8 mda[4]; /* model dependent area */ u8 mda[4]; /* model dependent area */
} __attribute__ ((packed, aligned(4))) Schib; } __attribute__ ((packed, aligned(4))) Schib;
typedef struct subchannel_id { typedef struct subchannel_id {
union { union {
struct { struct {
__u16 cssid:8; u16 cssid:8;
__u16 reserved:4; u16 reserved:4;
__u16 m:1; u16 m:1;
__u16 ssid:2; u16 ssid:2;
__u16 one:1; u16 one:1;
}; };
__u16 sch_id; u16 sch_id;
}; };
__u16 sch_no; u16 sch_no;
} __attribute__ ((packed, aligned(4))) SubChannelId; } __attribute__ ((packed, aligned(4))) SubChannelId;
struct chsc_header { struct chsc_header {
__u16 length; u16 length;
__u16 code; u16 code;
} __attribute__((packed)); } __attribute__((packed));
typedef struct chsc_area_sda { typedef struct chsc_area_sda {
struct chsc_header request; struct chsc_header request;
__u8 reserved1:4; u8 reserved1:4;
__u8 format:4; u8 format:4;
__u8 reserved2; u8 reserved2;
__u16 operation_code; u16 operation_code;
__u32 reserved3; u32 reserved3;
__u32 reserved4; u32 reserved4;
__u32 operation_data_area[252]; u32 operation_data_area[252];
struct chsc_header response; struct chsc_header response;
__u32 reserved5:4; u32 reserved5:4;
__u32 format2:4; u32 format2:4;
__u32 reserved6:24; u32 reserved6:24;
} __attribute__((packed)) ChscAreaSda; } __attribute__((packed)) ChscAreaSda;
/* /*
@ -160,37 +160,37 @@ typedef struct chsc_area_sda {
*/ */
struct tpi_info { struct tpi_info {
struct subchannel_id schid; struct subchannel_id schid;
__u32 intparm; /* interruption parameter */ u32 intparm; /* interruption parameter */
__u32 adapter_IO:1; u32 adapter_IO:1;
__u32 reserved2:1; u32 reserved2:1;
__u32 isc:3; u32 isc:3;
__u32 reserved3:12; u32 reserved3:12;
__u32 int_type:3; u32 int_type:3;
__u32 reserved4:12; u32 reserved4:12;
} __attribute__ ((packed, aligned(4))); } __attribute__ ((packed, aligned(4)));
/* channel command word (format 0) */ /* channel command word (format 0) */
typedef struct ccw0 { typedef struct ccw0 {
__u8 cmd_code; u8 cmd_code;
__u32 cda:24; u32 cda:24;
__u32 chainData:1; u32 chainData:1;
__u32 chain:1; u32 chain:1;
__u32 sli:1; u32 sli:1;
__u32 skip:1; u32 skip:1;
__u32 pci:1; u32 pci:1;
__u32 ida:1; u32 ida:1;
__u32 suspend:1; u32 suspend:1;
__u32 mida:1; u32 mida:1;
__u8 reserved; u8 reserved;
__u16 count; u16 count;
} __attribute__ ((packed, aligned(8))) Ccw0; } __attribute__ ((packed, aligned(8))) Ccw0;
/* channel command word (format 1) */ /* channel command word (format 1) */
typedef struct ccw1 { typedef struct ccw1 {
__u8 cmd_code; u8 cmd_code;
__u8 flags; u8 flags;
__u16 count; u16 count;
__u32 cda; u32 cda;
} __attribute__ ((packed, aligned(8))) Ccw1; } __attribute__ ((packed, aligned(8))) Ccw1;
/* do_cio() CCW formats */ /* do_cio() CCW formats */
@ -234,31 +234,31 @@ typedef struct ccw1 {
* Command-mode operation request block * Command-mode operation request block
*/ */
typedef struct cmd_orb { typedef struct cmd_orb {
__u32 intparm; /* interruption parameter */ u32 intparm; /* interruption parameter */
__u32 key:4; /* flags, like key, suspend control, etc. */ u32 key:4; /* flags, like key, suspend control, etc. */
__u32 spnd:1; /* suspend control */ u32 spnd:1; /* suspend control */
__u32 res1:1; /* reserved */ u32 res1:1; /* reserved */
__u32 mod:1; /* modification control */ u32 mod:1; /* modification control */
__u32 sync:1; /* synchronize control */ u32 sync:1; /* synchronize control */
__u32 fmt:1; /* format control */ u32 fmt:1; /* format control */
__u32 pfch:1; /* prefetch control */ u32 pfch:1; /* prefetch control */
__u32 isic:1; /* initial-status-interruption control */ u32 isic:1; /* initial-status-interruption control */
__u32 alcc:1; /* address-limit-checking control */ u32 alcc:1; /* address-limit-checking control */
__u32 ssic:1; /* suppress-suspended-interr. control */ u32 ssic:1; /* suppress-suspended-interr. control */
__u32 res2:1; /* reserved */ u32 res2:1; /* reserved */
__u32 c64:1; /* IDAW/QDIO 64 bit control */ u32 c64:1; /* IDAW/QDIO 64 bit control */
__u32 i2k:1; /* IDAW 2/4kB block size control */ u32 i2k:1; /* IDAW 2/4kB block size control */
__u32 lpm:8; /* logical path mask */ u32 lpm:8; /* logical path mask */
__u32 ils:1; /* incorrect length */ u32 ils:1; /* incorrect length */
__u32 zero:6; /* reserved zeros */ u32 zero:6; /* reserved zeros */
__u32 orbx:1; /* ORB extension control */ u32 orbx:1; /* ORB extension control */
__u32 cpa; /* channel program address */ u32 cpa; /* channel program address */
} __attribute__ ((packed, aligned(4))) CmdOrb; } __attribute__ ((packed, aligned(4))) CmdOrb;
struct ciw { struct ciw {
__u8 type; u8 type;
__u8 command; u8 command;
__u16 count; u16 count;
}; };
#define CU_TYPE_UNKNOWN 0x0000 #define CU_TYPE_UNKNOWN 0x0000
@ -271,12 +271,12 @@ struct ciw {
*/ */
typedef struct senseid { typedef struct senseid {
/* common part */ /* common part */
__u8 reserved; /* always 0x'FF' */ u8 reserved; /* always 0x'FF' */
__u16 cu_type; /* control unit type */ u16 cu_type; /* control unit type */
__u8 cu_model; /* control unit model */ u8 cu_model; /* control unit model */
__u16 dev_type; /* device type */ u16 dev_type; /* device type */
__u8 dev_model; /* device model */ u8 dev_model; /* device model */
__u8 unused; /* padding byte */ u8 unused; /* padding byte */
/* extended part */ /* extended part */
struct ciw ciw[62]; struct ciw ciw[62];
} __attribute__ ((packed, aligned(4))) SenseId; } __attribute__ ((packed, aligned(4))) SenseId;
@ -342,9 +342,9 @@ typedef struct SenseDataEckdDasd {
/* interruption response block */ /* interruption response block */
typedef struct irb { typedef struct irb {
struct scsw scsw; struct scsw scsw;
__u32 esw[5]; u32 esw[5];
__u32 ecw[8]; u32 ecw[8];
__u32 emw[8]; u32 emw[8];
} __attribute__ ((packed, aligned(4))) Irb; } __attribute__ ((packed, aligned(4))) Irb;
/* Used for SEEK ccw commands */ /* Used for SEEK ccw commands */

View file

@ -17,10 +17,6 @@ typedef unsigned char u8;
typedef unsigned short u16; typedef unsigned short u16;
typedef unsigned int u32; typedef unsigned int u32;
typedef unsigned long long u64; typedef unsigned long long u64;
typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned int __u32;
typedef unsigned long long __u64;
#define true 1 #define true 1
#define false 0 #define false 0