On Mon, 18 Jul 2016 17:17:48 +0300 Marcel Apfelbaum <mar...@redhat.com> wrote:
> On 07/18/2016 04:34 PM, Igor Mammedov wrote: > > On Sun, 17 Jul 2016 19:53:09 +0300 > > Marcel Apfelbaum <mar...@redhat.com> wrote: > > > >> Add an ivshmem device with 1G shared memory to > >> pxb in order to check the ACPI code of 64bit MMIO allocation. > > what is forcing ivshmem to be mapped above 4G? > > For PC machine: nothing -> ivshmem gets mapped in 32-bit area > For Q35 machine: there is not enough space for mapping 1G > in 32-bit area, and maybe there are also alignment constrains. > You can use this test in verbose mode and see exactly how > the ranges are distributed. If you want me to run it and add the output, > please let me know. No need to post diff, I can do V=1 manually, the question though is: doesn't PC need ivshmem to go above 4G as well? > > Thanks, > Marcel > > > > >> > >> Suggested-by: Igor Mammedov <imamm...@redhat.com> > >> Signed-off-by: Marcel Apfelbaum <mar...@redhat.com> > >> Tested-by: Laszlo Ersek <ler...@redhat.com> > >> --- > >> tests/bios-tables-test.c | 37 +++++++++++++++++++++++++++++++++++++ > >> 1 file changed, 37 insertions(+) > >> > >> diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c > >> index de4019e..b23c6b0 100644 > >> --- a/tests/bios-tables-test.c > >> +++ b/tests/bios-tables-test.c > >> @@ -864,6 +864,41 @@ static void test_acpi_piix4_tcg_ipmi(void) > >> free_test_data(&data); > >> } > >> > >> +static void test_acpi_piix4_tcg_pxb(void) > >> +{ > >> + test_data data; > >> + > >> + memset(&data, 0, sizeof(data)); > >> + data.machine = MACHINE_PC; > >> + data.variant = ".pxb"; > >> + data.required_struct_types = base_required_struct_types; > >> + data.required_struct_types_len = > >> ARRAY_SIZE(base_required_struct_types); > >> + test_acpi_one("-machine accel=tcg" > >> + " -device pxb,id=pxb,bus_nr=0x80,bus=pci.0" > >> + " -object > >> memory-backend-file,size=1G,mem-path=/tmp/shmem,share,id=mb" > >> + " -device ivshmem-plain,memdev=mb,bus=pxb", > >> + &data); > >> + free_test_data(&data); > >> +} > >> + > >> +static void test_acpi_q35_tcg_pxb_pcie(void) > >> +{ > >> + test_data data; > >> + > >> + memset(&data, 0, sizeof(data)); > >> + data.machine = MACHINE_Q35; > >> + data.variant = ".pxb_pcie"; > >> + data.required_struct_types = base_required_struct_types; > >> + data.required_struct_types_len = > >> ARRAY_SIZE(ipmi_required_struct_types); > >> + test_acpi_one("-machine q35,accel=tcg" > >> + " -device pxb-pcie,id=pxb,bus_nr=0x80,bus=pcie.0" > >> + " -device ioh3420,id=rp,bus=pxb,slot=1" > >> + " -object > >> memory-backend-file,size=1G,mem-path=/tmp/shmem,share,id=mb" > >> + " -device ivshmem-plain,memdev=mb,bus=rp", > >> + &data); > >> + free_test_data(&data); > >> +} > >> + > >> int main(int argc, char *argv[]) > >> { > >> const char *arch = qtest_get_arch(); > >> @@ -884,6 +919,8 @@ int main(int argc, char *argv[]) > >> qtest_add_func("acpi/q35/tcg/ipmi", test_acpi_q35_tcg_ipmi); > >> qtest_add_func("acpi/piix4/tcg/cpuhp", test_acpi_piix4_tcg_cphp); > >> qtest_add_func("acpi/q35/tcg/cpuhp", test_acpi_q35_tcg_cphp); > >> + qtest_add_func("acpi/piix4/tcg/pxb", test_acpi_piix4_tcg_pxb); > >> + qtest_add_func("acpi/q35/tcg/pxb-pcie", > >> test_acpi_q35_tcg_pxb_pcie); > >> } > >> ret = g_test_run(); > >> boot_sector_cleanup(disk); > > > >