Re: [PATCH] x86, boot: Allow 64bit EFI kernel to be loaded above 4G

From: Baoquan He
Date: Wed Feb 18 2015 - 06:30:13 EST

On 02/17/15 at 11:22pm, Yinghai Lu wrote:
> On Tue, Feb 10, 2015 at 10:11 PM, Baoquan He <bhe@xxxxxxxxxx> wrote:
> > Hi Yinghai,
> >
> > Could you please help to have a look at a problem which I encountered?
> >
> > I am trying to make kaslr randomize on both kernel physical and virtual
> > address separately. Now the separate randomization has been done,
> > kernel physical address can be randomized to [16M, 4G], and virtual
> > address can be randomzed to [16M, 1G]. Below is the post.
> >
> >
> > Now I am trying to make kernel physical address randomize anywhere, not
> > limited to below 4G. As you know in arch/x86/boot/compressed/head_64.S a
> > identity mapping of 0~4G has been built, for address above 4G I added an
> > IDT and #PF handler. Then I hardcoded the output address of
> > choose_kernel_location as 5G, the #PF handler worked, however it will
> > reboot in arch/x86/kernel/head_64.S.
> For 64bit, I'd like to see bootloader could load kernel to random hw address.
> otherwise you will need to set another ident mapping for new range.

Hi Yinghai,

I am sorry I didn't get what you mean. I have tried to set another ident
mapping for new range and it is successful seeing from debug message
printing. However it always reboot because of GPF. That's why I made
that small debug patch which add another 4G ident mapping and hardcoded
to put kernel between 4G and 8G.

Could you say more of it? Or which direction should I go?

Thanks a lot for your help!


> Thanks
> Yinghai
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at