Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2
xen
ioemu-disable-scsi.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ioemu-disable-scsi.patch of Package xen
Index: xen-4.1.2-testing/tools/ioemu-qemu-xen/hw/xen_platform.c =================================================================== --- xen-4.1.2-testing.orig/tools/ioemu-qemu-xen/hw/xen_platform.c +++ xen-4.1.2-testing/tools/ioemu-qemu-xen/hw/xen_platform.c @@ -359,6 +359,8 @@ static void platform_ioport_write(void * case 4: 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.1.2-testing/tools/ioemu-qemu-xen/qemu-xen.h =================================================================== --- xen-4.1.2-testing.orig/tools/ioemu-qemu-xen/qemu-xen.h +++ xen-4.1.2-testing/tools/ioemu-qemu-xen/qemu-xen.h @@ -57,6 +57,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); Index: xen-4.1.2-testing/tools/ioemu-qemu-xen/hw/pci.c =================================================================== --- xen-4.1.2-testing.orig/tools/ioemu-qemu-xen/hw/pci.c +++ xen-4.1.2-testing/tools/ioemu-qemu-xen/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;
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