From: "Andreas Färber" <afaerber@suse.de>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws>
Subject: Re: [Qemu-devel] [PATCH v3 00/14] qemu: generate acpi tables for the guest
Date: Sun, 28 Jul 2013 01:22:57 +0200 [thread overview]
Message-ID: <51F45651.9010600@suse.de> (raw)
In-Reply-To: <51F2693B.5070000@suse.de>
[-- Attachment #1: Type: text/plain, Size: 4185 bytes --]
Am 26.07.2013 14:19, schrieb Andreas Färber:
> Am 25.07.2013 18:19, schrieb Michael S. Tsirkin:
>> On Thu, Jul 25, 2013 at 05:50:55PM +0200, Andreas Färber wrote:
>>> Am 24.07.2013 18:01, schrieb Michael S. Tsirkin:
>>>> This code can also be found here:
>>>> git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git acpi
>>>>
>>>> Please review, and consider for 1.6.
>>>
>>> Quite frankly, this is still not looking the way I imagined it based on
>>> the KVM call discussion and Anthony's comments that I remember:
>>>
>>> I believe Anthony asked to extract the information from the QOM tree,
>>> originally from the SeaBIOS side, then later agreeing to do it on the
>>> QEMU side.
>>>
>>> However here I am still seeing *functions* added in device code to check
>>> device existence and to extract individual fields. I was assuming (and
>>> clearly prefer) such code to live in a central place, be it acpi-build.c
>>> or something else, and to use QOM *API*s to obtain information when
>>> needed rather than building up lots of new structs duplicating that
>>> data. That would at the same time be a test case for how useful the QOM
>>> tree is
>>>
>>> I'm not sure if there was a misunderstanding or whether the PC QOM model
>>> still sucks^W is incomplete? Anthony and Ping Fang(?) had both posted
>>> patches to improve the composition tree once. If there's properties
>>> missing that you need to access for ACPI, we should simply add them.
>>> For i440fx we have /machine/i440fx.
>>> For q35 I encountered an mch child on q35-pcihost, but what's trivially
>>> missing apparently is to add q35-pcihost as a child to /machine, e.g.
>>> /machine/q35.
>>> Then you'll end up doing
>>> Object *obj = object_resolve_path_component(qdev_get_machine(), "q35/mch");
>>> object_property_get_int(obj, "foo", &err);
>>> object_property_get_string(obj, "bar", &err);
>>> and so on. No need to do the TYPE_... based search for everything.
>>>
>>> User-added -devices will show up in /machine/peripheral or
>>> /machine/peripheral-anon depending on whether id= is used, so there a
>>> type-based search probably makes sense. And there is nothing wrong with
>>> moving the TYPE_* constants to a device header where not yet the case,
>>> to allow that from generic code.
>>>
>>> Similarly, please don't open-code OBJECT_CHECK()s, do a trivial patch
>>> with a macro that we can then reuse elsewhere. I'd be happy to review
>>> such QOM patches and help fast-track them into master.
>>>
>>> Will take a closer look at the implementation later.
>>
>> This is not my understanding of previous comments on list
>> or on KVM call.
>>
>> Basically it sounds like you want to make my work depend on completion
>> of QOM conversion.
>> I think we explicitly agreed full QOM convertion is not a blocker.
>
> Not sure what you mean with "completion of QOM conversion" or "full QOM
> conversion". What I am saying is that instead of spending time adding
> functions to devices that fulfill your own ACPI needs only, that time
> were better spent adding QOM properties where not yet existent.
>
> Because then what you can access for ACPI can also be accessed by
> libvirt and other management tools as well as qtest - I consider it a
> test case. QMP does not offer an instance/path search by type.
To clarify for everyone what we're talking about here, I'm attaching
/machine composition tree dumps for pc,accel=kvm and q35,accel=kvm plus
the rudimentary script I used to generate it.
It shows for instance the mentioned /machine/i440fx and lack of
/machine/q35. It also shows that there would be a /machine/fw_cfg.
Paths starting with /machine/unassigned shouldn't be hardcoded anywhere
(that's the nobody-added-it-as-a-child<> bucket), except maybe for
/machine/unassigned/sysbus. But whenever there's a link from a named
device to a /machine/unassigned/device[n] that may of course be used
dynamically, e.g. /machine/icc-bridge/icc to discover CPUs and APICs.
HTH,
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
[-- Attachment #2: pc_i440fx_kvm.txt --]
[-- Type: text/plain, Size: 10959 bytes --]
/machine
type: container
/machine/i440fx
parent_bus: /machine/unattached/sysbus
realized: True
type: i440FX-pcihost
/machine/i440fx/ioapic
parent_bus: /machine/unattached/sysbus
gsi_base: 0
realized: True
type: kvm-ioapic
/machine/i440fx/pci.0
child[5]: /machine/unattached/device[23]
child[4]: /machine/unattached/device[21]
child[3]: /machine/unattached/device[20]
child[2]: /machine/unattached/device[8]
child[1]: /machine/unattached/device[5]
child[0]: /machine/unattached/device[4]
type: PCI
/machine/fw_cfg
parent_bus: /machine/unattached/sysbus
data_iobase: 1297
legacy-data_iobase: 0x511
ctl_iobase: 1296
legacy-ctl_iobase: 0x510
realized: True
type: fw_cfg
/machine/icc-bridge
parent_bus: /machine/unattached/sysbus
realized: True
type: icc-bridge
/machine/icc-bridge/icc
child[1]: /machine/unattached/device[0]/apic
child[0]: /machine/unattached/device[0]
type: icc-bus
/machine/unattached
type: container
/machine/unattached/device[32]
parent_bus: /machine/unattached/device[5]/isa.0
ioport: 1285
realized: True
type: pvpanic
/machine/unattached/device[31]
parent_bus: /machine/unattached/device[23]/i2c
address: 87
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[30]
parent_bus: /machine/unattached/device[23]/i2c
address: 86
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[29]
parent_bus: /machine/unattached/device[23]/i2c
address: 85
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[28]
parent_bus: /machine/unattached/device[23]/i2c
address: 84
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[27]
parent_bus: /machine/unattached/device[23]/i2c
address: 83
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[26]
parent_bus: /machine/unattached/device[23]/i2c
address: 82
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[25]
parent_bus: /machine/unattached/device[23]/i2c
address: 81
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[24]
parent_bus: /machine/unattached/device[23]/i2c
address: 80
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[23]
parent_bus: /machine/i440fx/pci.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile:
legacy-romfile: <null>
addr: 11
legacy-addr: 01.3
s4_val: 2
disable_s4: 0
disable_s3: 0
smb_io_base: 45312
realized: True
type: PIIX4_PM
/machine/unattached/device[23]/i2c
child[7]: /machine/unattached/device[31]
child[6]: /machine/unattached/device[30]
child[5]: /machine/unattached/device[29]
child[4]: /machine/unattached/device[28]
child[3]: /machine/unattached/device[27]
child[2]: /machine/unattached/device[26]
child[1]: /machine/unattached/device[25]
child[0]: /machine/unattached/device[24]
type: i2c-bus
/machine/unattached/device[22]
parent_bus: /machine/unattached/device[21]/ide.1
unit: 0
model:
legacy-model: <null>
serial: QM00003
legacy-serial: "QM00003"
wwn: 0
legacy-wwn: 0x0
ver: 1.5.50
legacy-ver: "1.5.50"
discard_granularity: 512
bootindex: -1
opt_io_size: 0
min_io_size: 0
physical_block_size: 512
logical_block_size: 512
drive: ide1-cd0
realized: True
type: ide-cd
/machine/unattached/device[21]
parent_bus: /machine/i440fx/pci.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile:
legacy-romfile: <null>
addr: 9
legacy-addr: 01.1
realized: True
type: piix3-ide
/machine/unattached/device[21]/ide.1
child[0]: /machine/unattached/device[22]
type: IDE
/machine/unattached/device[21]/ide.0
type: IDE
/machine/unattached/device[20]
parent_bus: /machine/i440fx/pci.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile: efi-e1000.rom
legacy-romfile: "efi-e1000.rom"
addr: 24
legacy-addr: 03.0
autonegotiation: True
legacy-autonegotiation: on
bootindex: -1
netdev: hub0port0
vlan: 0
legacy-vlan: 0
mac: 52:54:00:12:34:56
realized: True
type: e1000
/machine/unattached/device[19]
parent_bus: /machine/unattached/device[5]/isa.0
check_media_rate: True
legacy-check_media_rate: on
bootindexB: -1
bootindexA: -1
driveB:
driveA: floppy0
dma: 2
irq: 6
iobase: 1008
legacy-iobase: 0x3f0
realized: True
type: isa-fdc
/machine/unattached/device[18]
parent_bus: /machine/unattached/device[5]/isa.0
realized: True
type: port92
/machine/unattached/device[17]
parent_bus: /machine/unattached/device[5]/isa.0
legacy-ps2_mouse: <EXCEPTION>
realized: True
type: vmmouse
/machine/unattached/device[16]
parent_bus: /machine/unattached/device[5]/isa.0
realized: True
type: vmport
/machine/unattached/device[15]
parent_bus: /machine/unattached/device[5]/isa.0
realized: True
type: i8042
/machine/unattached/device[14]
parent_bus: /machine/unattached/device[5]/isa.0
chardev: parallel0
irq: 7
iobase: 888
legacy-iobase: 0x378
index: 0
realized: True
type: isa-parallel
/machine/unattached/device[13]
parent_bus: /machine/unattached/device[5]/isa.0
wakeup: 0
chardev: serial0
irq: 4
iobase: 1016
legacy-iobase: 0x3f8
index: 0
realized: True
type: isa-serial
/machine/unattached/device[12]
parent_bus: /machine/unattached/device[5]/isa.0
legacy-pit: <EXCEPTION>
iobase: 97
legacy-iobase: 0x61
realized: True
type: isa-pcspk
/machine/unattached/device[11]
parent_bus: /machine/unattached/device[5]/isa.0
lost_tick_policy: delay
iobase: 64
legacy-iobase: 0x40
realized: True
type: kvm-pit
/machine/unattached/device[10]
date: {u'tm_sec': 31, u'tm_hour': 23, u'tm_mday': 27, u'tm_year': 113, u'tm_mon': 6, u'tm_min': 5}
parent_bus: /machine/unattached/device[5]/isa.0
lost_tick_policy: discard
base_year: 0
realized: True
type: mc146818rtc
/machine/unattached/device[9]
parent_bus: /machine/unattached/sysbus
msi: False
legacy-msi: off
timers: 3
realized: True
type: hpet
/machine/unattached/device[8]
parent_bus: /machine/i440fx/pci.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile: vgabios-cirrus.bin
legacy-romfile: "vgabios-cirrus.bin"
addr: 16
legacy-addr: 02.0
vgamem_mb: 8
realized: True
type: cirrus-vga
/machine/unattached/device[7]
parent_bus: /machine/unattached/device[5]/isa.0
master: False
legacy-master: off
elcr_mask: 222
legacy-elcr_mask: 0xde
elcr_addr: 1233
legacy-elcr_addr: 0x4d1
iobase: 160
legacy-iobase: 0xa0
realized: True
type: kvm-i8259
/machine/unattached/device[6]
parent_bus: /machine/unattached/device[5]/isa.0
master: True
legacy-master: on
elcr_mask: 248
legacy-elcr_mask: 0xf8
elcr_addr: 1232
legacy-elcr_addr: 0x4d0
iobase: 32
legacy-iobase: 0x20
realized: True
type: kvm-i8259
/machine/unattached/device[5]
parent_bus: /machine/i440fx/pci.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: True
legacy-multifunction: on
rombar: 1
romfile:
legacy-romfile: <null>
addr: 8
legacy-addr: 01.0
realized: True
type: PIIX3
/machine/unattached/device[5]/isa.0
child[12]: /machine/unattached/device[32]
child[11]: /machine/unattached/device[19]
child[10]: /machine/unattached/device[18]
child[9]: /machine/unattached/device[17]
child[8]: /machine/unattached/device[16]
child[7]: /machine/unattached/device[15]
child[6]: /machine/unattached/device[14]
child[5]: /machine/unattached/device[13]
child[4]: /machine/unattached/device[12]
child[3]: /machine/unattached/device[11]
child[2]: /machine/unattached/device[10]
child[1]: /machine/unattached/device[7]
child[0]: /machine/unattached/device[6]
type: ISA
/machine/unattached/device[4]
parent_bus: /machine/i440fx/pci.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile:
legacy-romfile: <null>
addr: 0
legacy-addr: 00.0
realized: True
type: i440FX
/machine/unattached/device[3]
parent_bus: /machine/unattached/sysbus
rom_only: 1
isapc_ram_fw: 0
realized: True
type: pc-sysfw
/machine/unattached/device[2]
parent_bus: /machine/unattached/sysbus
realized: True
type: kvmclock
/machine/unattached/device[1]
parent_bus: /machine/unattached/sysbus
realized: True
type: kvmvapic
/machine/unattached/device[0]
filtered-features: [{u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483658, u'features': 0}, {u'cpuid-register': u'EAX', u'cpuid-input-eax': 1073741825, u'features': 0}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 3221225473, u'features': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 2147483649, u'features': 100}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483649, u'features': 0}, {u'cpuid-register': u'EBX', u'cpuid-input-eax': 7, u'features': 0, u'cpuid-input-ecx': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 1, u'features': 0}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 1, u'features': 0}]
feature-words: [{u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483658, u'features': 0}, {u'cpuid-register': u'EAX', u'cpuid-input-eax': 1073741825, u'features': 16777339}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 3221225473, u'features': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 2147483649, u'features': 1}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483649, u'features': 563194877}, {u'cpuid-register': u'EBX', u'cpuid-input-eax': 7, u'features': 0, u'cpuid-input-ecx': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 1, u'features': 2155880449}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 1, u'features': 126614525}]
apic-id: 0
tsc-frequency: 0
model-id: QEMU Virtual CPU version 1.5.50
vendor: GenuineIntel
xlevel: 2147483658
level: 4
stepping: 3
model: 2
family: 6
parent_bus: /machine/icc-bridge/icc
realized: True
type: x86_64-cpu
/machine/unattached/device[0]/apic
parent_bus: /machine/icc-bridge/icc
vapic: True
legacy-vapic: on
id: 0
realized: True
type: kvm-apic
/machine/unattached/sysbus
child[7]: /machine/unattached/device[9]
child[6]: /machine/i440fx/ioapic
child[5]: /machine/i440fx
child[4]: /machine/fw_cfg
child[3]: /machine/unattached/device[3]
child[2]: /machine/unattached/device[2]
child[1]: /machine/unattached/device[1]
child[0]: /machine/icc-bridge
type: System
/machine/peripheral
type: container
/machine/peripheral-anon
type: container
[-- Attachment #3: pc_q35_kvm.txt --]
[-- Type: text/plain, Size: 10802 bytes --]
/machine
type: container
/machine/fw_cfg
parent_bus: /machine/unattached/sysbus
data_iobase: 1297
legacy-data_iobase: 0x511
ctl_iobase: 1296
legacy-ctl_iobase: 0x510
realized: True
type: fw_cfg
/machine/icc-bridge
parent_bus: /machine/unattached/sysbus
realized: True
type: icc-bridge
/machine/icc-bridge/icc
child[1]: /machine/unattached/device[0]/apic
child[0]: /machine/unattached/device[0]
type: icc-bus
/machine/unattached
type: container
/machine/unattached/device[32]
parent_bus: /machine/unattached/device[5]/isa.0
ioport: 1285
realized: True
type: pvpanic
/machine/unattached/device[31]
parent_bus: /machine/unattached/device[4]/pcie.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile: efi-e1000.rom
legacy-romfile: "efi-e1000.rom"
addr: 16
legacy-addr: 02.0
autonegotiation: True
legacy-autonegotiation: on
bootindex: -1
netdev: hub0port0
vlan: 0
legacy-vlan: 0
mac: 52:54:00:12:34:56
realized: True
type: e1000
/machine/unattached/device[30]
parent_bus: /machine/unattached/device[4]/pcie.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile: vgabios-cirrus.bin
legacy-romfile: "vgabios-cirrus.bin"
addr: 8
legacy-addr: 01.0
vgamem_mb: 8
realized: True
type: cirrus-vga
/machine/unattached/device[29]
parent_bus: /machine/unattached/device[21]/i2c
address: 87
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[28]
parent_bus: /machine/unattached/device[21]/i2c
address: 86
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[27]
parent_bus: /machine/unattached/device[21]/i2c
address: 85
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[26]
parent_bus: /machine/unattached/device[21]/i2c
address: 84
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[25]
parent_bus: /machine/unattached/device[21]/i2c
address: 83
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[24]
parent_bus: /machine/unattached/device[21]/i2c
address: 82
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[23]
parent_bus: /machine/unattached/device[21]/i2c
address: 81
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[22]
parent_bus: /machine/unattached/device[21]/i2c
address: 80
legacy-data: <EXCEPTION>
realized: True
type: smbus-eeprom
/machine/unattached/device[21]
parent_bus: /machine/unattached/device[4]/pcie.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: True
legacy-multifunction: on
rombar: 1
romfile:
legacy-romfile: <null>
addr: 251
legacy-addr: 1f.3
realized: True
type: ICH9 SMB
/machine/unattached/device[21]/i2c
child[7]: /machine/unattached/device[29]
child[6]: /machine/unattached/device[28]
child[5]: /machine/unattached/device[27]
child[4]: /machine/unattached/device[26]
child[3]: /machine/unattached/device[25]
child[2]: /machine/unattached/device[24]
child[1]: /machine/unattached/device[23]
child[0]: /machine/unattached/device[22]
type: i2c-bus
/machine/unattached/device[20]
parent_bus: /machine/unattached/device[4]/pcie.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: True
legacy-multifunction: on
rombar: 1
romfile:
legacy-romfile: <null>
addr: 250
legacy-addr: 1f.2
realized: True
type: ich9-ahci
/machine/unattached/device[20]/ide.5
type: IDE
/machine/unattached/device[20]/ide.4
type: IDE
/machine/unattached/device[20]/ide.3
type: IDE
/machine/unattached/device[20]/ide.2
type: IDE
/machine/unattached/device[20]/ide.1
type: IDE
/machine/unattached/device[20]/ide.0
type: IDE
/machine/unattached/device[19]
parent_bus: /machine/unattached/device[5]/isa.0
check_media_rate: True
legacy-check_media_rate: on
bootindexB: -1
bootindexA: -1
driveB:
driveA: floppy0
dma: 2
irq: 6
iobase: 1008
legacy-iobase: 0x3f0
realized: True
type: isa-fdc
/machine/unattached/device[18]
parent_bus: /machine/unattached/device[5]/isa.0
realized: True
type: port92
/machine/unattached/device[17]
parent_bus: /machine/unattached/device[5]/isa.0
legacy-ps2_mouse: <EXCEPTION>
realized: True
type: vmmouse
/machine/unattached/device[16]
parent_bus: /machine/unattached/device[5]/isa.0
realized: True
type: vmport
/machine/unattached/device[15]
parent_bus: /machine/unattached/device[5]/isa.0
realized: True
type: i8042
/machine/unattached/device[14]
parent_bus: /machine/unattached/device[5]/isa.0
chardev: parallel0
irq: 7
iobase: 888
legacy-iobase: 0x378
index: 0
realized: True
type: isa-parallel
/machine/unattached/device[13]
parent_bus: /machine/unattached/device[5]/isa.0
wakeup: 0
chardev: serial0
irq: 4
iobase: 1016
legacy-iobase: 0x3f8
index: 0
realized: True
type: isa-serial
/machine/unattached/device[12]
parent_bus: /machine/unattached/device[5]/isa.0
legacy-pit: <EXCEPTION>
iobase: 97
legacy-iobase: 0x61
realized: True
type: isa-pcspk
/machine/unattached/device[11]
parent_bus: /machine/unattached/device[5]/isa.0
lost_tick_policy: delay
iobase: 64
legacy-iobase: 0x40
realized: True
type: kvm-pit
/machine/unattached/device[10]
date: {u'tm_sec': 42, u'tm_hour': 23, u'tm_mday': 27, u'tm_year': 113, u'tm_mon': 6, u'tm_min': 4}
parent_bus: /machine/unattached/device[5]/isa.0
lost_tick_policy: discard
base_year: 0
realized: True
type: mc146818rtc
/machine/unattached/device[9]
parent_bus: /machine/unattached/sysbus
msi: False
legacy-msi: off
timers: 3
realized: True
type: hpet
/machine/unattached/device[8]
parent_bus: /machine/unattached/sysbus
gsi_base: 0
realized: True
type: kvm-ioapic
/machine/unattached/device[7]
parent_bus: /machine/unattached/device[5]/isa.0
master: False
legacy-master: off
elcr_mask: 222
legacy-elcr_mask: 0xde
elcr_addr: 1233
legacy-elcr_addr: 0x4d1
iobase: 160
legacy-iobase: 0xa0
realized: True
type: kvm-i8259
/machine/unattached/device[6]
parent_bus: /machine/unattached/device[5]/isa.0
master: True
legacy-master: on
elcr_mask: 248
legacy-elcr_mask: 0xf8
elcr_addr: 1232
legacy-elcr_addr: 0x4d0
iobase: 32
legacy-iobase: 0x20
realized: True
type: kvm-i8259
/machine/unattached/device[5]
parent_bus: /machine/unattached/device[4]/pcie.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: True
legacy-multifunction: on
rombar: 1
romfile:
legacy-romfile: <null>
addr: 248
legacy-addr: 1f.0
realized: True
type: ICH9 LPC
/machine/unattached/device[5]/isa.0
child[12]: /machine/unattached/device[32]
child[11]: /machine/unattached/device[19]
child[10]: /machine/unattached/device[18]
child[9]: /machine/unattached/device[17]
child[8]: /machine/unattached/device[16]
child[7]: /machine/unattached/device[15]
child[6]: /machine/unattached/device[14]
child[5]: /machine/unattached/device[13]
child[4]: /machine/unattached/device[12]
child[3]: /machine/unattached/device[11]
child[2]: /machine/unattached/device[10]
child[1]: /machine/unattached/device[7]
child[0]: /machine/unattached/device[6]
type: ISA
/machine/unattached/device[4]
parent_bus: /machine/unattached/sysbus
MCFG: -1
realized: True
type: q35-pcihost
/machine/unattached/device[4]/pcie.0
child[5]: /machine/unattached/device[31]
child[4]: /machine/unattached/device[30]
child[3]: /machine/unattached/device[21]
child[2]: /machine/unattached/device[20]
child[1]: /machine/unattached/device[5]
child[0]: /machine/unattached/device[4]/mch
type: PCIE
/machine/unattached/device[4]/mch
parent_bus: /machine/unattached/device[4]/pcie.0
command_serr_enable: True
legacy-command_serr_enable: on
multifunction: False
legacy-multifunction: off
rombar: 1
romfile:
legacy-romfile: <null>
addr: 0
legacy-addr: 00.0
realized: True
type: mch
/machine/unattached/device[3]
parent_bus: /machine/unattached/sysbus
rom_only: 1
isapc_ram_fw: 0
realized: True
type: pc-sysfw
/machine/unattached/device[2]
parent_bus: /machine/unattached/sysbus
realized: True
type: kvmclock
/machine/unattached/device[1]
parent_bus: /machine/unattached/sysbus
realized: True
type: kvmvapic
/machine/unattached/device[0]
filtered-features: [{u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483658, u'features': 0}, {u'cpuid-register': u'EAX', u'cpuid-input-eax': 1073741825, u'features': 0}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 3221225473, u'features': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 2147483649, u'features': 100}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483649, u'features': 0}, {u'cpuid-register': u'EBX', u'cpuid-input-eax': 7, u'features': 0, u'cpuid-input-ecx': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 1, u'features': 0}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 1, u'features': 0}]
feature-words: [{u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483658, u'features': 0}, {u'cpuid-register': u'EAX', u'cpuid-input-eax': 1073741825, u'features': 16777339}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 3221225473, u'features': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 2147483649, u'features': 1}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 2147483649, u'features': 563194877}, {u'cpuid-register': u'EBX', u'cpuid-input-eax': 7, u'features': 0, u'cpuid-input-ecx': 0}, {u'cpuid-register': u'ECX', u'cpuid-input-eax': 1, u'features': 2155880449}, {u'cpuid-register': u'EDX', u'cpuid-input-eax': 1, u'features': 126614525}]
apic-id: 0
tsc-frequency: 0
model-id: QEMU Virtual CPU version 1.5.50
vendor: GenuineIntel
xlevel: 2147483658
level: 4
stepping: 3
model: 2
family: 6
parent_bus: /machine/icc-bridge/icc
realized: True
type: x86_64-cpu
/machine/unattached/device[0]/apic
parent_bus: /machine/icc-bridge/icc
vapic: True
legacy-vapic: on
id: 0
realized: True
type: kvm-apic
/machine/unattached/sysbus
child[7]: /machine/unattached/device[9]
child[6]: /machine/unattached/device[8]
child[5]: /machine/unattached/device[4]
child[4]: /machine/fw_cfg
child[3]: /machine/unattached/device[3]
child[2]: /machine/unattached/device[2]
child[1]: /machine/unattached/device[1]
child[0]: /machine/icc-bridge
type: System
/machine/peripheral
type: container
/machine/peripheral-anon
type: container
[-- Attachment #4: qom-tree --]
[-- Type: text/plain, Size: 1799 bytes --]
#!/usr/bin/python
##
# QEMU Object Model test tools
#
# Copyright IBM, Corp. 2011
#
# Authors:
# Anthony Liguori <aliguori@us.ibm.com>
# Andreas Faerber <afaerber@suse.de>
#
# This work is licensed under the terms of the GNU GPL, version 2 or later. See
# the COPYING file in the top-level directory.
##
import sys
import os
from qmp import QEMUMonitorProtocol
cmd, args = sys.argv[0], sys.argv[1:]
socket_path = None
path = None
prop = None
def usage():
return '''environment variables:
QMP_SOCKET=<path | addr:port>
usage:
%s [-h] [-s <QMP socket path | addr:port>] [<path>]
''' % cmd
def usage_error(error_msg = "unspecified error"):
sys.stderr.write('%s\nERROR: %s\n' % (usage(), error_msg))
exit(1)
if len(args) > 0:
if args[0] == "-h":
print usage()
exit(0);
elif args[0] == "-s":
try:
socket_path = args[1]
except:
usage_error("missing argument: QMP socket path or address");
args = args[2:]
if not socket_path:
if os.environ.has_key('QMP_SOCKET'):
socket_path = os.environ['QMP_SOCKET']
else:
usage_error("no QMP socket path or address given");
srv = QEMUMonitorProtocol(socket_path)
srv.connect()
def list_node(path):
print '%s' % path
items = srv.command('qom-list', path=path)
for item in items:
if not item['type'].startswith('child<'): #and not item['type'].startswith('link<'):
try:
print ' %s: %s' % (item['name'], srv.command('qom-get', path=path, property=item['name']))
except:
print ' %s: <EXCEPTION>' % item['name']
print ''
for item in items:
if item['type'].startswith('child<'):
list_node(path + '/' + item['name'])
list_node('/machine')
next prev parent reply other threads:[~2013-07-27 23:23 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-24 16:01 [Qemu-devel] [PATCH v3 00/14] qemu: generate acpi tables for the guest Michael S. Tsirkin
2013-07-24 16:01 ` [Qemu-devel] [PATCH v3 01/14] hw/i386/pc.c: move IO_APIC_DEFAULT_ADDRESS to include/hw/i386/apic.h Michael S. Tsirkin
2013-07-25 12:05 ` Gerd Hoffmann
2013-07-28 0:44 ` Andreas Färber
2013-07-24 16:01 ` [Qemu-devel] [PATCH v3 02/14] i386: add ACPI table files from seabios Michael S. Tsirkin
2013-07-24 16:01 ` [Qemu-devel] [PATCH v3 03/14] acpi: add rules to compile ASL source Michael S. Tsirkin
2013-07-25 12:09 ` Gerd Hoffmann
2013-07-24 16:01 ` [Qemu-devel] [PATCH v3 04/14] acpi: pre-compiled ASL files Michael S. Tsirkin
2013-07-24 16:01 ` [Qemu-devel] [PATCH v3 05/14] loader: use file path size from fw_cfg.h Michael S. Tsirkin
2013-07-24 23:42 ` Andreas Färber
2013-07-25 12:10 ` Gerd Hoffmann
2013-07-24 16:01 ` [Qemu-devel] [PATCH v3 06/14] i386: add bios linker/loader Michael S. Tsirkin
2013-07-25 12:11 ` Gerd Hoffmann
2013-07-26 9:42 ` Gerd Hoffmann
2013-07-28 8:08 ` Michael S. Tsirkin
2013-07-24 16:01 ` [Qemu-devel] [PATCH v3 07/14] loader: support for unmapped ROM blobs Michael S. Tsirkin
2013-07-25 12:14 ` Gerd Hoffmann
2013-07-25 12:28 ` Michael S. Tsirkin
2013-07-25 12:43 ` Gerd Hoffmann
2013-07-25 13:03 ` Michael S. Tsirkin
2013-07-25 19:57 ` Michael S. Tsirkin
2013-07-24 16:02 ` [Qemu-devel] [PATCH v3 08/14] loader: allow adding ROMs in done callbacks Michael S. Tsirkin
2013-07-25 12:15 ` Gerd Hoffmann
2013-07-24 16:02 ` [Qemu-devel] [PATCH v3 09/14] i386: define pc guest info Michael S. Tsirkin
2013-07-25 12:31 ` Gerd Hoffmann
2013-07-28 0:41 ` Andreas Färber
2013-07-28 7:36 ` Michael S. Tsirkin
2013-07-24 16:02 ` [Qemu-devel] [PATCH v3 10/14] ich9: APIs for " Michael S. Tsirkin
2013-07-25 12:33 ` Gerd Hoffmann
2013-07-28 0:37 ` Andreas Färber
2013-07-28 7:35 ` Michael S. Tsirkin
2013-07-24 16:02 ` [Qemu-devel] [PATCH v3 11/14] piix: " Michael S. Tsirkin
2013-07-25 9:32 ` Michael S. Tsirkin
2013-07-28 0:12 ` Andreas Färber
2013-07-28 7:30 ` Michael S. Tsirkin
2013-07-28 9:38 ` Andreas Färber
2013-07-28 10:14 ` Michael S. Tsirkin
2013-07-28 10:31 ` Andreas Färber
2013-07-28 11:08 ` Andreas Färber
2013-07-28 12:19 ` Michael S. Tsirkin
2013-07-25 12:34 ` Gerd Hoffmann
2013-07-24 16:02 ` [Qemu-devel] [PATCH v3 12/14] pvpanic: add API to access io port Michael S. Tsirkin
2013-07-25 10:29 ` Gerd Hoffmann
2013-07-25 10:55 ` Michael S. Tsirkin
2013-07-25 10:58 ` Michael S. Tsirkin
2013-07-25 11:05 ` Gerd Hoffmann
2013-07-25 11:22 ` Michael S. Tsirkin
2013-07-25 12:03 ` Gerd Hoffmann
2013-07-25 12:23 ` Michael S. Tsirkin
2013-07-27 23:58 ` Andreas Färber
2013-07-24 16:02 ` [Qemu-devel] [PATCH v3 13/14] hpet: add API to find it Michael S. Tsirkin
2013-07-25 12:36 ` Gerd Hoffmann
2013-07-27 23:38 ` Andreas Färber
2013-07-24 16:02 ` [Qemu-devel] [PATCH v3 14/14] i386: ACPI table generation code from seabios Michael S. Tsirkin
2013-07-25 13:06 ` Gerd Hoffmann
2013-07-25 13:23 ` Michael S. Tsirkin
2013-07-25 14:58 ` Gerd Hoffmann
2013-07-25 15:14 ` Michael S. Tsirkin
2013-07-26 9:06 ` Gerd Hoffmann
2013-07-26 15:30 ` Gerd Hoffmann
2013-07-28 7:00 ` Michael S. Tsirkin
2013-07-25 15:50 ` [Qemu-devel] [PATCH v3 00/14] qemu: generate acpi tables for the guest Andreas Färber
2013-07-25 16:19 ` Michael S. Tsirkin
2013-07-26 12:19 ` Andreas Färber
2013-07-27 23:22 ` Andreas Färber [this message]
2013-09-11 9:57 ` Michael S. Tsirkin
2013-07-25 17:18 ` Michael S. Tsirkin
2013-07-26 12:25 ` Andreas Färber
2013-07-29 15:27 ` Anthony Liguori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51F45651.9010600@suse.de \
--to=afaerber@suse.de \
--cc=anthony@codemonkey.ws \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.