Re: [PATCH] x86/microcode: Adjust ramdisk address when accessing by virtual address
From: Borislav Petkov
Date: Mon Dec 19 2016 - 18:32:40 EST
On Mon, Dec 19, 2016 at 07:43:40PM +0100, Borislav Petkov wrote:
> On Mon, Dec 19, 2016 at 01:12:25PM -0500, Boris Ostrovsky wrote:
> > IIUIC find_microcode_in_initrd() is called with paging on only on Intel
> > (which is where I observed it).
>
> Ah, that was an important fact. Yes, I can repro it now.
Ok, questions:
* does your guest relocate the ramdisk?
I.e., do you see something like this in dmesg before the splat:
[ 0.000000] RAMDISK: [mem 0x7f84c000-0x7ffcffff]
[ 0.000000] Allocated new RAMDISK: [mem 0x3647a000-0x36bfd9e6]
[ 0.000000] Move RAMDISK from [mem 0x7f84c000-0x7ffcf9e6] to [mem 0x3647a000-0x36bfd9e6]
^^^^^^^^^^^^^^
If not, then I know what happens.
Also, does it work if you change these lines:
if (!use_pa && relocated_ramdisk)
start = initrd_start;
to:
if (!use_pa)
start = initrd_start;
Because if that works, I can actually simplify that function radically.
But more tomorrow.
Thanks.
--
Regards/Gruss,
Boris.
Good mailing practices for 400: avoid top-posting and trim the reply.