View | Details | Raw Unified | Return to bug 2990
Collapse All | Expand All

(-)1.125/arch/i386/kernel/setup.c (+12 lines)
Lines 49-54 Link Here
49
#include <asm/ist.h>
49
#include <asm/ist.h>
50
#include <asm/io.h>
50
#include <asm/io.h>
51
#include "setup_arch_pre.h"
51
#include "setup_arch_pre.h"
52
#include <bios_ebda.h>
52
53
53
/* This value is set up by the early boot code to point to the value
54
/* This value is set up by the early boot code to point to the value
54
   immediately after the boot time page tables.  It contains a *physical*
55
   immediately after the boot time page tables.  It contains a *physical*
Lines 991-996 Link Here
991
	}
992
	}
992
}
993
}
993
994
995
static void __init reserve_ebda_region(void)
996
{
997
	unsigned int addr;
998
	addr = get_bios_ebda();
999
	if (addr)
1000
		reserve_bootmem(addr, PAGE_SIZE);	
1001
}
1002
994
static unsigned long __init setup_memory(void)
1003
static unsigned long __init setup_memory(void)
995
{
1004
{
996
	unsigned long bootmap_size, start_pfn, max_low_pfn;
1005
	unsigned long bootmap_size, start_pfn, max_low_pfn;
Lines 1036-1041 Link Here
1036
	 * enabling clean reboots, SMP operation, laptop functions.
1045
	 * enabling clean reboots, SMP operation, laptop functions.
1037
	 */
1046
	 */
1038
	reserve_bootmem(0, PAGE_SIZE);
1047
	reserve_bootmem(0, PAGE_SIZE);
1048
1049
	/* reserve EBDA region, it's a 4K region */
1050
	reserve_ebda_region();
1039
1051
1040
    /* could be an AMD 768MPX chipset. Reserve a page  before VGA to prevent
1052
    /* could be an AMD 768MPX chipset. Reserve a page  before VGA to prevent
1041
       PCI prefetch into it (errata #56). Usually the page is reserved anyways,
1053
       PCI prefetch into it (errata #56). Usually the page is reserved anyways,
(-)1.18/arch/i386/mm/discontig.c (+12 lines)
Lines 31-36 Link Here
31
#include <asm/e820.h>
31
#include <asm/e820.h>
32
#include <asm/setup.h>
32
#include <asm/setup.h>
33
#include <asm/mmzone.h>
33
#include <asm/mmzone.h>
34
#include <bios_ebda.h>
34
35
35
struct pglist_data *node_data[MAX_NUMNODES];
36
struct pglist_data *node_data[MAX_NUMNODES];
36
bootmem_data_t node0_bdata;
37
bootmem_data_t node0_bdata;
Lines 230-235 Link Here
230
	return reserve_pages;
231
	return reserve_pages;
231
}
232
}
232
233
234
static void __init reserve_ebda_region_node(void)
235
{
236
	unsigned int addr;
237
	addr = get_bios_ebda();
238
	if (addr)
239
		reserve_bootmem_node(NODE_DATA(0), addr, PAGE_SIZE);
240
}
241
233
unsigned long __init setup_memory(void)
242
unsigned long __init setup_memory(void)
234
{
243
{
235
	int nid;
244
	int nid;
Lines 313-318 Link Here
313
	 * trampoline before removing it. (see the GDT stuff)
322
	 * trampoline before removing it. (see the GDT stuff)
314
	 */
323
	 */
315
	reserve_bootmem_node(NODE_DATA(0), PAGE_SIZE, PAGE_SIZE);
324
	reserve_bootmem_node(NODE_DATA(0), PAGE_SIZE, PAGE_SIZE);
325
326
	/* reserve EBDA region, it's a 4K region */
327
	reserve_ebda_region_node();
316
328
317
#ifdef CONFIG_ACPI_SLEEP
329
#ifdef CONFIG_ACPI_SLEEP
318
	/*
330
	/*
(-)1.45/arch/x86_64/kernel/setup.c (+17 lines)
Lines 423-428 Link Here
423
}
423
}
424
#endif
424
#endif
425
425
426
#define EBDA_ADDR_POINTER 0x40E
427
static void __init reserve_ebda_region(void)
428
{
429
	unsigned int addr;
430
	/** 
431
	 * there is a real-mode segmented pointer pointing to the 
432
	 * 4K EBDA area at 0x40E
433
	 */
434
	addr = *(unsigned short *)phys_to_virt(EBDA_ADDR_POINTER);
435
	addr <<= 4;
436
	if (addr)
437
		reserve_bootmem_generic(addr, PAGE_SIZE);
438
}
439
426
void __init setup_arch(char **cmdline_p)
440
void __init setup_arch(char **cmdline_p)
427
{
441
{
428
	unsigned long low_mem_size;
442
	unsigned long low_mem_size;
Lines 486-491 Link Here
486
	 * enabling clean reboots, SMP operation, laptop functions.
500
	 * enabling clean reboots, SMP operation, laptop functions.
487
	 */
501
	 */
488
	reserve_bootmem_generic(0, PAGE_SIZE);
502
	reserve_bootmem_generic(0, PAGE_SIZE);
503
504
	/* reserve ebda region */
505
	reserve_ebda_region();
489
506
490
#ifdef CONFIG_SMP
507
#ifdef CONFIG_SMP
491
	/*
508
	/*

Return to bug 2990