On 5/2/19 4:51 PM, Igor Mammedov wrote: > In case of UEFI, RSDP doesn't have to be located in lowmem, > it could be placed at any address. Make sure that test won't > break if it is placed above the first 4Gb of address space. > > PS: > While at it cleanup some local variables as we don't really > need them. > > Signed-off-by: Igor Mammedov <imamm...@redhat.com> > Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>
Tested-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > v4: > - move acpi_fetch_rsdp_table(s/uint32_t addr/uint64_t addr/) to > this patch where it belongs from > "tests: acpi: make RSDT test routine handle XSDT" > (Wei Yang <richardw.y...@linux.intel.com>) > v2: > - s/In case of UEFI/In case of UEFI,/ (Laszlo Ersek <ler...@redhat.com>) > --- > tests/acpi-utils.h | 2 +- > tests/acpi-utils.c | 2 +- > tests/bios-tables-test.c | 10 ++++------ > 3 files changed, 6 insertions(+), 8 deletions(-) > > diff --git a/tests/acpi-utils.h b/tests/acpi-utils.h > index f55ccf9..1da6c10 100644 > --- a/tests/acpi-utils.h > +++ b/tests/acpi-utils.h > @@ -46,7 +46,7 @@ typedef struct { > > uint8_t acpi_calc_checksum(const uint8_t *data, int len); > uint32_t acpi_find_rsdp_address(QTestState *qts); > -void acpi_fetch_rsdp_table(QTestState *qts, uint32_t addr, uint8_t > *rsdp_table); > +void acpi_fetch_rsdp_table(QTestState *qts, uint64_t addr, uint8_t > *rsdp_table); > void acpi_fetch_table(QTestState *qts, uint8_t **aml, uint32_t *aml_len, > const uint8_t *addr_ptr, int addr_size, const char > *sig, > bool verify_checksum); > diff --git a/tests/acpi-utils.c b/tests/acpi-utils.c > index a0d49c4..c216b9e 100644 > --- a/tests/acpi-utils.c > +++ b/tests/acpi-utils.c > @@ -51,7 +51,7 @@ uint32_t acpi_find_rsdp_address(QTestState *qts) > return off; > } > > -void acpi_fetch_rsdp_table(QTestState *qts, uint32_t addr, uint8_t > *rsdp_table) > +void acpi_fetch_rsdp_table(QTestState *qts, uint64_t addr, uint8_t > *rsdp_table) > { > uint8_t revision; > > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c > index d6ab121..a164d27 100644 > --- a/tests/bios-tables-test.c > +++ b/tests/bios-tables-test.c > @@ -26,7 +26,7 @@ > typedef struct { > const char *machine; > const char *variant; > - uint32_t rsdp_addr; > + uint64_t rsdp_addr; > uint8_t rsdp_table[36 /* ACPI 2.0+ RSDP size */]; > GArray *tables; > uint32_t smbios_ep_addr; > @@ -86,13 +86,11 @@ static void test_acpi_rsdp_address(test_data *data) > > static void test_acpi_rsdp_table(test_data *data) > { > - uint8_t *rsdp_table = data->rsdp_table, revision; > - uint32_t addr = data->rsdp_addr; > + uint8_t *rsdp_table = data->rsdp_table; > > - acpi_fetch_rsdp_table(data->qts, addr, rsdp_table); > - revision = rsdp_table[15 /* Revision offset */]; > + acpi_fetch_rsdp_table(data->qts, data->rsdp_addr, rsdp_table); > > - switch (revision) { > + switch (rsdp_table[15 /* Revision offset */]) { > case 0: /* ACPI 1.0 RSDP */ > /* With rev 1, checksum is only for the first 20 bytes */ > g_assert(!acpi_calc_checksum(rsdp_table, 20)); >