Date: Thu, 31 Jan 2008 16:51:43 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/amd64/acpica madt.c src/sys/i386/acpica madt.c Message-ID: <200801311651.m0VGphTX073883@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jhb 2008-01-31 16:51:43 UTC FreeBSD src repository Modified files: sys/amd64/acpica madt.c sys/i386/acpica madt.c Log: For no good reason I had assumed that ACPI table headers would be page aligned (or at least not cross a page boundary). However, it turns out that on at least one machine one table header does cross a page boundary. This caused problems with the MADT early probe as it uses the crash dump map to load ACPI tables by loading the RSDT/XSDT into pages 1 ... N and loading the header of each ACPI table header into page 0 looking for the MADT. However, if a table header crossed a page boundary, then page 1 would get trashed resulting in a panic. Fix this by reserving the first 2 pages for ACPI table headers (headers are less than a page in size, so 2 pages will be sufficient) and use pages 2 .. N for the RSDT and XSDT. Note: amd64 should probably be simplified to just use pmap_mapbios() for all these tables which will use the direct map and not need the crash dump hack. MFC after: 5 days Tested on: i386 Reported by: Pete French petefrench of ticketswitch.com Revision Changes Path 1.25 +7 -5 src/sys/amd64/acpica/madt.c 1.29 +7 -5 src/sys/i386/acpica/madt.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200801311651.m0VGphTX073883>