svn commit: r297954 - in head/sys: boot/efi/loader/arch/amd64 boot/i386/libi386 x86/acpica

Warner Losh imp at bsdimp.com
Thu Apr 14 16:43:41 UTC 2016


On Thu, Apr 14, 2016 at 2:22 AM, Andrew Turner <andrew at fubar.geek.nz> wrote:

> On Thu, 14 Apr 2016 04:59:51 +0000 (UTC)
> Warner Losh <imp at FreeBSD.org> wrote:
>
> > Author: imp
> > Date: Thu Apr 14 04:59:51 2016
> > New Revision: 297954
> > URL: https://svnweb.freebsd.org/changeset/base/297954
> >
> > Log:
> >   Deprecate using hints.acpi.0.rsdp to communicate the RSDP to the
> >   system. This uses the hints mechnanism. This mostly works today
> >   because when there's no static hints (the default), this value can
> > be fetched from the hint. When there is a static hints file, the hint
> >   passed from the boot loader to the kernel is ignored, but for the
> > BIOS case we're able to find it anyway. However, with UEFI, the
> > fallback doesn't work, so we get a panic instead.
> >
> >   Switch to acpi.rsdp and use TUNABLE_ULONG_FETCH instead. Continue to
> >   generate the old values to allow for transitions. In addition, fall
> >   back to the old method if the new method isn't present.
> >
> >   Add comments about all this.
> >
> >   Differential Revision: https://reviews.freebsd.org/D5866
>
> Why not pass it in using module data as we do with the DTB? It would
> fix issues where we have either or both static hints and a stat env.
>

I viewed that as brittle. And it was longer to code. This works with static
hints, but not static env. Static env tends not to be used on x86.

I'm open to putting it into module data as a more robust solution. I just
didn't have the extra time it would take to do so at the moment.


> Whatever method is decided we will also need it on arm64 as we claim to
> support ACPI there, although no backwards compatibility will be needed
> as the code is most likely broken as it's only partially been tested.
>

Yes. The issue is with ACPI + UEFI. With ACPI + BIOS, we could find
things always, and this didn't matter. This change doesn't change that.
But for UEFI, the RSDP table can be (and often is) located in areas
the code doesn't search.

We likely need to unify more than just passing in the RSDP, since if we want
to callout to UEFI after the kernel has booted, there's a number of other
things that need to be passed as well. I have a review that gets this
working
on x86 that I'll open up when more of my backlog has been pushed into
the tree. I'll be sure to include you.

Warner


More information about the svn-src-head mailing list