On Mon, 06 Mar 2000, you wrote:
> Whats the patch? How do you do the noapic at lilo? What the hell is APIC?
>
Ok. Here's the patch. It's for kernel 2.3.45. You need to
install THAT kernel, and then patch it with the attached
patch (my apologies to the list for sending a binary...)
I'm not sure WHAT APIC is, but to use it at LILO, just type
"<boot image name> noapic", i.e. "linux noapic" and hit
enter.
John
--- linux/include/asm-i386/pgtable.h.orig3 Mon Feb 14 09:59:19 2000
+++ linux/include/asm-i386/pgtable.h Mon Feb 14 09:59:22 2000
@@ -130,7 +130,8 @@
* area for the same reason. ;)
*/
#define VMALLOC_OFFSET (8*1024*1024)
-#define VMALLOC_START (((unsigned long) high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
+#define VMALLOC_START (((unsigned long) high_memory + 2*VMALLOC_OFFSET-1) & \
+ ~(VMALLOC_OFFSET-1))
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
#define VMALLOC_END (FIXADDR_START)
--- linux/arch/i386/mm/init.c.orig3 Mon Feb 14 09:46:02 2000
+++ linux/arch/i386/mm/init.c Mon Feb 14 09:56:57 2000
@@ -307,27 +307,30 @@
pmd_t *pmd;
pte_t *pte;
int i, j, k;
- unsigned long vaddr;
- unsigned long end = (unsigned long)__va(max_low_pfn*PAGE_SIZE);
+ unsigned long vaddr, end;
- pgd_base = swapper_pg_dir;
+ end = (unsigned long)__va(max_low_pfn*PAGE_SIZE) - 1;
- vaddr = PAGE_OFFSET;
- i = __pgd_offset(vaddr);
+ i = __pgd_offset(PAGE_OFFSET);
+ pgd_base = swapper_pg_dir;
pgd = pgd_base + i;
- for (; (i < PTRS_PER_PGD) && (vaddr <= end); pgd++, i++) {
+ for (; i < PTRS_PER_PGD; pgd++, i++) {
vaddr = i*PGDIR_SIZE;
+ if (vaddr >= end)
+ break;
#if CONFIG_X86_PAE
- pmd = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE);
+ pmd = (pmd_t *) alloc_bootmem_pages(PAGE_SIZE);
set_pgd(pgd, __pgd(__pa(pmd) + 0x1));
#else
pmd = (pmd_t *)pgd;
#endif
if (pmd != pmd_offset(pgd, 0))
BUG();
- for (j = 0; (j < PTRS_PER_PMD) && (vaddr <= end); pmd++, j++) {
+ for (j = 0; j < PTRS_PER_PMD; pmd++, j++) {
vaddr = i*PGDIR_SIZE + j*PMD_SIZE;
+ if (vaddr >= end)
+ break;
if (cpu_has_pse) {
unsigned long __pe;
@@ -349,10 +352,10 @@
if (pte != pte_offset(pmd, 0))
BUG();
- for (k = 0;
- (k < PTRS_PER_PTE) && (vaddr <= end);
- pte++, k++) {
+ for (k = 0; k < PTRS_PER_PTE; pte++, k++) {
vaddr = i*PGDIR_SIZE + j*PMD_SIZE + k*PAGE_SIZE;
+ if (vaddr >= end)
+ break;
*pte = mk_pte_phys(__pa(vaddr), PAGE_KERNEL);
}
}
--- linux/arch/i386/kernel/io_apic.c.orig3 Mon Feb 14 09:34:59 2000
+++ linux/arch/i386/kernel/io_apic.c Mon Feb 14 09:35:02 2000
@@ -1406,7 +1406,6 @@
{
if (!smp_found_config)
return;
- phys_cpu_present_map = 0xff;
setup_local_APIC();
setup_IO_APIC();
setup_APIC_clocks();