[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #53895] "acpI" command uses RSDT instead of XSDT

From: Steven Noonan
Subject: [bug #53895] "acpI" command uses RSDT instead of XSDT
Date: Mon, 14 May 2018 04:16:02 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36


                 Summary: "acpI" command uses RSDT instead of XSDT
                 Project: GNU GRUB
            Submitted by: neunon
            Submitted on: Mon 14 May 2018 08:16:00 AM UTC
                Category: Booting
                Severity: Major
                Priority: 5 - Normal
              Item Group: None
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
                 Release: Git master
         Reproducibility: Every Time
         Planned Release: None



I had intended to use this in my grub config:

> acpi --exclude BGRT

Which makes it so that Windows will correctly display a logo on boot, even if
the UEFI firmware has already displayed one on the screen (it gets clobbered
when GRUB renders anyway, so it's not useful).

It worked, but it caused an unexpected problem.

It turns out my system has two different versions of the FADT. I have one with
revision 2 living in the RSDT pointer list, and one with revision 5 living in
the XSDT pointer list. When running the "acpi" command, it sort of does the
wrong thing. It constructs ACPI tables from the pointers in the RSDT pointer
list, and seems to drop the contents of the XSDT on the floor.

(Incidentally, the revision 5 copy of the FADT is the better one for Windows
to use, in my case. Both copies of the table have the
LOW_POWER_S0_IDLE_CAPABLE flag set, but since that's an ACPIv5 feature,
Windows ignores the flag in the rev2 copy of the FADT. Since my system has
working S0 "modern standby" but completely broken S3 sleep, I really need the
revision 5 version of the table.)

It's easy to observe the "acpi" command behavior by doing something like:

> lsacpi

In my case, there are two sets of ACPI tables listed, the ones pointed at by
RSDT and the ones pointed at by XSDT. 

Now remove BGRT:

> acpi --exclude BGRT

And seeing the results:

> lsacpi

And in my particular case, it's clear that the "acpi" command is only
considering the contents of the RSDT when doing its work.

I've attached a very rough patch that solved this issue for my case, but it's
probably the wrong solution. It seems like the "acpi" command should really be
doing work agianst both the RSDT and the XSDT and preserving both of them.


File Attachments:

Date: Mon 14 May 2018 08:16:00 AM UTC  Name:
rough-patch-use-xsdt-over-rsdt.patch  Size: 2KiB   By: neunon



Reply to this item at:


  Message sent via Savannah

reply via email to

[Prev in Thread] Current Thread [Next in Thread]