|
View:
New views
12 Messages
—
Rating Filter:
Alert me
|
|
|
libi386/biosacpi.c - bad RSDP checksum searchOur boot loader stops searching memory at the first occurrence of
"RSD PTR" while there are BIOSes (e.g. some IBM System x) that have multiple such strings and the first one does not contain the correct checksum. The acpi-ca code does the right thing and continues the search. Any ACPI experts interested in fixing this? I'll be ready to test. Here are some references: http://www.mail-archive.com/linux-acpi@.../msg11812.html http://bugzilla.kernel.org/show_bug.cgi?id=9444 _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Tuesday 08 December 2009 1:03:40 am Andrew Pantyukhin wrote:
> Our boot loader stops searching memory at the first occurrence of > "RSD PTR" while there are BIOSes (e.g. some IBM System x) that > have multiple such strings and the first one does not contain the > correct checksum. > > The acpi-ca code does the right thing and continues the search. > > Any ACPI experts interested in fixing this? I'll be ready to > test. Are you sure? It looks like it keeps going if the checksum fails. Note the 'continue' after the printf() about a bad checksum. /* * Find the RSDP in low memory. See section 5.2.2 of the ACPI spec. */ static ACPI_TABLE_RSDP * biosacpi_find_rsdp(void) { ACPI_TABLE_RSDP *rsdp; uint16_t *addr; /* EBDA is the 1 KB addressed by the 16 bit pointer at 0x40E. */ addr = (uint16_t *)PTOV(0x40E); if ((rsdp = biosacpi_search_rsdp((char *)(*addr << 4), 0x400)) != NULL) return (rsdp); /* Check the upper memory BIOS space, 0xe0000 - 0xfffff. */ if ((rsdp = biosacpi_search_rsdp((char *)0xe0000, 0x20000)) != NULL) return (rsdp); return (NULL); } static ACPI_TABLE_RSDP * biosacpi_search_rsdp(char *base, int length) { ACPI_TABLE_RSDP *rsdp; u_int8_t *cp, sum; int ofs, idx; /* search on 16-byte boundaries */ for (ofs = 0; ofs < length; ofs += 16) { rsdp = (ACPI_TABLE_RSDP *)PTOV(base + ofs); /* compare signature, validate checksum */ if (!strncmp(rsdp->Signature, ACPI_SIG_RSDP, strlen(ACPI_SIG_RSDP))) { cp = (u_int8_t *)rsdp; sum = 0; for (idx = 0; idx < RSDP_CHECKSUM_LENGTH; idx++) sum += *(cp + idx); if (sum != 0) { printf("acpi: bad RSDP checksum (%d)\n", sum); continue; } return(rsdp); } } return(NULL); } -- John Baldwin _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Tue, Dec 08, 2009 at 07:49:55AM -0500, John Baldwin wrote:
> Are you sure? It looks like it keeps going if the checksum > fails. Note the 'continue' after the printf() about a bad > checksum. Oops. I obviously made a wrong assumption. I'll try to confirm. I think the warning should be made less final: i.e. either do not print it unless no correct RSDP has been found or print a success message when it has. Sorry for the noise. _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Tue, Dec 08, 2009 at 04:49:13PM +0300, Andrew Pantyukhin wrote:
> Oops. I obviously made a wrong assumption. I'll try to confirm. Yep, the good RSDP is found later. So I think either a "bad checksum" should be followed by a "good checksum" or it should only be printed if no good RSDP has been found. Attached are a couple of alternative tiny patches. Otherwise, a FAQ entry should be added to keep the mere mortals like me from wondering about the error message. FWIW, it comes up on many (most?) IBM System x machines. Index: biosacpi.c =================================================================== --- biosacpi.c (revision 200054) +++ biosacpi.c (working copy) @@ -129,6 +129,7 @@ printf("acpi: bad RSDP checksum (%d)\n", sum); continue; } + printf("acpi: good RSDP checksum (%d)\n", sum); return(rsdp); } } Index: biosacpi.c =================================================================== --- biosacpi.c (revision 200054) +++ biosacpi.c (working copy) @@ -125,12 +125,12 @@ sum = 0; for (idx = 0; idx < RSDP_CHECKSUM_LENGTH; idx++) sum += *(cp + idx); - if (sum != 0) { - printf("acpi: bad RSDP checksum (%d)\n", sum); + if (sum != 0) continue; - } return(rsdp); } } + if (sum != 0) + printf("acpi: no RSDP with good checksum found\n"); return(NULL); } _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Wednesday 09 December 2009 5:32:49 am Andrew Pantyukhin wrote:
> On Tue, Dec 08, 2009 at 04:49:13PM +0300, Andrew Pantyukhin wrote: > > Oops. I obviously made a wrong assumption. I'll try to confirm. > > Yep, the good RSDP is found later. > > So I think either a "bad checksum" should be followed by a "good > checksum" or it should only be printed if no good RSDP has been > found. Attached are a couple of alternative tiny patches. > > Otherwise, a FAQ entry should be added to keep the mere mortals > like me from wondering about the error message. FWIW, it comes up > on many (most?) IBM System x machines. We can probably just drop the message altogether I think. The ACPI stuff the loader does is just advisory. The kernel will give more detailed notes about a bad checksum if needed. -- John Baldwin _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Wed, Dec 09, 2009 at 10:02:55AM -0500, John Baldwin wrote:
> We can probably just drop the message altogether I think. The > ACPI stuff the loader does is just advisory. The kernel will > give more detailed notes about a bad checksum if needed. Agreed, looks like a leftover debug message. Can you commit if there's no objection? _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
RE: libi386/biosacpi.c - bad RSDP checksum searchMight be a dumb question, but why is the bootloader looking around for ACPI tables in the first place?
Thanks, Bob >-----Original Message----- >From: owner-freebsd-acpi@... [mailto:owner-freebsd- >acpi@...] On Behalf Of John Baldwin >Sent: Tuesday, December 08, 2009 4:50 AM >To: freebsd-acpi@... >Cc: Andrew Pantyukhin >Subject: Re: libi386/biosacpi.c - bad RSDP checksum search > >On Tuesday 08 December 2009 1:03:40 am Andrew Pantyukhin wrote: >> Our boot loader stops searching memory at the first occurrence of >> "RSD PTR" while there are BIOSes (e.g. some IBM System x) that >> have multiple such strings and the first one does not contain the >> correct checksum. >> >> The acpi-ca code does the right thing and continues the search. >> >> Any ACPI experts interested in fixing this? I'll be ready to >> test. > >Are you sure? It looks like it keeps going if the checksum fails. Note >the >'continue' after the printf() about a bad checksum. > >/* > * Find the RSDP in low memory. See section 5.2.2 of the ACPI spec. > */ >static ACPI_TABLE_RSDP * >biosacpi_find_rsdp(void) >{ > ACPI_TABLE_RSDP *rsdp; > uint16_t *addr; > > /* EBDA is the 1 KB addressed by the 16 bit pointer at 0x40E. */ > addr = (uint16_t *)PTOV(0x40E); > if ((rsdp = biosacpi_search_rsdp((char *)(*addr << 4), 0x400)) != NULL) > return (rsdp); > > /* Check the upper memory BIOS space, 0xe0000 - 0xfffff. */ > if ((rsdp = biosacpi_search_rsdp((char *)0xe0000, 0x20000)) != NULL) > return (rsdp); > > return (NULL); >} > >static ACPI_TABLE_RSDP * >biosacpi_search_rsdp(char *base, int length) >{ > ACPI_TABLE_RSDP *rsdp; > u_int8_t *cp, sum; > int ofs, idx; > > /* search on 16-byte boundaries */ > for (ofs = 0; ofs < length; ofs += 16) { > rsdp = (ACPI_TABLE_RSDP *)PTOV(base + ofs); > > /* compare signature, validate checksum */ > if (!strncmp(rsdp->Signature, ACPI_SIG_RSDP, strlen(ACPI_SIG_RSDP))) >{ > cp = (u_int8_t *)rsdp; > sum = 0; > for (idx = 0; idx < RSDP_CHECKSUM_LENGTH; idx++) > sum += *(cp + idx); > if (sum != 0) { > printf("acpi: bad RSDP checksum (%d)\n", sum); > continue; > } > return(rsdp); > } > } > return(NULL); >} > >-- >John Baldwin >_______________________________________________ >freebsd-acpi@... mailing list >http://lists.freebsd.org/mailman/listinfo/freebsd-acpi >To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Wednesday 09 December 2009 01:46 pm, Moore, Robert wrote:
> Might be a dumb question, but why is the bootloader looking around > for ACPI tables in the first place? FreeBSD/i386 bootloader loads ACPI kernel module if the root pointer is found and ACPI is not disabled by user. Then, the pointer is passed to kernel as a hint for AcpiOsGetRootPointer() later. FreeBSD/amd64 just happened to share the same bootloader. :-) Jung-uk Kim > Thanks, > Bob > > >-----Original Message----- > >From: owner-freebsd-acpi@... [mailto:owner-freebsd- > >acpi@...] On Behalf Of John Baldwin > >Sent: Tuesday, December 08, 2009 4:50 AM > >To: freebsd-acpi@... > >Cc: Andrew Pantyukhin > >Subject: Re: libi386/biosacpi.c - bad RSDP checksum search > > > >On Tuesday 08 December 2009 1:03:40 am Andrew Pantyukhin wrote: > >> Our boot loader stops searching memory at the first occurrence > >> of "RSD PTR" while there are BIOSes (e.g. some IBM System x) > >> that have multiple such strings and the first one does not > >> contain the correct checksum. > >> > >> The acpi-ca code does the right thing and continues the search. > >> > >> Any ACPI experts interested in fixing this? I'll be ready to > >> test. > > > >Are you sure? It looks like it keeps going if the checksum fails. > > Note the > >'continue' after the printf() about a bad checksum. > > > >/* > > * Find the RSDP in low memory. See section 5.2.2 of the ACPI > > spec. */ > >static ACPI_TABLE_RSDP * > >biosacpi_find_rsdp(void) > >{ > > ACPI_TABLE_RSDP *rsdp; > > uint16_t *addr; > > > > /* EBDA is the 1 KB addressed by the 16 bit pointer at 0x40E. > > */ addr = (uint16_t *)PTOV(0x40E); > > if ((rsdp = biosacpi_search_rsdp((char *)(*addr << 4), 0x400)) > > != NULL) return (rsdp); > > > > /* Check the upper memory BIOS space, 0xe0000 - 0xfffff. */ > > if ((rsdp = biosacpi_search_rsdp((char *)0xe0000, 0x20000)) != > > NULL) return (rsdp); > > > > return (NULL); > >} > > > >static ACPI_TABLE_RSDP * > >biosacpi_search_rsdp(char *base, int length) > >{ > > ACPI_TABLE_RSDP *rsdp; > > u_int8_t *cp, sum; > > int ofs, idx; > > > > /* search on 16-byte boundaries */ > > for (ofs = 0; ofs < length; ofs += 16) { > > rsdp = (ACPI_TABLE_RSDP *)PTOV(base + ofs); > > > > /* compare signature, validate checksum */ > > if (!strncmp(rsdp->Signature, ACPI_SIG_RSDP, > > strlen(ACPI_SIG_RSDP))) { > > cp = (u_int8_t *)rsdp; > > sum = 0; > > for (idx = 0; idx < RSDP_CHECKSUM_LENGTH; idx++) > > sum += *(cp + idx); > > if (sum != 0) { > > printf("acpi: bad RSDP checksum (%d)\n", sum); > > continue; > > } > > return(rsdp); > > } > > } > > return(NULL); > >} > > > >-- > >John Baldwin > >_______________________________________________ > >freebsd-acpi@... mailing list > >http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > >To unsubscribe, send any mail to > > "freebsd-acpi-unsubscribe@..." > > _______________________________________________ > freebsd-acpi@... mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > To unsubscribe, send any mail to > "freebsd-acpi-unsubscribe@..." freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
RE: libi386/biosacpi.c - bad RSDP checksum searchPart of the reason I asked the question is because the ACPICA Table Manager (the code that scans and extracts ACPI tables) has been specifically designed to be available at any time, even before virtual memory is available and before the rest of the ACPICA subsystem is initialized. I haven't heard of this type of table scan before, but so be it. However, as you have seen, you are stuck with finding and fixing bugs that have been already resolved in the ACPICA code. Bob >-----Original Message----- >From: Jung-uk Kim [mailto:jkim@...] >Sent: Wednesday, December 09, 2009 11:37 AM >To: freebsd-acpi@... >Cc: Moore, Robert; Andrew Pantyukhin >Subject: Re: libi386/biosacpi.c - bad RSDP checksum search > >On Wednesday 09 December 2009 01:46 pm, Moore, Robert wrote: >> Might be a dumb question, but why is the bootloader looking around >> for ACPI tables in the first place? > >FreeBSD/i386 bootloader loads ACPI kernel module if the root pointer >is found and ACPI is not disabled by user. Then, the pointer is >passed to kernel as a hint for AcpiOsGetRootPointer() later. >FreeBSD/amd64 just happened to share the same bootloader. :-) > >Jung-uk Kim > >> Thanks, >> Bob >> >> >-----Original Message----- >> >From: owner-freebsd-acpi@... [mailto:owner-freebsd- >> >acpi@...] On Behalf Of John Baldwin >> >Sent: Tuesday, December 08, 2009 4:50 AM >> >To: freebsd-acpi@... >> >Cc: Andrew Pantyukhin >> >Subject: Re: libi386/biosacpi.c - bad RSDP checksum search >> > >> >On Tuesday 08 December 2009 1:03:40 am Andrew Pantyukhin wrote: >> >> Our boot loader stops searching memory at the first occurrence >> >> of "RSD PTR" while there are BIOSes (e.g. some IBM System x) >> >> that have multiple such strings and the first one does not >> >> contain the correct checksum. >> >> >> >> The acpi-ca code does the right thing and continues the search. >> >> >> >> Any ACPI experts interested in fixing this? I'll be ready to >> >> test. >> > >> >Are you sure? It looks like it keeps going if the checksum fails. >> > Note the >> >'continue' after the printf() about a bad checksum. >> > >> >/* >> > * Find the RSDP in low memory. See section 5.2.2 of the ACPI >> > spec. */ >> >static ACPI_TABLE_RSDP * >> >biosacpi_find_rsdp(void) >> >{ >> > ACPI_TABLE_RSDP *rsdp; >> > uint16_t *addr; >> > >> > /* EBDA is the 1 KB addressed by the 16 bit pointer at 0x40E. >> > */ addr = (uint16_t *)PTOV(0x40E); >> > if ((rsdp = biosacpi_search_rsdp((char *)(*addr << 4), 0x400)) >> > != NULL) return (rsdp); >> > >> > /* Check the upper memory BIOS space, 0xe0000 - 0xfffff. */ >> > if ((rsdp = biosacpi_search_rsdp((char *)0xe0000, 0x20000)) != >> > NULL) return (rsdp); >> > >> > return (NULL); >> >} >> > >> >static ACPI_TABLE_RSDP * >> >biosacpi_search_rsdp(char *base, int length) >> >{ >> > ACPI_TABLE_RSDP *rsdp; >> > u_int8_t *cp, sum; >> > int ofs, idx; >> > >> > /* search on 16-byte boundaries */ >> > for (ofs = 0; ofs < length; ofs += 16) { >> > rsdp = (ACPI_TABLE_RSDP *)PTOV(base + ofs); >> > >> > /* compare signature, validate checksum */ >> > if (!strncmp(rsdp->Signature, ACPI_SIG_RSDP, >> > strlen(ACPI_SIG_RSDP))) { >> > cp = (u_int8_t *)rsdp; >> > sum = 0; >> > for (idx = 0; idx < RSDP_CHECKSUM_LENGTH; idx++) >> > sum += *(cp + idx); >> > if (sum != 0) { >> > printf("acpi: bad RSDP checksum (%d)\n", sum); >> > continue; >> > } >> > return(rsdp); >> > } >> > } >> > return(NULL); >> >} >> > >> >-- >> >John Baldwin >> >_______________________________________________ >> >freebsd-acpi@... mailing list >> >http://lists.freebsd.org/mailman/listinfo/freebsd-acpi >> >To unsubscribe, send any mail to >> > "freebsd-acpi-unsubscribe@..." >> >> _______________________________________________ >> freebsd-acpi@... mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi >> To unsubscribe, send any mail to >> "freebsd-acpi-unsubscribe@..." freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Wednesday 09 December 2009 1:43:45 pm Andrew Pantyukhin wrote:
> On Wed, Dec 09, 2009 at 10:02:55AM -0500, John Baldwin wrote: > > We can probably just drop the message altogether I think. The > > ACPI stuff the loader does is just advisory. The kernel will > > give more detailed notes about a bad checksum if needed. > > Agreed, looks like a leftover debug message. Can you commit if > there's no objection? Oh, I was going to let you commit it. If you would rather I do it that is fine as well. -- John Baldwin _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Wednesday 09 December 2009 02:59 pm, Moore, Robert wrote:
> Part of the reason I asked the question is because the ACPICA Table > Manager (the code that scans and extracts ACPI tables) has been > specifically designed to be available at any time, even before > virtual memory is available and before the rest of the ACPICA > subsystem is initialized. Although I really hate duplicate codes, bootloader is extremely small and stand-alone environment. Thus, we cannot use ACPICA there. :-( > I haven't heard of this type of table scan before, but so be it. > However, as you have seen, you are stuck with finding and fixing > bugs that have been already resolved in the ACPICA code. We are trying to get rid of any duplicate codes when found. However, FreeBSD ACPI was implemented long ago when ACPICA wasn't sophisticated enough for us at the time. Jung-uk Kim > Bob > > >-----Original Message----- > >From: Jung-uk Kim [mailto:jkim@...] > >Sent: Wednesday, December 09, 2009 11:37 AM > >To: freebsd-acpi@... > >Cc: Moore, Robert; Andrew Pantyukhin > >Subject: Re: libi386/biosacpi.c - bad RSDP checksum search > > > >On Wednesday 09 December 2009 01:46 pm, Moore, Robert wrote: > >> Might be a dumb question, but why is the bootloader looking > >> around for ACPI tables in the first place? > > > >FreeBSD/i386 bootloader loads ACPI kernel module if the root > > pointer is found and ACPI is not disabled by user. Then, the > > pointer is passed to kernel as a hint for AcpiOsGetRootPointer() > > later. FreeBSD/amd64 just happened to share the same bootloader. > > :-) > > > >Jung-uk Kim > > > >> Thanks, > >> Bob > >> > >> >-----Original Message----- > >> >From: owner-freebsd-acpi@... [mailto:owner-freebsd- > >> >acpi@...] On Behalf Of John Baldwin > >> >Sent: Tuesday, December 08, 2009 4:50 AM > >> >To: freebsd-acpi@... > >> >Cc: Andrew Pantyukhin > >> >Subject: Re: libi386/biosacpi.c - bad RSDP checksum search > >> > > >> >On Tuesday 08 December 2009 1:03:40 am Andrew Pantyukhin wrote: > >> >> Our boot loader stops searching memory at the first > >> >> occurrence of "RSD PTR" while there are BIOSes (e.g. some IBM > >> >> System x) that have multiple such strings and the first one > >> >> does not contain the correct checksum. > >> >> > >> >> The acpi-ca code does the right thing and continues the > >> >> search. > >> >> > >> >> Any ACPI experts interested in fixing this? I'll be ready to > >> >> test. > >> > > >> >Are you sure? It looks like it keeps going if the checksum > >> > fails. Note the > >> >'continue' after the printf() about a bad checksum. > >> > > >> >/* > >> > * Find the RSDP in low memory. See section 5.2.2 of the ACPI > >> > spec. */ > >> >static ACPI_TABLE_RSDP * > >> >biosacpi_find_rsdp(void) > >> >{ > >> > ACPI_TABLE_RSDP *rsdp; > >> > uint16_t *addr; > >> > > >> > /* EBDA is the 1 KB addressed by the 16 bit pointer at > >> > 0x40E. */ addr = (uint16_t *)PTOV(0x40E); > >> > if ((rsdp = biosacpi_search_rsdp((char *)(*addr << 4), > >> > 0x400)) != NULL) return (rsdp); > >> > > >> > /* Check the upper memory BIOS space, 0xe0000 - 0xfffff. */ > >> > if ((rsdp = biosacpi_search_rsdp((char *)0xe0000, 0x20000)) > >> > != NULL) return (rsdp); > >> > > >> > return (NULL); > >> >} > >> > > >> >static ACPI_TABLE_RSDP * > >> >biosacpi_search_rsdp(char *base, int length) > >> >{ > >> > ACPI_TABLE_RSDP *rsdp; > >> > u_int8_t *cp, sum; > >> > int ofs, idx; > >> > > >> > /* search on 16-byte boundaries */ > >> > for (ofs = 0; ofs < length; ofs += 16) { > >> > rsdp = (ACPI_TABLE_RSDP *)PTOV(base + ofs); > >> > > >> > /* compare signature, validate checksum */ > >> > if (!strncmp(rsdp->Signature, ACPI_SIG_RSDP, > >> > strlen(ACPI_SIG_RSDP))) { > >> > cp = (u_int8_t *)rsdp; > >> > sum = 0; > >> > for (idx = 0; idx < RSDP_CHECKSUM_LENGTH; idx++) > >> > sum += *(cp + idx); > >> > if (sum != 0) { > >> > printf("acpi: bad RSDP checksum (%d)\n", sum); > >> > continue; > >> > } > >> > return(rsdp); > >> > } > >> > } > >> > return(NULL); > >> >} > >> > > >> >-- > >> >John Baldwin > >> >_______________________________________________ > >> >freebsd-acpi@... mailing list > >> >http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > >> >To unsubscribe, send any mail to > >> > "freebsd-acpi-unsubscribe@..." > >> > >> _______________________________________________ > >> freebsd-acpi@... mailing list > >> http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > >> To unsubscribe, send any mail to > >> "freebsd-acpi-unsubscribe@..." freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
|
|
Re: libi386/biosacpi.c - bad RSDP checksum searchOn Wednesday 09 December 2009 1:46:36 pm Moore, Robert wrote:
> Might be a dumb question, but why is the bootloader looking around for ACPI > tables in the first place? I think it only does so for two different reasons. First, it sets some kernel environment variables with the locations of the RSDP as well as the RSDT or XDST. The FreeBSD version of acpidump will then use these variables if they are set instead of walking memory to find the tables. The bigger reason is that on FreeBSD/i386 ACPI can be compiled as an optional kernel module (and until 8.0 it was provided as a module rather than statically compiled into the main kernel image by default), and that the loader will automatically load the ACPI module when loading a kernel if it detects that ACPI is present. This latter functionality is largely obsolete in FreeBSD 8.0 and later though since ACPI is now compiled into the kernel by default. -- John Baldwin _______________________________________________ freebsd-acpi@... mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-acpi To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@..." |
| Free embeddable forum powered by Nabble | Forum Help |