On 16/12/13 21:51, Matthew Rosato wrote: > Define new SCLP codes and structures that will be needed for s390 memory > hotplug. > > Signed-off-by: Matthew Rosato <mjros...@linux.vnet.ibm.com> > --- > hw/s390x/sclp.c | 2 +- > include/hw/s390x/sclp.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 47 insertions(+), 1 deletion(-) > > diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c > index 86d6ae0..cb53d7e 100644 > --- a/hw/s390x/sclp.c > +++ b/hw/s390x/sclp.c > @@ -45,7 +45,7 @@ static void sclp_execute(SCCB *sccb, uint64_t code) > { > S390SCLPDevice *sdev = get_event_facility(); > > - switch (code) { > + switch (code & SCLP_NO_CMD_PARM) {
This is already done in latest upstream, so please provide a newer version of these patches against s390-next. Will apply then. Christian > case SCLP_CMDW_READ_SCP_INFO: > case SCLP_CMDW_READ_SCP_INFO_FORCED: > read_SCP_info(sccb); > diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h > index 231a38a..e80cb23 100644 > --- a/include/hw/s390x/sclp.h > +++ b/include/hw/s390x/sclp.h > @@ -20,18 +20,31 @@ > /* SCLP command codes */ > #define SCLP_CMDW_READ_SCP_INFO 0x00020001 > #define SCLP_CMDW_READ_SCP_INFO_FORCED 0x00120001 > +#define SCLP_READ_STORAGE_ELEMENT_INFO 0x00040001 > +#define SCLP_ATTACH_STORAGE_ELEMENT 0x00080001 > +#define SCLP_ASSIGN_STORAGE 0x000D0001 > +#define SCLP_UNASSIGN_STORAGE 0x000C0001 > #define SCLP_CMD_READ_EVENT_DATA 0x00770005 > #define SCLP_CMD_WRITE_EVENT_DATA 0x00760005 > #define SCLP_CMD_READ_EVENT_DATA 0x00770005 > #define SCLP_CMD_WRITE_EVENT_DATA 0x00760005 > #define SCLP_CMD_WRITE_EVENT_MASK 0x00780005 > > +/* SCLP Memory hotplug codes */ > +#define SCLP_NO_CMD_PARM 0xffff00ff This can then go as well. > +#define SCLP_FC_ASSIGN_ATTACH_READ_STOR 0xE00000000000ULL > +#define SCLP_STARTING_SUBINCREMENT_ID 0x10001 > +#define SCLP_INCREMENT_UNIT 0x10000 > +#define MAX_AVAIL_SLOTS 32 > + > /* SCLP response codes */ > #define SCLP_RC_NORMAL_READ_COMPLETION 0x0010 > #define SCLP_RC_NORMAL_COMPLETION 0x0020 > +#define SCLP_RC_SCCB_BOUNDARY_VIOLATION 0x0100 > #define SCLP_RC_INVALID_SCLP_COMMAND 0x01f0 > #define SCLP_RC_CONTAINED_EQUIPMENT_CHECK 0x0340 > #define SCLP_RC_INSUFFICIENT_SCCB_LENGTH 0x0300 > +#define SCLP_RC_STANDBY_READ_COMPLETION 0x0410 > #define SCLP_RC_INVALID_FUNCTION 0x40f0 > #define SCLP_RC_NO_EVENT_BUFFERS_STORED 0x60f0 > #define SCLP_RC_INVALID_SELECTION_MASK 0x70f0 > @@ -75,8 +88,41 @@ typedef struct ReadInfo { > SCCBHeader h; > uint16_t rnmax; > uint8_t rnsize; > + uint8_t _reserved1[16 - 11]; /* 11-15 */ > + uint16_t entries_cpu; /* 16-17 */ > + uint16_t offset_cpu; /* 18-19 */ > + uint8_t _reserved2[24 - 20]; /* 20-23 */ > + uint8_t loadparm[8]; /* 24-31 */ > + uint8_t _reserved3[48 - 32]; /* 32-47 */ > + uint64_t facilities; /* 48-55 */ > + uint8_t _reserved0[100 - 56]; > + uint32_t rnsize2; > + uint64_t rnmax2; > } QEMU_PACKED ReadInfo; > > +typedef struct ReadStorageElementInfo { > + SCCBHeader h; > + uint16_t max_id; > + uint16_t assigned; > + uint16_t standby; > + uint8_t _reserved0[16 - 14]; /* 14-15 */ > + uint32_t entries[0]; > +} QEMU_PACKED ReadStorageElementInfo; > + > +typedef struct AttachStorageElement { > + SCCBHeader h; > + uint8_t _reserved0[10 - 8]; /* 8-9 */ > + uint16_t assigned; > + uint8_t _reserved1[16 - 12]; /* 12-15 */ > + uint32_t entries[0]; > +} QEMU_PACKED AttachStorageElement; > + > +typedef struct AssignStorage { > + SCCBHeader h; > + uint16_t rn; > +} QEMU_PACKED AssignStorage; > + > + Only one space, I guess. > typedef struct SCCB { > SCCBHeader h; > char data[SCCB_DATA_LEN]; > Otherwise: Acked-by: Christian Borntraeger <borntrae...@de.ibm.com>