Re: Reserving physical memory at boot time

H. Peter Anvin (hpa@zytor.com)
Sun, 09 Mar 2003 13:08:39 -0800


Pavel Machek wrote:
>
> Okay; which mem= options you want killed?
>

Anything that doesn't match the regexp (in Perl syntax):

/^mem=(0[0-7]*|[1-9][0-9]*|0x[0-9a-f]+)[kmg]$/i

> What about this?

Looks good to me.

> 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);
> @@ -565,6 +584,7 @@
> }
> }
>
> +
> /* "acpi=off" disables both ACPI table parsing and interpreter init */
> if (c == ' ' && !memcmp(from, "acpi=off", 8))
> acpi_disabled = 1;
>
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/