Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79963
b: refs/heads/master
c: 746ef0c
h: refs/heads/master
i:
  79961: a5fafd4
  79959: af0cbbc
v: v3
  • Loading branch information
Glauber de Oliveira Costa authored and Ingo Molnar committed Jan 30, 2008
1 parent 5a638ba commit 398a5ca
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba082427ae6ffbf8e48a26ae4f72f4501a6b80c1
refs/heads/master: 746ef0cd0c7190d570c65b8e39a4ac67550ae43a
9 changes: 7 additions & 2 deletions trunk/arch/x86/kernel/e820_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -638,8 +638,10 @@ static void early_panic(char *msg)
panic(msg);
}

void __init setup_memory_region(void)
/* We're not void only for x86 32-bit compat */
char * __init machine_specific_memory_setup(void)
{
char *who = "BIOS-e820";
/*
* Try to copy the BIOS-supplied E820-map.
*
Expand All @@ -650,7 +652,10 @@ void __init setup_memory_region(void)
if (copy_e820_map(boot_params.e820_map, boot_params.e820_entries) < 0)
early_panic("Cannot find a valid memory map");
printk(KERN_INFO "BIOS-provided physical RAM map:\n");
e820_print_map("BIOS-e820");
e820_print_map(who);

/* In case someone cares... */
return who;
}

static int __init parse_memopt(char *p)
Expand Down
28 changes: 27 additions & 1 deletion trunk/arch/x86/kernel/setup_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
#include <linux/dmi.h>
#include <linux/dma-mapping.h>
#include <linux/ctype.h>
#include <linux/uaccess.h>

#include <asm/mtrr.h>
#include <asm/uaccess.h>
Expand All @@ -62,6 +63,12 @@
#include <asm/mce.h>
#include <asm/ds.h>

#ifdef CONFIG_PARAVIRT
#include <asm/paravirt.h>
#else
#define ARCH_SETUP
#endif

/*
* Machine setup..
*/
Expand Down Expand Up @@ -246,6 +253,16 @@ static void discover_ebda(void)
* 4K EBDA area at 0x40E
*/
ebda_addr = *(unsigned short *)__va(EBDA_ADDR_POINTER);
/*
* There can be some situations, like paravirtualized guests,
* in which there is no available ebda information. In such
* case, just skip it
*/
if (!ebda_addr) {
ebda_size = 0;
return;
}

ebda_addr <<= 4;

ebda_size = *(unsigned short *)__va(ebda_addr);
Expand All @@ -259,6 +276,12 @@ static void discover_ebda(void)
ebda_size = 64*1024;
}

/* Overridden in paravirt.c if CONFIG_PARAVIRT */
void __attribute__((weak)) memory_setup(void)
{
machine_specific_memory_setup();
}

void __init setup_arch(char **cmdline_p)
{
unsigned i;
Expand All @@ -276,7 +299,10 @@ void __init setup_arch(char **cmdline_p)
rd_prompt = ((boot_params.hdr.ram_size & RAMDISK_PROMPT_FLAG) != 0);
rd_doload = ((boot_params.hdr.ram_size & RAMDISK_LOAD_FLAG) != 0);
#endif
setup_memory_region();

ARCH_SETUP

memory_setup();
copy_edd();

if (!boot_params.hdr.root_flags)
Expand Down
4 changes: 2 additions & 2 deletions trunk/arch/x86/kernel/smpboot_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ void __cpuinit start_secondary(void)

unlock_ipi_call_lock();

setup_secondary_APIC_clock();
setup_secondary_clock();

cpu_idle();
}
Expand Down Expand Up @@ -923,7 +923,7 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
* Set up local APIC timer on boot CPU.
*/

setup_boot_APIC_clock();
setup_boot_clock();
}

/*
Expand Down
11 changes: 8 additions & 3 deletions trunk/include/asm-x86/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@

#define COMMAND_LINE_SIZE 2048

#ifndef __ASSEMBLY__
char *machine_specific_memory_setup(void);
#ifndef CONFIG_PARAVIRT
#define paravirt_post_allocator_init() do {} while (0)
#endif
#endif /* __ASSEMBLY__ */

#ifdef __KERNEL__

#ifdef __i386__
Expand Down Expand Up @@ -51,9 +58,7 @@ void __init add_memory_region(unsigned long long start,

extern unsigned long init_pg_tables_end;

#ifndef CONFIG_PARAVIRT
#define paravirt_post_allocator_init() do {} while (0)
#endif


#endif /* __i386__ */
#endif /* _SETUP */
Expand Down

0 comments on commit 398a5ca

Please sign in to comment.