Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:GA
xen.5015
ioemu-disable-scsi.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ioemu-disable-scsi.patch of Package xen.5015
--- tools/qemu-xen-traditional-dir-remote/hw/pci.c | 44 ++++++++++++++++ tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c | 2 tools/qemu-xen-traditional-dir-remote/qemu-xen.h | 1 3 files changed, 47 insertions(+) Index: xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/hw/pci.c =================================================================== --- xen-4.4.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/pci.c +++ xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/hw/pci.c @@ -871,6 +871,50 @@ void pci_unplug_netifs(void) } } +void pci_unplug_scsi(void) +{ + PCIBus *bus; + PCIDevice *dev; + PCIIORegion *region; + int x; + int i; + + /* We only support one PCI bus */ + for (bus = first_bus; bus; bus = NULL) { + for (x = 0; x < 256; x++) { + dev = bus->devices[x]; + if (dev && + dev->config[0xa] == 0 && + dev->config[0xb] == 1 +#ifdef CONFIG_PASSTHROUGH + && test_pci_devfn(x) != 1 +#endif + ) { + /* Found a scsi disk. Remove it from the bus. Note that + we don't free it here, since there could still be + references to it floating around. There are only + ever one or two structures leaked, and it's not + worth finding them all. */ + bus->devices[x] = NULL; + for (i = 0; i < PCI_NUM_REGIONS; i++) { + region = &dev->io_regions[i]; + if (region->addr == (uint32_t)-1 || + region->size == 0) + continue; + fprintf(logfile, "region type %d at [%x,%x).\n", + region->type, region->addr, + region->addr+region->size); + if (region->type == PCI_ADDRESS_SPACE_IO) { + isa_unassign_ioport(region->addr, region->size); + } else if (region->type == PCI_ADDRESS_SPACE_MEM) { + unregister_iomem(region->addr); + } + } + } + } + } +} + typedef struct { PCIDevice dev; PCIBus *bus; Index: xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c =================================================================== --- xen-4.4.0-testing.orig/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c +++ xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/hw/xen_platform.c @@ -156,8 +156,10 @@ static void platform_fixed_ioport_write2 /* Unplug devices. Value is a bitmask of which devices to unplug, with bit 0 the IDE devices, bit 1 the network devices, and bit 2 the non-primary-master IDE devices. */ - if (val & UNPLUG_ALL_IDE_DISKS) + if (val & UNPLUG_ALL_IDE_DISKS) { ide_unplug_harddisks(); + pci_unplug_scsi(); + } if (val & UNPLUG_ALL_NICS) { pci_unplug_netifs(); net_tap_shutdown_all(); @@ -364,6 +364,8 @@ static void suse_platform_ioport_write(v * 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 SCSI hard disk...\n"); + pci_unplug_scsi(); fprintf(logfile, "Disconnect netifs...\n"); pci_unplug_netifs(); fprintf(logfile, "Shutdown taps...\n"); Index: xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/qemu-xen.h =================================================================== --- xen-4.4.0-testing.orig/tools/qemu-xen-traditional-dir-remote/qemu-xen.h +++ xen-4.4.0-testing/tools/qemu-xen-traditional-dir-remote/qemu-xen.h @@ -47,6 +47,7 @@ void unset_vram_mapping(void *opaque); #endif void pci_unplug_netifs(void); +void pci_unplug_scsi(void); void destroy_hvm_domain(void); void unregister_iomem(target_phys_addr_t start);
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