[coreboot] I've turned on paging as a test
Stefan Reinauer
stefan.reinauer at coreboot.org
Mon Mar 17 00:40:38 CET 2014
> On Mar 15, 2014, at 10:22, Kevin O'Connor <kevin at koconnor.net> wrote:
>
>> On Wed, Mar 12, 2014 at 09:12:05PM +0100, Stefan Reinauer wrote:
>> * Peter Stuge <peter at stuge.se> [140312 19:08]:
>>> ron minnich wrote:
>>>> For the base identity map on x86-32, it's one page for 4G.
>>>> For a map which locks out page 0, it's two pages.
>>>
>>> I think it would be great if you could write up what you actually
>>> want to accomplish.
>>
>> - be able to run code at any address without run time
>> linking/relocating. This can also greatly simplify the way
>> we do romstage today (which can't be moved inside the CBFS, for
>> example)
>
> Why can't romstage be moved into CBFS? Is this in reference to one of
> the non X86 platforms?
Romstage is in CBFS but it's linked to its final position and can't be moved
>
> Implementing relocation via page tables seems reminiscent of UEFI, and
> I'm sure you can imagine my reaction to that.
>
> For what it's worth, SeaBIOS implements self relocation and the code
> to do that is about 100 lines (see src/post.c:reloc_preinit() and
> scripts/layoutrom.py:getRelocs() ). This wouldn't work for romstage,
> but self relocation isn't too difficult for code that runs in ram.
coreboot does that too with relocatable ramstage
>
>> - be able to write protect code, eg prevent exploits to rewrite code.
>> - catch NULL pointer accesses
>> - catch writes to non-designated memory, e.g. overwriting OS
>> memory on resume
>
> In these fault situations, what can be done though? If the basic boot
> system fails, the machine is a brick regardless of whether or not it
> caught itself failing.
>
>> - run in 64 bit mode, for easy addressing of memory / devices,
>> have more registers available for more compact code, etc.
>
> Agreed. I don't see any problems with a 1:1 page mapping where it's
> useful.
>
> -Kevin
>
More information about the coreboot
mailing list