mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-23 07:39:22 +00:00
kern/acpi: Use xsdt_addr if present
According to the ACPI specification, in ACPI 2.0 or later, an ACPI-compatible OS must use the XSDT if present. So, we should use xsdt_addr instead of rsdt_addr if xsdt_addr is valid. Signed-off-by: Qiumiao Zhang <zhangqiumiao1@huawei.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
1 parent
b2b477e6b2
commit
4fb58cf0af
1 file changed
+6
-6
@@ -101,12 +101,6 @@ grub_acpi_find_table (const char *sig)
|
|||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
rsdpv2 = grub_machine_acpi_get_rsdpv2 ();
|
rsdpv2 = grub_machine_acpi_get_rsdpv2 ();
|
||||||
if (rsdpv2)
|
|
||||||
r = grub_acpi_rsdt_find_table ((struct grub_acpi_table_header *)
|
|
||||||
(grub_addr_t) rsdpv2->rsdpv1.rsdt_addr,
|
|
||||||
sig);
|
|
||||||
if (r)
|
|
||||||
return r;
|
|
||||||
if (rsdpv2
|
if (rsdpv2
|
||||||
#if GRUB_CPU_SIZEOF_VOID_P != 8
|
#if GRUB_CPU_SIZEOF_VOID_P != 8
|
||||||
&& !(rsdpv2->xsdt_addr >> 32)
|
&& !(rsdpv2->xsdt_addr >> 32)
|
||||||
@@ -117,6 +111,12 @@ grub_acpi_find_table (const char *sig)
|
|||||||
sig);
|
sig);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
if (rsdpv2)
|
||||||
|
r = grub_acpi_rsdt_find_table ((struct grub_acpi_table_header *)
|
||||||
|
(grub_addr_t) rsdpv2->rsdpv1.rsdt_addr,
|
||||||
|
sig);
|
||||||
|
if (r)
|
||||||
|
return r;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user