Module Name: src Committed By: maxv Date: Mon Jul 25 12:11:40 UTC 2016
Modified Files: src/sys/arch/x86/include: pmap.h src/sys/arch/x86/x86: lapic.c pmap.c Log Message: The L1 entry of the first page of the data segment is overwritten for the LAPIC page, and set as RWX+PG_N. The LAPIC pa is fixed, and its va resides in the data segment. Because of this error-prone design, the kernel image map is not linear, and I first thought it was a bug (as I vaguely said in PR/51148). Using large pages for the data segment is therefore wrong, since the first page does not actually belong to the data segment (even if its va is in the range). This bug is not triggered currently, since local_apic is not large-page-aligned. We will certainly have to allocate a va dynamically instead of using the first page of data; but for now, disable large pages on the data segment, and map the LAPIC as RW. This is the last x86-specific RWX page. To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/arch/x86/include/pmap.h cvs rdiff -u -r1.51 -r1.52 src/sys/arch/x86/x86/lapic.c cvs rdiff -u -r1.216 -r1.217 src/sys/arch/x86/x86/pmap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.