On Fri, 19 Jun 2026 19:11:36 +0800 fanhuang <[email protected]> wrote:
> Boot one sp-mem device and assert the guest's e820 table gains exactly > one E820_SOFT_RESERVED range whose length matches the device's backend > size. > > Signed-off-by: FangSheng Huang <[email protected]> Acked-by: Igor Mammedov <[email protected]> > --- > tests/qtest/e820-test.c | 34 ++++++++++++++++++++++++++++++++++ > 1 file changed, 34 insertions(+) > > diff --git a/tests/qtest/e820-test.c b/tests/qtest/e820-test.c > index 1db0744c08..aafa3c1aa2 100644 > --- a/tests/qtest/e820-test.c > +++ b/tests/qtest/e820-test.c > @@ -16,6 +16,7 @@ > #include "libqtest.h" > #include "libqos/fw_cfg.h" > #include "qemu/bswap.h" > +#include "qemu/units.h" > > /* e820 entry layout and types (cf. hw/i386/e820_memory_layout.h) */ > #define E820_RAM 1 > @@ -85,11 +86,44 @@ static void test_e820_basic(void) > qtest_quit(s); > } > > +static void test_e820_sp_mem(void) > +{ > + struct e820_entry table[E820_MAX_ENTRIES]; > + QFWCFG *fw_cfg; > + QTestState *s; > + size_t n, i; > + int soft_reserved = 0; > + uint64_t soft_reserved_len = 0; > + > + s = qtest_init("-machine q35 -m 256M,slots=2,maxmem=2G " > + "-object memory-backend-ram,id=ram0,size=256M " > + "-numa node,nodeid=0,memdev=ram0 " > + "-object memory-backend-ram,id=spm0,size=128M " > + "-device sp-mem,id=sp0,memdev=spm0,node=0"); > + fw_cfg = pc_fw_cfg_init(s); > + > + n = get_e820_table(fw_cfg, table); > + for (i = 0; i < n; i++) { > + if (le32_to_cpu(table[i].type) == E820_SOFT_RESERVED) { > + soft_reserved++; > + soft_reserved_len = le64_to_cpu(table[i].length); > + } > + } > + > + /* exactly one SOFT_RESERVED range, sized to the backend */ > + g_assert_cmpint(soft_reserved, ==, 1); > + g_assert_cmpint(soft_reserved_len, ==, 128 * MiB); > + > + pc_fw_cfg_uninit(fw_cfg); > + qtest_quit(s); > +} > + > int main(int argc, char **argv) > { > g_test_init(&argc, &argv, NULL); > > qtest_add_func("e820/basic", test_e820_basic); > + qtest_add_func("e820/sp-mem", test_e820_sp_mem); > > return g_test_run(); > }
