lkml.org 
[lkml]   [2003]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
SubjectRe: [ACPI] PaceBlade broken acpi/memory map
From
On Thu, Feb 20, 2003 at 06:21:45PM +0100, Pavel Machek wrote:
> Hi!
>
> I have PaceBlade here, and its memory map is wrong, which leads to
> ACPI refusing to load. [It does not mention "ACPI data" in the memory
> map at all!]

I have made those patches to workaround that. I have no time
to rediff it though (sorry), but it is easy to get it. I also CC
to Robert Woerle because he has already send a PR to the
bios mainteners.

>
> And when I work around that, it crashes in processing _STA/_INI
> methods. [Anyone from PaceBlade listening?]

Don't know what happens: I have no paceblade and it sound like it
is OK for Robert ?


this one is bad. Only here in order to get the second diff apply cleanly.


--- linux-2.4.21-pre3-acpi-20030109-s4bios/arch/i386/kernel/setup.c 2003/01/22 12:37:35 1.1
+++ linux-2.4.21-pre3-acpi-20030109-s4bios/arch/i386/kernel/setup.c 2003/01/22 13:44:06
@@ -546,6 +546,12 @@
if (*pnr_map < 2)
return -1;

+ biosmap[(int) *pnr_map].addr = 0x0eef0000;
+ biosmap[(int) *pnr_map].size = 53248;
+ biosmap[(int) *pnr_map].type = E820_ACPI;
+ (*pnr_map)++;
+
+
old_nr = *pnr_map;

/* bail out if we find any unreasonable addresses in bios map */




This one is the good one. Need to be rediffed correctly, or to be changed for 2.5.


--- linux-2.4.21-pre3-acpi-20030109-s4bios/arch/i386/kernel/setup.c 2003/01/27 13:46:37 1.2
+++ linux-2.4.21-pre3-acpi-20030109-s4bios/arch/i386/kernel/setup.c 2003/01/27 14:13:28
@@ -546,10 +546,47 @@
if (*pnr_map < 2)
return -1;

+ /*
+ * For broken BIOS which do not declare an ACPI DATA properly,
+ * even though ACPI NVS are here, we try to declare the 64ko as
+ * ACPI DATA (and hope it will work).
+ */
+ do {
+ int i;
+ int seen = 0;
+ struct e820entry new_entry;
+
+ old_nr = *pnr_map;
+ memset(&new_entry, 0, sizeof (new_entry));
+
+ for (i = 0; i < old_nr; i++) {
+ switch (biosmap[i].type) {
+ case E820_ACPI:
+ seen = 1;
+ break;
+ case E820_NVS:
+ new_entry.addr = biosmap[i].addr - 0x10000;
+ new_entry.size = 0x10000;
+ new_entry.type = E820_ACPI;
+ break;
+ default:
+ break;
+ }
+ }
+ if (!seen && new_entry.type == E820_ACPI) {
+ printk(KERN_WARNING "setup: found a ACPI NV region, but no ACPI DATA. Trying to mark\n");
+ printk(KERN_WARNING "setup: %016Lx of size %016Lx as ACPI DATA.\n", new_entry.addr, new_entry.size);
+ memcpy(&biosmap[(int) *pnr_map], &new_entry, sizeof(new_entry));
+ (*pnr_map)++;
+ }
+ } while (0);
+
+#if 0
biosmap[(int) *pnr_map].addr = 0x0eef0000;
biosmap[(int) *pnr_map].size = 53248;
biosmap[(int) *pnr_map].type = E820_ACPI;
(*pnr_map)++;
+#endif


old_nr = *pnr_map;


It is much better to kill the lines in #if 0 ... #endif of course.

Cheers,

--
Ducrot Bruno

-- Which is worse: ignorance or apathy?
-- Don't know. Don't care.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:33    [W:0.057 / U:0.200 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site