mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
Several features, fixes and cleanups for kvm/s390:
- sclp event facility: cleanup structure. This allows to use realize/unrealize as well as migration support via vmsd - reboot: Two fixes that make reboot much more reliable - ipl: make elf loading more robust - flic interrupt controller: This allows to migrate floating interrupts, as well as clear them on reset etc. - enable async_pf feature of KVM on s390 - several sclp fixes and cleanups - several sigp fixes and cleanups -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJTDwZVAAoJEBF7vIC1phx8lx4P/Rv+UVD9XDFFF8yHuye1am40 NpRGjdarQ/9QUkS4gqyKwYUvIjAClk5id7U2d5zrfdc8XC49AH0ZhVFMdRupaOon AUqXjOXD5zAh9bfUcewg1EK1P1VuKcp0hyh0jFlIqk9Xmidw8N5guQ6iBoTqGJD5 UYTp0PuSqIjY1RCuF4fCTCurzRd1+J2oKcQBip7BSWlVuWZlg2/hPxoIraLezlz2 huwOU9tkSGXwSRv4C6fCcukEwlqnvkE6W0MCrHrcb2T8xYwAR2Jjs0TsscbKxb+t lIjZRiCxBrFwOLUqGN8DMYtZPffR+cigZ5bYb4o3PPJ0DQL4vLQVd8SPMPrdJhbb M7UOaeTclSTQuzmM/Uuc1pmrFc8PDq0dg50dT3weH2bW8aSgyqutYGpmUcm1Q6kq JLFuyswOBr1vS9o0TlBunP4+TqJJrnGvtIQ4EbRZm7zP78mBaIIrUcAZlbgOI+XI cSjtFXkBOCz0j28J9GSHrsWMC7RQ179TGdcH/FjDpu0dNDOxH7eH5gZPQoQDAqwC SjstqJdIFnd0qxOB1EqcgMUxbSqQYq3hoGvJ644ZrMA3T5trBn0fSw3J9ZU/qAK7 EvOKRacMfcacIj4l0aEQgpwqVmktwIYnkfetX/QAKw/4AImJz/R9GRkmYgjCfOH8 /CUfXM71zWLEdv1o5uJ5 =toIt -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/borntraeger/tags/kvm-s390-20140227' into staging Several features, fixes and cleanups for kvm/s390: - sclp event facility: cleanup structure. This allows to use realize/unrealize as well as migration support via vmsd - reboot: Two fixes that make reboot much more reliable - ipl: make elf loading more robust - flic interrupt controller: This allows to migrate floating interrupts, as well as clear them on reset etc. - enable async_pf feature of KVM on s390 - several sclp fixes and cleanups - several sigp fixes and cleanups * remotes/borntraeger/tags/kvm-s390-20140227: (22 commits) s390x/ipl: Fix crash of ELF images with arbitrary entry points s390x/kvm: Rework priv instruction handlers s390x/kvm: Add missing SIGP CPU RESET order s390x/kvm: Rework SIGP INITIAL CPU RESET handler s390x/cpu: Use ioctl to reset state in the kernel s390-ccw.img: new binary rom to match latest fixes s390-ccw.img: Fix sporadic errors with ccw boot image - initialize css s390-ccw.img: Fix sporadic reboot hangs: Initialize next_idx s390x/event-facility: exploit realize/unrealize s390x/event-facility: add support for live migration s390x/event-facility: code restructure s390x/event-facility: some renaming s390x/sclp: Fixed setting of condition code register s390x/sclp: Add missing checks to SCLP handler s390x/sclp: Fixed the size of sccb and code parameter s390x/eventfacility: mask out commands s390x/virtio-hcall: Specification exception for illegal subcodes s390x/virtio-hcall: Add range check for hypervisor call s390x/kvm: Fixed bad SIGP SET-ARCHITECTURE handler s390x/async_pf: Check for apf extension and enable pfault ... Conflicts: linux-headers/linux/kvm.h Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
c2cb92f9ea
22 changed files with 757 additions and 214 deletions
|
@ -176,4 +176,23 @@ typedef struct SCLPEventClass {
|
|||
bool (*can_handle_event)(uint8_t type);
|
||||
} SCLPEventClass;
|
||||
|
||||
#define TYPE_SCLP_EVENT_FACILITY "s390-sclp-event-facility"
|
||||
#define EVENT_FACILITY(obj) \
|
||||
OBJECT_CHECK(SCLPEventFacility, (obj), TYPE_SCLP_EVENT_FACILITY)
|
||||
#define EVENT_FACILITY_CLASS(klass) \
|
||||
OBJECT_CLASS_CHECK(SCLPEventFacilityClass, (klass), \
|
||||
TYPE_SCLP_EVENT_FACILITY)
|
||||
#define EVENT_FACILITY_GET_CLASS(obj) \
|
||||
OBJECT_GET_CLASS(SCLPEventFacilityClass, (obj), \
|
||||
TYPE_SCLP_EVENT_FACILITY)
|
||||
|
||||
typedef struct SCLPEventFacility SCLPEventFacility;
|
||||
|
||||
typedef struct SCLPEventFacilityClass {
|
||||
DeviceClass parent_class;
|
||||
int (*init)(SCLPEventFacility *ef);
|
||||
void (*command_handler)(SCLPEventFacility *ef, SCCB *sccb, uint64_t code);
|
||||
bool (*event_pending)(SCLPEventFacility *ef);
|
||||
} SCLPEventFacilityClass;
|
||||
|
||||
#endif
|
||||
|
|
33
include/hw/s390x/s390_flic.h
Normal file
33
include/hw/s390x/s390_flic.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* QEMU S390x KVM floating interrupt controller (flic)
|
||||
*
|
||||
* Copyright 2014 IBM Corp.
|
||||
* Author(s): Jens Freimann <jfrei@linux.vnet.ibm.com>
|
||||
*
|
||||
* This work is licensed under the terms of the GNU GPL, version 2 or (at
|
||||
* your option) any later version. See the COPYING file in the top-level
|
||||
* directory.
|
||||
*/
|
||||
|
||||
#ifndef __KVM_S390_FLIC_H
|
||||
#define __KVM_S390_FLIC_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
|
||||
#define TYPE_KVM_S390_FLIC "s390-flic"
|
||||
#define KVM_S390_FLIC(obj) \
|
||||
OBJECT_CHECK(KVMS390FLICState, (obj), TYPE_KVM_S390_FLIC)
|
||||
|
||||
typedef struct KVMS390FLICState {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
uint32_t fd;
|
||||
} KVMS390FLICState;
|
||||
|
||||
#ifdef CONFIG_KVM
|
||||
void s390_flic_init(void);
|
||||
#else
|
||||
static inline void s390_flic_init(void) { }
|
||||
#endif
|
||||
|
||||
#endif /* __KVM_S390_FLIC_H */
|
|
@ -161,30 +161,6 @@ static inline int sccb_data_len(SCCB *sccb)
|
|||
return be16_to_cpu(sccb->h.length) - sizeof(sccb->h);
|
||||
}
|
||||
|
||||
#define TYPE_DEVICE_S390_SCLP "s390-sclp-device"
|
||||
#define SCLP_S390_DEVICE(obj) \
|
||||
OBJECT_CHECK(S390SCLPDevice, (obj), TYPE_DEVICE_S390_SCLP)
|
||||
#define SCLP_S390_DEVICE_CLASS(klass) \
|
||||
OBJECT_CLASS_CHECK(S390SCLPDeviceClass, (klass), \
|
||||
TYPE_DEVICE_S390_SCLP)
|
||||
#define SCLP_S390_DEVICE_GET_CLASS(obj) \
|
||||
OBJECT_GET_CLASS(S390SCLPDeviceClass, (obj), \
|
||||
TYPE_DEVICE_S390_SCLP)
|
||||
|
||||
typedef struct SCLPEventFacility SCLPEventFacility;
|
||||
|
||||
typedef struct S390SCLPDevice {
|
||||
SysBusDevice busdev;
|
||||
SCLPEventFacility *ef;
|
||||
void (*sclp_command_handler)(SCLPEventFacility *ef, SCCB *sccb,
|
||||
uint64_t code);
|
||||
bool (*event_pending)(SCLPEventFacility *ef);
|
||||
} S390SCLPDevice;
|
||||
|
||||
typedef struct S390SCLPDeviceClass {
|
||||
DeviceClass qdev;
|
||||
int (*init)(S390SCLPDevice *sdev);
|
||||
} S390SCLPDeviceClass;
|
||||
|
||||
void s390_sclp_init(void);
|
||||
void sclp_service_interrupt(uint32_t sccb);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue