Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:Update
xen.16555
ioemu-hvm-pv-support.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ioemu-hvm-pv-support.patch of Package xen.16555
--- tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c | 46 ++++++++++++++++ 1 file changed, 46 insertions(+) Index: xen-4.9.0-testing/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak =================================================================== --- xen-4.9.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak +++ xen-4.9.0-testing/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak @@ -3,6 +3,9 @@ CPPFLAGS+= -I$(XEN_ROOT)/tools/libs/evtc CPPFLAGS+= -I$(XEN_ROOT)/tools/libs/gnttab/include CPPFLAGS+= -DXC_WANT_COMPAT_MAP_FOREIGN_API CPPFLAGS+= -DXC_WANT_COMPAT_DEVICEMODEL_API +CPPFLAGS+= -I$(XEN_ROOT)/tools/libxc +CPPFLAGS+= -I$(XEN_ROOT)/tools/libs/call/include +CPPFLAGS+= -I$(XEN_ROOT)/tools/libs/foreignmemory/include CPPFLAGS+= -I$(XEN_ROOT)/tools/libxc/include CPPFLAGS+= -I$(XEN_ROOT)/tools/xenstore/include CPPFLAGS+= -I$(XEN_ROOT)/tools/include Index: xen-4.9.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c =================================================================== --- xen-4.9.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c +++ xen-4.9.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c @@ -30,6 +30,8 @@ #include "qemu-xen.h" #include "net.h" #include "xen_platform.h" +#include "sysemu.h" +#include <xc_private.h> #include <assert.h> #include <xenguest.h> @@ -335,8 +337,52 @@ static void xen_platform_ioport_writeb(v } } +static uint32_t ioport_base; + +static void suse_platform_ioport_write(void *opaque, uint32_t addr, uint32_t val) +{ + DECLARE_DOMCTL; + int rc; + + if (val == 0) + qemu_invalidate_map_cache(); + + switch (addr - ioport_base) { + case 0: + /* FIXME Unknown who makes use of this code! */ + fprintf(logfile, "Init hypercall page %x, addr %x.\n", val, addr); + domctl.domain = (domid_t)domid; + domctl.u.hypercall_init.gmfn = val; + domctl.cmd = XEN_DOMCTL_hypercall_init; + rc = xc_domctl(xc_handle, &domctl); + fprintf(logfile, "result -> %d.\n", rc); + break; + case 4: + /* xen-kmp used this since xen-3.0.4, instead the official protocol from xen-3.3+ + * pre vmdp 1.7 made use of 4 and 8 depending on how vmdp was configured. + * If vmdp was to control both disk and LAN it would use 4. + * If it controlled just disk or just LAN, it would use 8 below. */ + fprintf(logfile, "Disconnect IDE hard disk...\n"); + ide_unplug_harddisks(); + fprintf(logfile, "Disconnect netifs...\n"); + pci_unplug_netifs(); + fprintf(logfile, "Shutdown taps...\n"); + net_tap_shutdown_all(); + fprintf(logfile, "Done.\n"); + break; + default: + fprintf(logfile, "Write %x to bad port %x (base %x) on evtchn device.\n", + val, addr, ioport_base); + break; + } +} + static void platform_ioport_map(PCIDevice *pci_dev, int region_num, uint32_t addr, uint32_t size, int type) { + ioport_base = addr; + + register_ioport_write(addr, 16, 4, suse_platform_ioport_write, NULL); + PCIXenPlatformState *d = (PCIXenPlatformState *)pci_dev; register_ioport_write(addr, size, 1, xen_platform_ioport_writeb, d); register_ioport_read(addr, size, 1, xen_platform_ioport_readb, d);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor