mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* Fix mem= options
@ 2003-03-09 22:16 Pavel Machek
  2003-03-10 19:58 ` Randy.Dunlap
  2003-03-11  0:13 ` Alan Cox
  0 siblings, 2 replies; 3+ messages in thread
From: Pavel Machek @ 2003-03-09 22:16 UTC (permalink / raw)
  To: torvalds, kernel list

Hi!

HPA told me bootloaders need to parse mem=, so we should invent other
option for stuff like mem=exactmap. Please apply,
								Pavel

--- clean/arch/i386/kernel/setup.c	2003-03-06 23:25:14.000000000 +0100
+++ linux/arch/i386/kernel/setup.c	2003-03-08 00:18:21.000000000 +0100
@@ -527,6 +527,9 @@
 		 * to <mem>, overriding the bios size.
 		 * "mem=XXX[KkmM]@XXX[KkmM]" defines a memory region from
 		 * <start> to <start>+<mem>, overriding the bios size.
+		 *
+		 * HPA tells me bootloaders need to parse mem=, so no new
+		 * option should be mem=
 		 */
 		if (c == ' ' && !memcmp(from, "mem=", 4)) {
 			if (to != command_line)
@@ -535,8 +538,24 @@
 				from += 9+4;
 				clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability);
 				disable_pse = 1;
-			} else if (!memcmp(from+4, "exactmap", 8)) {
-				from += 8+4;
+			} else {
+				/* If the user specifies memory size, we
+				 * limit the BIOS-provided memory map to
+				 * that size. exactmap can be used to specify
+				 * the exact map. mem=number can be used to
+				 * trim the existing memory map.
+				 */
+				unsigned long long start_at, mem_size;
+ 
+				mem_size = memparse(from+4, &from);
+			}
+		}
+
+		if (c == ' ' && !memcmp(from, "memmap=", 7)) {
+			if (to != command_line)
+				to--;
+			if (!memcmp(from+7, "exactmap", 8)) {
+				from += 8+7;
 				e820.nr_map = 0;
 				userdef = 1;
 			} else {
@@ -548,7 +567,7 @@
 				 */
 				unsigned long long start_at, mem_size;
  
-				mem_size = memparse(from+4, &from);
+				mem_size = memparse(from+7, &from);
 				if (*from == '@') {
 					start_at = memparse(from+1, &from);
 					add_memory_region(start_at, mem_size, E820_RAM);

-- 
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Fix mem= options
  2003-03-09 22:16 Fix mem= options Pavel Machek
@ 2003-03-10 19:58 ` Randy.Dunlap
  2003-03-11  0:13 ` Alan Cox
  1 sibling, 0 replies; 3+ messages in thread
From: Randy.Dunlap @ 2003-03-10 19:58 UTC (permalink / raw)
  To: Pavel Machek; +Cc: torvalds, linux-kernel, akpm

Hi Pavel,

Your patch didn't quite work for me.  Did it work for you?

a.  Needs similar changes to Documentation/kernel-parameters.txt (below)
b.  The specified mem= (mem_size) wasn't saved anywhere.  I added a call
    to limit_regions() and set userdef to 1 and now ItWorksForMe.

Linus or Andrew, please apply so that the mem= boot parameter doesn't
stay damaged.

Thanks,
--
~Randy


patch_name:	memmap_ndocs.patch
patch_version:	2003-03-10.11:28:32
author:		Randy.Dunlap <rddunlap@osdl.org>
description:	add docs for mem= and memmap=; fix mem= to remember mem_size;
product:	Linux
product_versions: linux-2564
changelog:	_
URL:		_
requires:	_
conflicts:	_
diffstat:	=
 Documentation/kernel-parameters.txt |   32 +++++++++++++++++---------------
 arch/i386/kernel/setup.c            |   29 +++++++++++++++++++++++++----
 2 files changed, 42 insertions(+), 19 deletions(-)


diff -Naur ./arch/i386/kernel/setup.c%MMCL ./arch/i386/kernel/setup.c
--- ./arch/i386/kernel/setup.c%MMCL	Tue Mar  4 19:29:18 2003
+++ ./arch/i386/kernel/setup.c	Mon Mar 10 11:06:34 2003
@@ -525,8 +525,11 @@
 		 * "mem=nopentium" disables the 4MB page tables.
 		 * "mem=XXX[kKmM]" defines a memory region from HIGH_MEM
 		 * to <mem>, overriding the bios size.
-		 * "mem=XXX[KkmM]@XXX[KkmM]" defines a memory region from
+		 * "memmap=XXX[KkmM]@XXX[KkmM]" defines a memory region from
 		 * <start> to <start>+<mem>, overriding the bios size.
+		 *
+		 * HPA tells me bootloaders need to parse mem=, so no new
+		 * option should be mem=  [also see Documentation/i386/boot.txt]
 		 */
 		if (c == ' ' && !memcmp(from, "mem=", 4)) {
 			if (to != command_line)
@@ -535,8 +538,26 @@
 				from += 9+4;
 				clear_bit(X86_FEATURE_PSE, boot_cpu_data.x86_capability);
 				disable_pse = 1;
-			} else if (!memcmp(from+4, "exactmap", 8)) {
-				from += 8+4;
+			} else {
+				/* If the user specifies memory size, we
+				 * limit the BIOS-provided memory map to
+				 * that size. exactmap can be used to specify
+				 * the exact map. mem=number can be used to
+				 * trim the existing memory map.
+				 */
+				unsigned long long mem_size;
+ 
+				mem_size = memparse(from+4, &from);
+				limit_regions(mem_size);
+				userdef=1;
+			}
+		}
+
+		if (c == ' ' && !memcmp(from, "memmap=", 7)) {
+			if (to != command_line)
+				to--;
+			if (!memcmp(from+7, "exactmap", 8)) {
+				from += 8+7;
 				e820.nr_map = 0;
 				userdef = 1;
 			} else {
@@ -548,7 +569,7 @@
 				 */
 				unsigned long long start_at, mem_size;
  
-				mem_size = memparse(from+4, &from);
+				mem_size = memparse(from+7, &from);
 				if (*from == '@') {
 					start_at = memparse(from+1, &from);
 					add_memory_region(start_at, mem_size, E820_RAM);
diff -Naur ./Documentation/kernel-parameters.txt%MMCL ./Documentation/kernel-parameters.txt
--- ./Documentation/kernel-parameters.txt%MMCL	Tue Mar  4 19:29:57 2003
+++ ./Documentation/kernel-parameters.txt	Mon Mar 10 10:21:22 2003
@@ -71,6 +71,8 @@
 
 Parameters denoted with BOOT are actually interpreted by the boot
 loader, and have no meaning to the kernel directly.
+Do not modify the syntax of boot loader parameters without extreme
+need or coordination with <Documentation/i386/boot.txt>.
 
 Note that ALL kernel parameters listed below are CASE SENSITIVE, and that
 a trailing = on the name of any parameter states that that parameter will
@@ -502,30 +504,30 @@
 			Format: <first>,<last>
 			Specifies range of consoles to be captured by the MDA.
  
-	mem=exactmap	[KNL,BOOT,IA-32] Enable setting of an exact
-			E820 memory map, as specified by the user.
-			Such mem=exactmap lines can be constructed based on
-			BIOS output or other requirements. See the mem=nn@ss
-			option description.
-
 	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.
 
-	mem=nn[KMG]@ss[KMG]
-			[KNL,BOOT] Force usage of a specific region of memory
-			Region of memory to be used, from ss to ss+nn.
+	mem=nopentium	[BUGS=IA-32] Disable usage of 4MB pages for kernel
+			memory.
 
-	mem=nn[KMG]#ss[KMG]
-			[KNL,BOOT,ACPI] Mark specific memory as ACPI data.
+	memmap=exactmap	[KNL,IA-32] Enable setting of an exact
+			E820 memory map, as specified by the user.
+			Such memmap=exactmap lines can be constructed based on
+			BIOS output or other requirements. See the memmap=nn@ss
+			option description.
+
+	memmap=nn[KMG]@ss[KMG]
+			[KNL] Force usage of a specific region of memory
 			Region of memory to be used, from ss to ss+nn.
 
-	mem=nn[KMG]$ss[KMG]
-			[KNL,BOOT,ACPI] Mark specific memory as reserved.
+	memmap=nn[KMG]#ss[KMG]
+			[KNL,ACPI] Mark specific memory as ACPI data.
 			Region of memory to be used, from ss to ss+nn.
 
-	mem=nopentium	[BUGS=IA-32] Disable usage of 4MB pages for kernel
-			memory.
+	memmap=nn[KMG]$ss[KMG]
+			[KNL,ACPI] Mark specific memory as reserved.
+			Region of memory to be used, from ss to ss+nn.
 
 	memfrac=	[KNL]
 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Fix mem= options
  2003-03-09 22:16 Fix mem= options Pavel Machek
  2003-03-10 19:58 ` Randy.Dunlap
@ 2003-03-11  0:13 ` Alan Cox
  1 sibling, 0 replies; 3+ messages in thread
From: Alan Cox @ 2003-03-11  0:13 UTC (permalink / raw)
  To: Pavel Machek; +Cc: Linus Torvalds, Linux Kernel Mailing List

On Sun, 2003-03-09 at 22:16, Pavel Machek wrote:
> Hi!
> 
> HPA told me bootloaders need to parse mem=, so we should invent other
> option for stuff like mem=exactmap. Please apply,

Its worse than that  grub does strstr(blah, "mem=") !


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-03-10 22:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-03-09 22:16 Fix mem= options Pavel Machek
2003-03-10 19:58 ` Randy.Dunlap
2003-03-11  0:13 ` Alan Cox

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®