aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Mammedov <imammedo@redhat.com>2019-05-02 16:51:52 +0200
committerMichael S. Tsirkin <mst@redhat.com>2019-05-20 18:40:02 -0400
commit9c0418852b6ed8fc677211767b11e4fdecc51a6e (patch)
tree9699c8b85faaac47f34029bd7928a3b4c4fa05b4
parentf2f616cea44018c8280795f40ce66b04a164dfa8 (diff)
tests: acpi: make pointer to RSDP 64bit
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 <imammedo@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <1556808723-226478-5-git-send-email-imammedo@redhat.com> Reviewed-by: Wei Yang <richardw.yang@linux.intel.com> Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--tests/acpi-utils.c2
-rw-r--r--tests/acpi-utils.h2
-rw-r--r--tests/bios-tables-test.c10
3 files changed, 6 insertions, 8 deletions
diff --git a/tests/acpi-utils.c b/tests/acpi-utils.c
index a0d49c4371..c216b9e0e9 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/acpi-utils.h b/tests/acpi-utils.h
index a4f43a18ae..0ceb499469 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/bios-tables-test.c b/tests/bios-tables-test.c
index d6ab1218da..a164d274a2 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));