Re: [patch 7/8] Add a bootparameter to reserve high linear address space.

Zachary Amsden
2006-08-03T07:33:38Z

Andrew Morton wrote:
> On Wed, 02 Aug 2006 17:25:17 -0700
> Jeremy Fitzhardinge <jeremy@xensource.com> wrote:
>
>
>> + /*
>> + * reservetop=size reserves a hole at the top of the kernel
>> + * address space which a hypervisor can load into later.
>> + * Needed for dynamically loaded hypervisors, so relocating
>> + * the fixmap can be done before paging initialization.
>> + * This hole must be a multiple of 4M.
>> + */
>> + else if (!memcmp(from, "reservetop=", 11)) {
>> + unsigned long reserve = memparse(from+11, &from);
>> + reserve &= ~0x3fffff;
>> + reserve_top_address(reserve);
>> + }
>>
>
> I assume that this argument will normally be passed in via the hypervisor
> rather than by human-entered information?
>
> In which case, perhaps a panic would be a more appropriate response to a
> non-multiple-of-4M.
>
> Either way, rounding the number down rather than up seems wrong...
>

Agree on the rounding issue - but is a panic really correct? Perhaps we
should not round at all.

The presumption is actually that this is human or script entered
information. A runtime loaded hypervisor module has no way to tweak or
toggle the boot parameters, as it hasn't yet been loaded. It could be
that a human operator wants to make room for it. Giving the operator a
panic is not the most friendly thing to do - logging the failure on
module load is much nicer. And such a runtime loaded hypervisor must be
fully virtualizing anyway, so even if the argument is wrong and doesn't
give the hypervisor enough space to load, no damage is done - the
operator just resets the parameter and reboots.

Zach