* [PATCH v3 0/2] fixes for mem= option
@ 2012-10-29 8:48 Wen Congyang
2012-10-29 8:48 ` [PATCH v3 1/2] update mem= option's spec according to its implementation Wen Congyang
2012-10-29 8:48 ` [PATCH v3 2/2] x86: make 'mem=' option to work for efi platform Wen Congyang
0 siblings, 2 replies; 5+ messages in thread
From: Wen Congyang @ 2012-10-29 8:48 UTC (permalink / raw)
To: x86, linux-kernel, linux-doc
Cc: Rob Landley, Thomas Gleixner, Ingo Molnar, bhelgaas,
H. Peter Anvin, Yasuaki Ishimatsu, KOSAKI Motohiro,
Andrew Morton, Wen Congyang
The documentation and implementation of 'mem=' option doesn't match, and the
option can't work for efi platform. This patchset updates the documentation
and make the option to work for efi platform.
Changes from v2 to v3:
Patch1: X86-32 ===> X86
Changes from v1 to v2:
Patch1: Just fix a typo error(ingoring -> ignoring).
Wen Congyang (2):
update mem= option's spec according to its implementation
x86: make 'mem=' option to work for efi platform
Documentation/kernel-parameters.txt | 7 ++++---
arch/x86/kernel/e820.c | 29 +++++++++++++++++++++++++----
2 files changed, 29 insertions(+), 7 deletions(-)
--
1.8.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/2] update mem= option's spec according to its implementation
2012-10-29 8:48 [PATCH v3 0/2] fixes for mem= option Wen Congyang
@ 2012-10-29 8:48 ` Wen Congyang
2012-10-29 10:48 ` richard -rw- weinberger
2012-10-29 8:48 ` [PATCH v3 2/2] x86: make 'mem=' option to work for efi platform Wen Congyang
1 sibling, 1 reply; 5+ messages in thread
From: Wen Congyang @ 2012-10-29 8:48 UTC (permalink / raw)
To: x86, linux-kernel, linux-doc
Cc: Rob Landley, Thomas Gleixner, Ingo Molnar, bhelgaas,
H. Peter Anvin, Yasuaki Ishimatsu, KOSAKI Motohiro,
Andrew Morton, Wen Congyang
Current mem= implementation seems buggy because specification and
implementation doesn't match. Current mem= has been working
for many years and it's not buggy, it works as expected. So
we should update the specification.
Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
Sort-of-tentatively-acked-by: Rob Landley <rob@landley.net>
---
Documentation/kernel-parameters.txt | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 9776f06..91863a5 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1481,9 +1481,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory
Amount of memory to be used when the kernel is not able
to see the whole system memory or for test.
- [X86-32] Use together with memmap= to avoid physical
- address space collisions. Without memmap= PCI devices
- could be placed at addresses belonging to unused RAM.
+ [X86] Work as limiting max address. Use together
+ with memmap= to avoid physical address space collisions.
+ Without memmap= PCI devices could be placed at addresses
+ belonging to unused RAM.
mem=nopentium [BUGS=X86-32] Disable usage of 4MB pages for kernel
memory.
--
1.8.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 2/2] x86: make 'mem=' option to work for efi platform
2012-10-29 8:48 [PATCH v3 0/2] fixes for mem= option Wen Congyang
2012-10-29 8:48 ` [PATCH v3 1/2] update mem= option's spec according to its implementation Wen Congyang
@ 2012-10-29 8:48 ` Wen Congyang
1 sibling, 0 replies; 5+ messages in thread
From: Wen Congyang @ 2012-10-29 8:48 UTC (permalink / raw)
To: x86, linux-kernel, linux-doc
Cc: Rob Landley, Thomas Gleixner, Ingo Molnar, bhelgaas,
H. Peter Anvin, Yasuaki Ishimatsu, KOSAKI Motohiro,
Andrew Morton, Wen Congyang
Current mem boot option only can work for non efi environment. If the user
specifies add_efi_memmap, it cannot work for efi environment. In
the efi environment, we call e820_add_region() to add the memory map. So
we can modify __e820_add_region() and the mem boot option can work for
efi environment.
Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
---
arch/x86/kernel/e820.c | 29 +++++++++++++++++++++++++----
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
index df06ade..b15b341 100644
--- a/arch/x86/kernel/e820.c
+++ b/arch/x86/kernel/e820.c
@@ -47,6 +47,7 @@ unsigned long pci_mem_start = 0xaeedbabe;
#ifdef CONFIG_PCI
EXPORT_SYMBOL(pci_mem_start);
#endif
+static u64 mem_limit = ~0ULL;
/*
* This function checks if any part of the range <start,end> is mapped
@@ -119,6 +120,20 @@ static void __init __e820_add_region(struct e820map *e820x, u64 start, u64 size,
return;
}
+ if (start >= mem_limit) {
+ printk(KERN_ERR "e820: ignoring [mem %#010llx-%#010llx]\n",
+ (unsigned long long)start,
+ (unsigned long long)(start + size - 1));
+ return;
+ }
+
+ if (mem_limit - start < size) {
+ printk(KERN_ERR "e820: ignoring [mem %#010llx-%#010llx]\n",
+ (unsigned long long)mem_limit,
+ (unsigned long long)(start + size - 1));
+ size = mem_limit - start;
+ }
+
e820x->map[x].addr = start;
e820x->map[x].size = size;
e820x->map[x].type = type;
@@ -809,7 +824,7 @@ static int userdef __initdata;
/* "mem=nopentium" disables the 4MB page tables. */
static int __init parse_memopt(char *p)
{
- u64 mem_size;
+ char *oldp;
if (!p)
return -EINVAL;
@@ -825,11 +840,11 @@ static int __init parse_memopt(char *p)
}
userdef = 1;
- mem_size = memparse(p, &p);
+ oldp = p;
+ mem_limit = memparse(p, &p);
/* don't remove all of memory when handling "mem={invalid}" param */
- if (mem_size == 0)
+ if (mem_limit == 0 || p == oldp)
return -EINVAL;
- e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1);
return 0;
}
@@ -881,6 +896,12 @@ early_param("memmap", parse_memmap_opt);
void __init finish_e820_parsing(void)
{
+ if (mem_limit != ~0ULL) {
+ userdef = 1;
+ e820_remove_range(mem_limit, ULLONG_MAX - mem_limit,
+ E820_RAM, 1);
+ }
+
if (userdef) {
u32 nr = e820.nr_map;
--
1.8.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] update mem= option's spec according to its implementation
2012-10-29 8:48 ` [PATCH v3 1/2] update mem= option's spec according to its implementation Wen Congyang
@ 2012-10-29 10:48 ` richard -rw- weinberger
2012-10-29 11:00 ` Wen Congyang
0 siblings, 1 reply; 5+ messages in thread
From: richard -rw- weinberger @ 2012-10-29 10:48 UTC (permalink / raw)
To: Wen Congyang
Cc: x86, linux-kernel, linux-doc, Rob Landley, Thomas Gleixner,
Ingo Molnar, bhelgaas, H. Peter Anvin, Yasuaki Ishimatsu,
KOSAKI Motohiro, Andrew Morton
On Mon, Oct 29, 2012 at 9:48 AM, Wen Congyang <wency@cn.fujitsu.com> wrote:
> Current mem= implementation seems buggy because specification and
> implementation doesn't match. Current mem= has been working
> for many years and it's not buggy, it works as expected. So
> we should update the specification.
>
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
> Sort-of-tentatively-acked-by: Rob Landley <rob@landley.net>
So, is this an ACK or not?
--
Thanks,
//richard
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/2] update mem= option's spec according to its implementation
2012-10-29 10:48 ` richard -rw- weinberger
@ 2012-10-29 11:00 ` Wen Congyang
0 siblings, 0 replies; 5+ messages in thread
From: Wen Congyang @ 2012-10-29 11:00 UTC (permalink / raw)
To: richard -rw- weinberger
Cc: x86, linux-kernel, linux-doc, Rob Landley, Thomas Gleixner,
Ingo Molnar, bhelgaas, H. Peter Anvin, Yasuaki Ishimatsu,
KOSAKI Motohiro, Andrew Morton
At 10/29/2012 06:48 PM, richard -rw- weinberger Wrote:
> On Mon, Oct 29, 2012 at 9:48 AM, Wen Congyang <wency@cn.fujitsu.com> wrote:
>> Current mem= implementation seems buggy because specification and
>> implementation doesn't match. Current mem= has been working
>> for many years and it's not buggy, it works as expected. So
>> we should update the specification.
>>
>> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
>> Sort-of-tentatively-acked-by: Rob Landley <rob@landley.net>
>
> So, is this an ACK or not?
>
I don't know.
Here is the origin message:
At 06/15/2012 04:22 AM, Rob Landley Wrote:
> I have no objection to this but can't confirm it's true or not without
> an awful lot more digging through the code I don't have time for right
> now. (All the x86-32 machines I've used just had the 640k->1m hole and
> the rest was contiguous memory, so the behavior would be the same either
> way...)
>
> Sort-of-tentatively-acked-by: Rob Landley <rob@landley.net>
>
> Rob
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-10-29 10:54 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-29 8:48 [PATCH v3 0/2] fixes for mem= option Wen Congyang
2012-10-29 8:48 ` [PATCH v3 1/2] update mem= option's spec according to its implementation Wen Congyang
2012-10-29 10:48 ` richard -rw- weinberger
2012-10-29 11:00 ` Wen Congyang
2012-10-29 8:48 ` [PATCH v3 2/2] x86: make 'mem=' option to work for efi platform Wen Congyang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).