qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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')

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).