On 03/20/2014 05:56 AM, Christian Borntraeger wrote: > 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
Hi Christian -- You already accepted this patch into s390-next with these changes as 234eef51a12e2f0f8dfd71cb49d2469d462b1855. Or am I missing something else you wanted changed? This is part of v1 -- v2 of the whole patch set excluded this patch as a result (among other changes). I noticed that v2 doesn't fit anymore. I'll submit a trimmed-down and re-fit v3 of the patch set once Igor's 'convert -m to QemuOpts' set goes in (it just got applied to trivial). > >> 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> > > > > >