All of lore.kernel.org
 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 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.