(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.
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] balloon- pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
$7 = {driver = 0x555555ea725c "virtio-
Prior to applying 2_3 115-120 are the last entries: props). pdata[115] ty*)(m- >compat_ props). pdata[115] ) blk-device" , property = 0x555555e9cb8f "scsi", value = 0x555555eece85 "true", used = false, optional = false} ty*)(m- >compat_ props). pdata[116] ) mac_registers" , value = 0x555555ee6853 "off", used = false, optional = false} ty*)(m- >compat_ props). pdata[117] ) ty*)(m- >compat_ props). pdata[118] ) ty*)(m- >compat_ props). pdata[119] ) ty*)(m- >compat_ props). pdata[120] ) ty*)(m- >compat_ props). pdata[121] )
(gdb) p (m->compat_
$58 = (gpointer) 0x5555564d0400 <hw_compat_2_4>
(gdb) p (*(GlobalProper
$61 = {driver = 0x555555e93d89 "virtio-
(gdb) p (*(GlobalProper
$62 = {driver = 0x555555ea8ffe "e1000", property = 0x555555ee7f21 "extra_
(gdb) p (*(GlobalProper
$63 = {driver = 0x555555e978cb "virtio-pci", property = 0x555555ee7f35 "x-disable-pcie", value = 0x555555eeb3e5 "on", used = false, optional = false}
(gdb) p (*(GlobalProper
$64 = {driver = 0x555555e978cb "virtio-pci", property = 0x555555ee7f44 "migrate-extra", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProper
$65 = {driver = 0x555555ee7f52 "fw_cfg_mem", property = 0x555555eb0b55 "dma_enabled", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProper
$66 = {driver = 0x555555ee7f5d "fw_cfg_io", property = 0x555555eb0b55 "dma_enabled", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProper
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. hw/qdev- core.h: 289
Thread 1 "qemu-system-x86" hit Breakpoint 2, compat_props_add (nelem=9, props=<optimized out>, arr=0x5555566121a0) at ./include/
After that we have:
(gdb) p (m->compat_ props). pdata[138] props). pdata[146] props). pdata[147]
$89 = (gpointer) 0x5555564d02e0 <hw_compat_2_3>
...
(gdb) p (m->compat_
$93 = (gpointer) 0x5555564d03e0 <hw_compat_2_3+256>
(gdb) p (m->compat_
$94 = (gpointer) 0x0
And content: ty*)(m- >compat_ props). pdata[138] ) ty*)(m- >compat_ props). pdata[139] ) balloon- pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false} ty*)(m- >compat_ props). pdata[140] ) serial- pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false} ty*)(m- >compat_ props). pdata[141] ) ty*)(m- >compat_ props). pdata[142] ) ty*)(m- >compat_ props). pdata[143] ) lnksta- dllla", value = 0x555555ee6853 "off", used = false, optional = false} ty*)(m- >compat_ props). pdata[144] ) tion", value = 0x555555ee6853 "off", used = false, optional = false} ty*)(m- >compat_ props). pdata[145] ) footer" , value = 0x555555ee6853 "off", used = false, optional = false} ty*)(m- >compat_ props). pdata[146] ) global- state", value = 0x555555ee6853 "off", used = false, optional = false} ty*)(m- >compat_ props). pdata[147] )
(gdb) p (*(GlobalProper
$96 = {driver = 0x555555ea755c "virtio-blk-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProper
$97 = {driver = 0x555555ea725c "virtio-
(gdb) p (*(GlobalProper
$98 = {driver = 0x555555ea778a "virtio-
(gdb) p (*(GlobalProper
$99 = {driver = 0x555555ea735a "virtio-9p-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProper
$100 = {driver = 0x555555ea7126 "virtio-rng-pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
(gdb) p (*(GlobalProper
$101 = {driver = 0x555555e98ea0 "pci-device", property = 0x555555ee7ed3 "x-pcie-
(gdb) p (*(GlobalProper
$102 = {driver = 0x555555ea9369 "migration", property = 0x555555ee7ee7 "send-configura
(gdb) p (*(GlobalProper
$103 = {driver = 0x555555ea9369 "migration", property = 0x555555ee7efa "send-section-
(gdb) p (*(GlobalProper
$104 = {driver = 0x555555ea9369 "migration", property = 0x555555ee7f0e "store-
(gdb) p (*(GlobalProper
Cannot access memory at address 0x0
That means all the expected attributes got added. balloon- pci", property = 0x555555ea2c91 "any_layout", value = 0x555555ee6853 "off", used = false, optional = false}
Including the expected
$97 = {driver = 0x555555ea725c "virtio-
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.