Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 88914
b: refs/heads/master
c: c64df70
h: refs/heads/master
v: v3
  • Loading branch information
Yinghai Lu authored and Ingo Molnar committed Apr 17, 2008
1 parent 54273e5 commit 26fe195
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 13 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: 9b967106da0357ef8b08847dce35584a04134f20
refs/heads/master: c64df70793a9c344874eb4af19f85e0662d2d3ee
5 changes: 5 additions & 0 deletions trunk/Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1147,6 +1147,11 @@ and is between 256 and 4096 characters. It is defined in the file
or
memmap=0x10000$0x18690000

memtest= [KNL,X86_64] Enable memtest
Format: <integer>
range: 0,4 : pattern number
default : 0 <disable>

meye.*= [HW] Set MotionEye Camera parameters
See Documentation/video4linux/meye.txt.

Expand Down
29 changes: 29 additions & 0 deletions trunk/arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -382,6 +382,35 @@ config PARAVIRT

endif

config MEMTEST_BOOTPARAM
bool "Memtest boot parameter"
depends on X86_64
default y
help
This option adds a kernel parameter 'memtest', which allows memtest
to be disabled at boot. If this option is selected, memtest
functionality can be disabled with memtest=0 on the kernel
command line. The purpose of this option is to allow a single
kernel image to be distributed with memtest built in, but not
necessarily enabled.

If you are unsure how to answer this question, answer Y.

config MEMTEST_BOOTPARAM_VALUE
int "Memtest boot parameter default value (0-4)"
depends on MEMTEST_BOOTPARAM
range 0 4
default 0
help
This option sets the default value for the kernel parameter
'memtest', which allows memtest to be disabled at boot. If this
option is set to 0 (zero), the memtest kernel parameter will
default to 0, disabling memtest at bootup. If this option is
set to 4, the memtest kernel parameter will default to 4,
enabling memtest at bootup, and use that as pattern number.

If you are unsure how to answer this question, answer 0.

config ACPI_SRAT
def_bool y
depends on X86_32 && ACPI && NUMA && (X86_SUMMIT || X86_GENERICARCH)
Expand Down
10 changes: 5 additions & 5 deletions trunk/arch/x86/kernel/e820_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,9 @@ unsigned long __init find_e820_area(unsigned long start, unsigned long end,
/*
* Find next free range after *start
*/
unsigned long __init find_e820_area_size(unsigned long start, unsigned long *sizep, unsigned long align)
unsigned long __init find_e820_area_size(unsigned long start,
unsigned long *sizep,
unsigned long align)
{
int i;

Expand All @@ -254,17 +256,15 @@ unsigned long __init find_e820_area_size(unsigned long start, unsigned long *siz
continue;
addr = round_up(ei->addr, align);
ei_last = ei->addr + ei->size;
// printk(KERN_DEBUG "find_e820_area_size : e820 %d [%llx, %lx]\n", i, ei->addr, ei_last);
if (addr < start)
addr = round_up(start, align);
// printk(KERN_DEBUG "find_e820_area_size : 0 [%lx, %lx]\n", addr, ei_last);
if (addr >= ei_last)
continue;
*sizep = ei_last - addr;
while (bad_addr_size(&addr, sizep, align) && addr+ *sizep <= ei_last)
while (bad_addr_size(&addr, sizep, align) &&
addr + *sizep <= ei_last)
;
last = addr + *sizep;
// printk(KERN_DEBUG "find_e820_area_size : 1 [%lx, %lx]\n", addr, last);
if (last > ei_last)
continue;
return addr;
Expand Down
24 changes: 17 additions & 7 deletions trunk/arch/x86/mm/init_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,10 @@ static void __init init_gbpages(void)
direct_gbpages = 0;
}

static void __init memtest(unsigned long start_phys, unsigned long size, unsigned pattern)
#ifdef CONFIG_MEMTEST_BOOTPARAM

static void __init memtest(unsigned long start_phys, unsigned long size,
unsigned pattern)
{
unsigned long i;
unsigned long *start;
Expand Down Expand Up @@ -486,11 +489,12 @@ static void __init memtest(unsigned long start_phys, unsigned long size, unsigne

}

static int __initdata memtest_pattern;
static int memtest_pattern __initdata = CONFIG_MEMTEST_BOOTPARAM_VALUE;

static int __init parse_memtest(char *arg)
{
if (arg)
memtest_pattern = simple_strtoul(arg, NULL, 0) + 1;
memtest_pattern = simple_strtoul(arg, NULL, 0);
return 0;
}

Expand All @@ -501,8 +505,10 @@ static void __init early_memtest(unsigned long start, unsigned long end)
unsigned long t_start, t_size;
unsigned pattern;

if (memtest_pattern)
printk(KERN_INFO "early_memtest: pattern num %d", memtest_pattern);
if (!memtest_pattern)
return;

printk(KERN_INFO "early_memtest: pattern num %d", memtest_pattern);
for (pattern = 0; pattern < memtest_pattern; pattern++) {
t_start = start;
t_size = 0;
Expand All @@ -523,9 +529,13 @@ static void __init early_memtest(unsigned long start, unsigned long end)
t_start += t_size;
}
}
if (memtest_pattern)
printk(KERN_CONT "\n");
printk(KERN_CONT "\n");
}
#else
static void __init early_memtest(unsigned long start, unsigned long end)
{
}
#endif

/*
* Setup the direct mapping of the physical memory at PAGE_OFFSET.
Expand Down

0 comments on commit 26fe195

Please sign in to comment.