[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
From: |
Chuck Zmudzinski |
Subject: |
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE |
Date: |
Wed, 4 Jan 2023 15:57:51 -0500 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 |
On 1/4/23 3:31 PM, Bernhard Beschow wrote:
>
>
> Am 4. Januar 2023 19:29:35 UTC schrieb Chuck Zmudzinski <brchuckz@aol.com>:
>>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@gmail.com>
>>>>>> ---
>>>>>> 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
[PATCH v2 2/6] hw/isa/piix: Reuse piix3_realize() in piix3_xen_realize(), Bernhard Beschow, 2023/01/04
[PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Bernhard Beschow, 2023/01/04
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Bernhard Beschow, 2023/01/04
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Chuck Zmudzinski, 2023/01/04
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Bernhard Beschow, 2023/01/06
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Philippe Mathieu-Daudé, 2023/01/06
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Chuck Zmudzinski, 2023/01/06
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Chuck Zmudzinski, 2023/01/06
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Chuck Zmudzinski, 2023/01/06
Re: [PATCH v2 6/6] hw/isa/piix: Resolve redundant TYPE_PIIX3_XEN_DEVICE, Bernhard Beschow, 2023/01/07