[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE
On 1/4/23 3:31 PM, Bernhard Beschow wrote: > > > Am 4. Januar 2023 19:29:35 UTC schrieb Chuck Zmudzinski <brchuckz@xxxxxxx>: >>On 1/4/23 1:48 PM, Philippe Mathieu-Daudé wrote: >>> On 4/1/23 18:54, Chuck Zmudzinski wrote: >>>> On 1/4/23 10:35 AM, Philippe Mathieu-Daudé wrote: >>>>> +Markus/Thomas >>>>> >>>>> On 4/1/23 15:44, Bernhard Beschow wrote: >>>>>> During the last patches, TYPE_PIIX3_XEN_DEVICE turned into a clone of >>>>>> TYPE_PIIX3_DEVICE. Remove this redundancy. >>>>>> >>>>>> Signed-off-by: Bernhard Beschow <shentey@xxxxxxxxx> >>>>>> --- >>>>>> hw/i386/pc_piix.c | 4 +--- >>>>>> hw/isa/piix.c | 20 -------------------- >>>>>> include/hw/southbridge/piix.h | 1 - >>>>>> 3 files changed, 1 insertion(+), 24 deletions(-) >>>>>> >>>>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c >>>>>> index 5738d9cdca..6b8de3d59d 100644 >>>>>> --- a/hw/i386/pc_piix.c >>>>>> +++ b/hw/i386/pc_piix.c >>>>>> @@ -235,8 +235,6 @@ static void pc_init1(MachineState *machine, >>>>>> if (pcmc->pci_enabled) { >>>>>> DeviceState *dev; >>>>>> PCIDevice *pci_dev; >>>>>> - const char *type = xen_enabled() ? TYPE_PIIX3_XEN_DEVICE >>>>>> - : TYPE_PIIX3_DEVICE; >>>>>> int i; >>>>>> >>>>>> pci_bus = i440fx_init(pci_type, >>>>>> @@ -250,7 +248,7 @@ static void pc_init1(MachineState *machine, >>>>>> : pci_slot_get_pirq); >>>>>> pcms->bus = pci_bus; >>>>>> >>>>>> - pci_dev = pci_new_multifunction(-1, true, type); >>>>>> + pci_dev = pci_new_multifunction(-1, true, TYPE_PIIX3_DEVICE); >>>>>> object_property_set_bool(OBJECT(pci_dev), "has-usb", >>>>>> machine_usb(machine), &error_abort); >>>>>> object_property_set_bool(OBJECT(pci_dev), "has-acpi", >>>>>> diff --git a/hw/isa/piix.c b/hw/isa/piix.c >>>>>> index 98e9b12661..e4587352c9 100644 >>>>>> --- a/hw/isa/piix.c >>>>>> +++ b/hw/isa/piix.c >>>>>> @@ -33,7 +33,6 @@ >>>>>> #include "hw/qdev-properties.h" >>>>>> #include "hw/ide/piix.h" >>>>>> #include "hw/isa/isa.h" >>>>>> -#include "hw/xen/xen.h" >>>>>> #include "sysemu/runstate.h" >>>>>> #include "migration/vmstate.h" >>>>>> #include "hw/acpi/acpi_aml_interface.h" >>>>>> @@ -465,24 +464,6 @@ static const TypeInfo piix3_info = { >>>>>> .class_init = piix3_class_init, >>>>>> }; >>>>>> >>>>>> -static void piix3_xen_class_init(ObjectClass *klass, void *data) >>>>>> -{ >>>>>> - DeviceClass *dc = DEVICE_CLASS(klass); >>>>>> - PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); >>>>>> - >>>>>> - k->realize = piix3_realize; >>>>>> - /* 82371SB PIIX3 PCI-to-ISA bridge (Step A1) */ >>>>>> - k->device_id = PCI_DEVICE_ID_INTEL_82371SB_0; >>>>>> - dc->vmsd = &vmstate_piix3; >>>>> >>>>> IIUC, since this device is user-creatable, we can't simply remove it >>>>> without going thru the deprecation process. Alternatively we could >>>>> add a type alias: >>>>> >>>>> -- >8 -- >>>>> diff --git a/softmmu/qdev-monitor.c b/softmmu/qdev-monitor.c >>>>> index 4b0ef65780..d94f7ea369 100644 >>>>> --- a/softmmu/qdev-monitor.c >>>>> +++ b/softmmu/qdev-monitor.c >>>>> @@ -64,6 +64,7 @@ typedef struct QDevAlias >>>>> QEMU_ARCH_LOONGARCH) >>>>> #define QEMU_ARCH_VIRTIO_CCW (QEMU_ARCH_S390X) >>>>> #define QEMU_ARCH_VIRTIO_MMIO (QEMU_ARCH_M68K) >>>>> +#define QEMU_ARCH_XEN (QEMU_ARCH_ARM | QEMU_ARCH_I386) >>>>> >>>>> /* Please keep this table sorted by typename. */ >>>>> static const QDevAlias qdev_alias_table[] = { >>>>> @@ -111,6 +112,7 @@ static const QDevAlias qdev_alias_table[] = { >>>>> { "virtio-tablet-device", "virtio-tablet", QEMU_ARCH_VIRTIO_MMIO }, >>>>> { "virtio-tablet-ccw", "virtio-tablet", QEMU_ARCH_VIRTIO_CCW }, >>>>> { "virtio-tablet-pci", "virtio-tablet", QEMU_ARCH_VIRTIO_PCI }, >>>>> + { "PIIX3", "PIIX3-xen", QEMU_ARCH_XEN }, >>>> >>>> Hi Bernhard, >>>> >>>> Can you comment if this should be: >>>> >>>> + { "PIIX", "PIIX3-xen", QEMU_ARCH_XEN }, >>>> >>>> instead? IIUC, the patch series also removed PIIX3 and PIIX4 and >>>> replaced them with PIIX. Or am I not understanding correctly? >>> >>> There is a confusion in QEMU between PCI bridges, the first PCI >>> function they implement, and the other PCI functions. >>> >>> Here TYPE_PIIX3_DEVICE means for "PCI function part of the PIIX >>> south bridge chipset, which expose a PCI-to-ISA bridge". A better >>> name could be TYPE_PIIX3_ISA_PCI_DEVICE. Unfortunately this >>> device is named "PIIX3" with no indication of ISA bridge. >> >> >>Thanks, you are right, I see the PIIX3 device still exists after >>this patch set is applied. >> >>chuckz@debian:~/sources-sid/qemu/qemu-7.50+dfsg/hw/i386$ grep -r PIIX3 * >>pc_piix.c: pci_dev = pci_new_multifunction(-1, true, >>TYPE_PIIX3_DEVICE); >> >>I also understand there is the PCI-to-ISA bridge at 00:01.0 on the PCI bus: >> >>chuckz@debian:~$ lspci >>00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) >>00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] >>00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] >>00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton >>II] (rev 01) >>00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) >>00:02.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01) >>00:03.0 VGA compatible controller: Device 1234:1111 (rev 02) >> >>I also see with this patch, there is a bridge that is a PIIX4 ACPI at 00:01.3. > > Yeah, this PIIX4 ACPI device is what we consider a "Frankenstein" device here > on the list. Indeed my PIIX consolidation series aims for eventually > replacing the remaining PIIX3 devices with PIIX4 ones to present a realistic > environment to guests. The series you tested makes Xen work with PIIX4. With > a couple of more patches you might be able to opt into a realistic PIIX4 > emulation in the future! That's exactly what I want to hear as a future milestone, and thanks for your work on this! Kind regards, Chuck
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |