[ltp] Re: [RESEND] [PATCH 2/3] Introduce acpi_root_table=rsdt boot param and dmi list to force rsdt

Thomas Renninger linux-thinkpad@linux-thinkpad.org
Tue, 21 Oct 2008 11:57:44 +0200


On Monday 20 October 2008 19:58:14 Matthew Garrett wrote:
> On Mon, Oct 20, 2008 at 03:51:24PM -0200, Henrique de Moraes Holschuh wrote:
> > On Mon, 20 Oct 2008, Matthew Garrett wrote:
> > > But *why* is Vista not showing the symptoms?
> >
> > I very much doubt anyone ever attempted to run Vista on a R40e or a R50e.
> > It probably won't work well on the T4x/R51/R52 either, but I haven't
> > tried.
>
> I'd be surprised if nobody has done it. The hardware is above the
> minimum spec.
>
> > > values in the table were never caught because, for some reason, Windows
> > > never used them. The bug is that we're not using the same heuristic as
> > > Windows. Applying a static list of hardware just results in it being
> > > likely that we'll never fix that bug.
> >
> > I am a bit lost, now.  Are you talking about newer ThinkPads with
> > Vista-capable BIOSes, or the older ones that can't handle it and thus are
> > only subject to some ACPI access patterns when running Linux?
>
> The R40e and R50e have differing values in the RSDT and XSDT tables.
> Linux uses the values from the XSDT, which apparently results in a
> system hang whenever you attempt to perform C-state manipulation. Using
> the RSDT values instead avoids this. Windows works fine, so is clearly
> using the RSDT values. However, we have no knowledge of what mechanism
> Windows uses to choose between the two sets of values.

Yes we have:
 - XP uses 32 bit addresses
 - Vista uses the newer FADT revision and there the 64 bit addresses.

This information is from BIOS engineers who should know Windows behaviour much 
better than we ever could.

You may still want to install Windows and do some tests, I won't.
Until you find a better solution (I really tried and I doubt there is one), 
please don't block these patches again.

The problem is known for a year now, the patches are posted the third time and 
still the machines are broken mainline, because some people don't like the 
blacklist, want to do it more generic, but have no idea how to do that. Maybe 
you have, then please speak up.

The problem you try to solve is:
Can it be detected whether the system supports Vista at FADT parse time.
Do you have a solution or at least an idea for that?
Do you have another (unintrusive for old machines) idea?

IMO:
  - This is not possible.
  - This shouldn't be done anyway. You would change the behaviour of all
    old machines (Be aware that there may be server BIOSes which
    explicitly did it the right thing for Linux, not caring about Windows XP).
    All this for two BIOSes for which Lenovo admits that they are broken.

The right thing to do (at least for now) is to blacklist these two broken 
BIOSes.
If there really should be other machines having such an issue you now have the 
boot param to test easily, but I doubt you find more machines with this 
problem.

Thanks,

      Thomas