[SRC] cvs commit: src/sys/i386/acpica acpi_wakeup.c
julian at elischer.org
Wed Mar 14 23:55:01 UTC 2007
Nate Lawson wrote:
> Julian Elischer wrote:
>> Nate Lawson wrote:
>>> njl 2007-03-14 22:30:02 UTC
>>> FreeBSD src repository
>>> Modified files:
>>> sys/i386/acpica acpi_wakeup.c sys/i386/i386 pmap.c
>>> Create an identity mapping (V=P) super page for the low memory
>>> region on
>>> boot. Then, just switch to the kernel pmap when suspending instead of
>>> allocating/freeing our own mapping every time. This should solve a
>>> of pmap_remove() being called with interrupts disabled. Thanks to Alan
>>> Cox for developing this patch.
>>> Note: this means that ACPI requires super page (PG_PS) support in
>>> the CPU.
>>> This has been present since the Pentium and first documented in the
>>> Pentium Pro. However, it may need to be revisited later.
>> I thought we were still supporting 486 class machines.
>> if so, shouldn't this be somehow ifdef'd?
> Yes, that part needs to be covered although an ifdef is not necessary
> (PG_PS is defined for even 486's so this will compile).
>>> Index: src/sys/i386/i386/pmap.c
>>> diff -u src/sys/i386/i386/pmap.c:1.582 src/sys/i386/i386/pmap.c:1.583
>>> --- src/sys/i386/i386/pmap.c:1.582 Mon Mar 5 21:40:10 2007
>>> +++ src/sys/i386/i386/pmap.c Wed Mar 14 22:30:02 2007
>>> @@ -422,6 +422,13 @@
>>> /* Turn on PG_G on kernel page(s) */
>>> + /*
>>> + * Create an identity mapping (virt == phys) for the low 1 MB
>>> + * physical memory region that is used by the ACPI wakeup code.
>>> + * This mapping must not have PG_G set. + */
>>> + kernel_pmap->pm_pdir = PG_PS | PG_RW | PG_V;
> I propose conditionalizing this code on "if (pseflag)". Of course, the
> acpi suspend code will fail on 486's but we disable acpi entirely if the
> bios date < 1999/1/1 and acpi isn't supported on the 486.
as long as you are keeping this in mind,
I have no objection as to how you tackle it..
so if someone uses a 486 based embedded system (low power etc.)
they can definitely not have any acpi support in the bios?
More information about the cvs-src