Comment 8 for bug 1902654

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

At init of pc_i440fx_wily_machine_options the referred compat is ok:

compat_props_add(m->compat_props, hw_compat_2_3, hw_compat_2_3_len);

It contains any_layout off for virtio-balloon-pci

(gdb) p hw_compat_2_3[1]
$7 = {driver = 0x555555ea725c "virtio-balloon-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}

Prior to applying 2_3 115-120 are the last entries:
(gdb) p (m->compat_props).pdata[115]
$58 = (gpointer) 0x5555564d0400 <hw_compat_2_4>
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[115])
$61 = {driver = 0x555555e93d89 "virtio-blk-device", property = 0x555555e9cb8f "scsi", value = 0x555555eece85 "true", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[116])
$62 = {driver = 0x555555ea8ffe "e1000", property = 0x555555ee7f21 "extra_mac_registers", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[117])
$63 = {driver = 0x555555e978cb "virtio-pci", property = 0x555555ee7f35 "x-disable-pcie", value = 0x555555eeb3e5 "on", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[118])
$64 = {driver = 0x555555e978cb "virtio-pci", property = 0x555555ee7f44 "migrate-extra", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[119])
$65 = {driver = 0x555555ee7f52 "fw_cfg_mem", property = 0x555555eb0b55 "dma_enabled", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[120])
$66 = {driver = 0x555555ee7f5d "fw_cfg_io", property = 0x555555eb0b55 "dma_enabled", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[121])
Cannot access memory at address 0x0

Eventually [137] will be the last entry of pc_compat_2_4 that was added.

Then hw_compat_2_3 is added.
Thread 1 "qemu-system-x86" hit Breakpoint 2, compat_props_add (nelem=9, props=<optimized out>, arr=0x5555566121a0) at ./include/hw/qdev-core.h:289

After that we have:

(gdb) p (m->compat_props).pdata[138]
$89 = (gpointer) 0x5555564d02e0 <hw_compat_2_3>
...
(gdb) p (m->compat_props).pdata[146]
$93 = (gpointer) 0x5555564d03e0 <hw_compat_2_3+256>
(gdb) p (m->compat_props).pdata[147]
$94 = (gpointer) 0x0

And content:
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[138])
$96 = {driver = 0x555555ea755c "virtio-blk-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[139])
$97 = {driver = 0x555555ea725c "virtio-balloon-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[140])
$98 = {driver = 0x555555ea778a "virtio-serial-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[141])
$99 = {driver = 0x555555ea735a "virtio-9p-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[142])
$100 = {driver = 0x555555ea7126 "virtio-rng-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[143])
$101 = {driver = 0x555555e98ea0 "pci-device", property = 0x555555ee7ed3 "x-pcie-lnksta-dllla", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[144])
$102 = {driver = 0x555555ea9369 "migration", property = 0x555555ee7ee7 "send-configuration", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[145])
$103 = {driver = 0x555555ea9369 "migration", property = 0x555555ee7efa "send-section-footer", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[146])
$104 = {driver = 0x555555ea9369 "migration", property = 0x555555ee7f0e "store-global-state", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProperty*)(m->compat_props).pdata[147])
Cannot access memory at address 0x0

That means all the expected attributes got added.
Including the expected
$97 = {driver = 0x555555ea725c "virtio-balloon-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}

So on init all seems as one would expect in Focal.
We might need to debug the "info qtree" to see where it is reading from.