Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Maintenance:8158
qemu.openSUSE_Leap_42.3_Update
0069-pcihp-fix-pcihp-for-1.6-machine-typ.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0069-pcihp-fix-pcihp-for-1.6-machine-typ.patch of Package qemu.openSUSE_Leap_42.3_Update
From ab558f418a9bc29bea990632e74d3e6a3266be0f Mon Sep 17 00:00:00 2001 From: Fei Li <fli@suse.com> Date: Fri, 19 Jan 2018 13:42:51 +0800 Subject: [PATCH] pcihp: fix pcihp for 1.6 machine type and older Commit id f0c9d64a avoids adding ACPI_PCIHP_PROP_BSEL twice for machine type 1.7, but also removes the adding for 1.6 and older and xen, which causes an error when hotplugging a pci device using qemu v2.9.* and v2.10.0. There are two chances for intializing ACPI_PCIHP_PROP_BSEL before commit f0c9d64a, one is in acpi_pcihp_init and the other is in acpi_set_bsel. This patch restores the first chance, and adds a check for the second chance: if the property has already been intialized, just skip. [FL: BSC#1074572] Signed-off-by: Fei Li <fli@suse.com> --- hw/acpi/pcihp.c | 11 +++++++++++ hw/i386/acpi-build.c | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c index 2b0f3e1bfb..d957d1e30d 100644 --- a/hw/acpi/pcihp.c +++ b/hw/acpi/pcihp.c @@ -49,6 +49,7 @@ #define ACPI_PCIHP_ADDR 0xae00 #define ACPI_PCIHP_SIZE 0x0014 +#define ACPI_PCIHP_LEGACY_SIZE 0x000f #define PCI_UP_BASE 0x0000 #define PCI_DOWN_BASE 0x0004 #define PCI_EJ_BASE 0x0008 @@ -301,6 +302,16 @@ void acpi_pcihp_init(Object *owner, AcpiPciHpState *s, PCIBus *root_bus, s->root= root_bus; s->legacy_piix = !bridges_enabled; + if (s->legacy_piix) { + unsigned *bus_bsel = g_malloc(sizeof *bus_bsel); + + s->io_len = ACPI_PCIHP_LEGACY_SIZE; + + *bus_bsel = ACPI_PCIHP_BSEL_DEFAULT; + object_property_add_uint32_ptr(OBJECT(root_bus), ACPI_PCIHP_PROP_BSEL, + bus_bsel, NULL); + } + memory_region_init_io(&s->io, owner, &acpi_pcihp_io_ops, s, "acpi-pci-hotplug", s->io_len); memory_region_add_subregion(address_space_io, s->io_base, &s->io); diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 76fa4555bf..b40870c0f7 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -457,8 +457,10 @@ static void *acpi_set_bsel(PCIBus *bus, void *opaque) { unsigned *bsel_alloc = opaque; unsigned *bus_bsel; + int64_t bsel = object_property_get_int(OBJECT(bus), + ACPI_PCIHP_PROP_BSEL, NULL); - if (qbus_is_hotpluggable(BUS(bus))) { + if (qbus_is_hotpluggable(BUS(bus)) && bsel < 0) { bus_bsel = g_malloc(sizeof *bus_bsel); *bus_bsel = (*bsel_alloc)++;
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