Skip to content

Commit

Permalink
x86: Add request_standard_resources to x86_init
Browse files Browse the repository at this point in the history
The 32bit and the 64bit code are slighty different in the reservation
of standard resources. Also the upcoming Moorestown support needs its
own version of that.

Add it to x86_init_ops and initialize it with the 64bit default. 32bit
overrides it in early boot. Now moorestown can add it's own override
w/o sprinkling the code with more #ifdefs

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Thomas Gleixner committed Aug 27, 2009
1 parent f7cf5a5 commit 8fee697
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 13 deletions.
3 changes: 3 additions & 0 deletions arch/x86/include/asm/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ extern unsigned long saved_video_mode;
#define paravirt_post_allocator_init() do {} while (0)
#endif

extern void reserve_standard_io_resources(void);
extern void i386_reserve_resources(void);

#ifndef _SETUP

/*
Expand Down
3 changes: 3 additions & 0 deletions arch/x86/include/asm/x86_init.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@
/**
* struct x86_init_resources - platform specific resource related ops
* @probe_roms: probe BIOS roms
* @reserve_resources: reserve the standard resources for the
* platform
*
*/
struct x86_init_resources {
void (*probe_roms)(void);
void (*reserve_resources)(void);
};

/**
Expand Down
1 change: 1 addition & 0 deletions arch/x86/kernel/head32.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ void __init i386_start_kernel(void)
#endif
/* Initilize 32bit specific setup functions */
x86_init.resources.probe_roms = probe_roms;
x86_init.resources.reserve_resources = i386_reserve_resources;

reserve_ebda_region();

Expand Down
28 changes: 16 additions & 12 deletions arch/x86/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,6 @@ static struct resource bss_resource = {


#ifdef CONFIG_X86_32
static struct resource video_ram_resource = {
.name = "Video RAM area",
.start = 0xa0000,
.end = 0xbffff,
.flags = IORESOURCE_BUSY | IORESOURCE_MEM
};

/* cpu data as detected by the assembly code in head.S */
struct cpuinfo_x86 new_cpu_data __cpuinitdata = {0, 0, 0, 0, -1, 1, 0, 0, -1};
/* common cpu data for all cpus */
Expand Down Expand Up @@ -605,7 +598,7 @@ static struct resource standard_io_resources[] = {
.flags = IORESOURCE_BUSY | IORESOURCE_IO }
};

static void __init reserve_standard_io_resources(void)
void __init reserve_standard_io_resources(void)
{
int i;

Expand Down Expand Up @@ -1013,10 +1006,7 @@ void __init setup_arch(char **cmdline_p)
e820_reserve_resources();
e820_mark_nosave_regions(max_low_pfn);

#ifdef CONFIG_X86_32
request_resource(&iomem_resource, &video_ram_resource);
#endif
reserve_standard_io_resources();
x86_init.resources.reserve_resources();

e820_setup_gap();

Expand Down Expand Up @@ -1102,4 +1092,18 @@ void __init x86_quirk_time_init(void)
irq0.mask = cpumask_of_cpu(0);
setup_irq(0, &irq0);
}

static struct resource video_ram_resource = {
.name = "Video RAM area",
.start = 0xa0000,
.end = 0xbffff,
.flags = IORESOURCE_BUSY | IORESOURCE_MEM
};

void __init i386_reserve_resources(void)
{
request_resource(&iomem_resource, &video_ram_resource);
reserve_standard_io_resources();
}

#endif /* CONFIG_X86_32 */
3 changes: 2 additions & 1 deletion arch/x86/kernel/x86_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
#include <linux/init.h>

#include <asm/x86_init.h>
#include <asm/setup.h>

void __cpuinit x86_init_noop(void) { }

Expand All @@ -17,5 +17,6 @@ struct __initdata x86_init_ops x86_init = {

.resources = {
.probe_roms = x86_init_noop,
.reserve_resources = reserve_standard_io_resources,
},
};

0 comments on commit 8fee697

Please sign in to comment.