diff options
| author | Anthony Liguori <anthony@codemonkey.ws> | 2013-09-30 17:13:18 -0500 |
|---|---|---|
| committer | Anthony Liguori <anthony@codemonkey.ws> | 2013-09-30 17:13:18 -0500 |
| commit | 1b365b2eb629d033b3650acc9f46fc132ef0981c (patch) | |
| tree | 2887f2f9c2eb51cbbfa597c6eaa2e79c8dfab941 /hw/s390x/event-facility.c | |
| parent | 53d09b761f032f50c4424e8649396a9041070bae (diff) | |
| parent | 6a444f8507514b3707c8807ed11c176d3fbc5860 (diff) | |
| download | focaccia-qemu-1b365b2eb629d033b3650acc9f46fc132ef0981c.tar.gz focaccia-qemu-1b365b2eb629d033b3650acc9f46fc132ef0981c.zip | |
Merge remote-tracking branch 'borntraeger/tags/s390-next-20130924' into staging
This is a bunch of fixes/changes for the s390 architecture. It also contains the fixes from the previous pull request, which did not make it yet. Overall it contains - a fix for kexec without kdump (which uses diag308 subcode 0 instead of 1) - several sclp related fixes - some initial sclp migration code - the sclp line mode console - A fix for a boot problem with the virtio ccw ipl bios - zeroed out padding bytes for the notes section of dump-guest-memory - some cleanups # gpg: Signature made Tue 24 Sep 2013 02:18:44 AM CDT using RSA key ID B5A61C7C # gpg: Can't check signature: public key not found # By Christian Borntraeger (6) and others # Via Christian Borntraeger * borntraeger/tags/s390-next-20130924: s390/sclplmconsole: Add support for SCLP line-mode console s390/ebcdic: Move conversion tables to header file s390/eventfacility: allow childs to handle more than 1 event type s390/eventfacility: remove unused event_type variable s390/eventfacility: Fix receive/send masks s390/eventfacility: fix multiple Read Event Data sources s390/sclp: add reset() functions s390/sclpquiesce: Add code to support live migration s390/sclpconsole: Add code to support live migration for sclpconsole s390/sclpconsole: modify definition of input buffer s390/kexec: Implement diag308 subcode 0 s390/ioinst: Moved the CC setting to the IO instruction handlers s390/cpu: Make setcc() function available to other files s390/ipl: Update the s390-ccw.img rom s390/ipl: Fix waiting for virtio processing s390/dump: zero out padding bytes in notes sections s390/kvm: Add check for priviledged SCLP handler Message-id: 1380007671-18976-1-git-send-email-borntraeger@de.ibm.com
Diffstat (limited to 'hw/s390x/event-facility.c')
| -rw-r--r-- | hw/s390x/event-facility.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c index a3aceef8f5..25951a020a 100644 --- a/hw/s390x/event-facility.c +++ b/hw/s390x/event-facility.c @@ -120,7 +120,7 @@ static uint16_t handle_write_event_buf(SCLPEventFacility *ef, ec = SCLP_EVENT_GET_CLASS(event); if (ec->write_event_data && - ec->event_type() == event_buf->type) { + ec->can_handle_event(event_buf->type)) { rc = ec->write_event_data(event, event_buf); break; } @@ -183,7 +183,7 @@ static uint16_t handle_sccb_read_events(SCLPEventFacility *ef, SCCB *sccb, { uint16_t rc; int slen; - unsigned elen = 0; + unsigned elen; BusChild *kid; SCLPEvent *event; SCLPEventClass *ec; @@ -203,11 +203,11 @@ static uint16_t handle_sccb_read_events(SCLPEventFacility *ef, SCCB *sccb, if (mask & ec->get_send_mask()) { if (ec->read_event_data(event, event_buf, &slen)) { + elen = be16_to_cpu(event_buf->length); + event_buf = (EventBufferHeader *) ((char *)event_buf + elen); rc = SCLP_RC_NORMAL_COMPLETION; } } - elen = be16_to_cpu(event_buf->length); - event_buf = (void *) event_buf + elen; } if (sccb->h.control_mask[2] & SCLP_VARIABLE_LENGTH_RESPONSE) { @@ -338,10 +338,19 @@ static int init_event_facility(S390SCLPDevice *sdev) return 0; } +static void reset_event_facility(DeviceState *dev) +{ + S390SCLPDevice *sdev = SCLP_S390_DEVICE(dev); + + sdev->ef->receive_mask = 0; +} + static void init_event_facility_class(ObjectClass *klass, void *data) { + DeviceClass *dc = DEVICE_CLASS(klass); S390SCLPDeviceClass *k = SCLP_S390_DEVICE_CLASS(klass); + dc->reset = reset_event_facility; k->init = init_event_facility; } |