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
  Log:
  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
panic
  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) */
     pmap_set_pg();
+
+    /*
+     * 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[0] = 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?





_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to