Re: linux-next: parsing mem=700M broken

Yinghai Lu
2008-12-23T05:52:29Z

On Mon, Dec 22, 2008 at 7:06 PM, Hugh Dickins <hugh@veritas.com> wrote:
> Hi Rusty,
>
> I find that bootparam "mem=700M" isn't working in linux-next or mmotm,
> and have bisected it down to your patch below; but now I'm off to bed
> without working out just what goes wrong (I'll bet it's the "=").
>
> Hugh
>
> commit 5c886584a758edba7e25ad9df974cf15a4a1f59d
> Author: Rusty Russell <rusty@rustcorp.com.au>
> Date: Wed Dec 3 13:34:34 2008 +1030
>
> Call early_param earlier.
>
> We delete all the arch calls: we call it from start_kernel earlier
> now. We also no longer take a temporary copy, but parse in place.
>
> Note: IA64 needs to parse "machvec=" before other commandline options
> but machvec_init_from_cmdline() needs efi_init() and io_port_init(),
> so they are all moved into arch_get_boot_command_line().
>

yeah, you are right.

static int __init parse_memopt(char *p)
{
u64 mem_size;

if (!p)
return -EINVAL;

#ifdef CONFIG_X86_32
if (!strcmp(p, "nopentium")) {
setup_clear_cpu_cap(X86_FEATURE_PSE);
return 0;
}
#endif

userdef = 1;
mem_size = memparse(p, &p);
e820_remove_range(mem_size, ULLONG_MAX - mem_size, E820_RAM, 1);

return 0;
}
early_param("mem", parse_memopt);

in x86 we use that param analyser much later ( after we check the e820 table..)

other cpu flag will be overwrite too..

anyway, this patch is not go through x86 tip..., some strange!

YH