|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86/boot: Load microcode much earlier on boot
On 20.11.2024 12:24, Andrew Cooper wrote:
> On 20/11/2024 10:44 am, Jan Beulich wrote:
>> On 19.11.2024 22:57, Andrew Cooper wrote:
>>> Following commit cd7cc5320bb2 ("x86/boot: add start and size fields to
>>> struct
>>> boot_module"), bootstrap_map*() works as soon as boot_info is populated.
>> I'm struggling with following where this connection is coming from.
>
> Specifically, the final hunk:
>
>> @@ -1416,12 +1420,6 @@ void asmlinkage __init noreturn
>> __start_xen(void) if ( bi->mods[i].start & (PAGE_SIZE - 1) )
>> panic("Bootloader didn't honor module alignment request\n"); - /* - *
>> TODO: load ucode earlier once multiboot modules become accessible - *
>> at an earlier stage. - */ - early_microcode_init(bi); - if (
>> xen_phys_start ) { struct boot_module *xen = &bi->mods[bi->nr_modules];
>
> The context with panic() used to read:
>
> panic("Bootloader didn't honor module alignment request\n");
> bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
> bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
>
> and calling bootstrap_map() prior to that mapped junk because the start
> is wrong by PAGE_SHIFT.
>
> This is why the TODO was inserted the last time around when we couldn't
> move loading as early as wanted.
Hmm, I see. It wasn't really that they were inaccessible, it merely was
that adjustments of internally maintained data would have been needed.
Which could have been as easy as instantiating a local mod variable,
fill it with suitably adjusted data, and pass an address thereof to
bootstrap_map().
In any event:
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
I'm surprised though that you didn't comment at all on the other aspect
I raised.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |