[coreboot] libpci accesses in CAR, I need a suggestion
Pete Batard
pete at akeo.ie
Thu Aug 11 01:36:26 CEST 2011
On 2011.08.10 23:42, Stefan Reinauer wrote:
> I think CAR only works well for data, not for instructions. That said,
> you can cache the ROM, but probably not copy it to cache and jmp there.
I've had success doing just that (copying/uploading instructions to
cache and then jumping to it) in UBRX [1]. This is basically the
approach I'd envision to solve the flashrom in panic-room issues on my end.
Of course this requires initializing and using the L2-Unified cache for
the program, rather than L1, since L1-Data and L1-Instructions are
pretty much always separated, which in turn requires a different
approach to the panic room, but at least on x86, this shouldn't be much
of an issue.
For this to work, one only needs a panic room that includes a basic
scripting console (such as the one UBRX provides as per see [2]), to
allow the *user* to set MTRRs and L1+L2 CAR according to their CPU, as
well as the upload and flush of a binary executable into L2-Unified.
While this may sound like a lot of extra work for the user, eventually
this should boil down to a copy/paste of a pre-existing CPU script,
which we'd provide, and some Y-modem transfer of an executable payload.
In my view, this is the panic-room approach that offers the greatest
flexibility as, for a flashrom payload, the immediate advantages would be:
- flashrom executable from user upload rather than flash, meaning both
freed up flash space and bugfixes/improvement to flashrom being able to
be applied immediately rather than requiring a bootblock reflash
- size of the flashrom executable only limited by the size of L2, which
is a lot larger than L1
- whilst still bare-metal, flashrom can be compiled with gcc rather than
ROM_CC, as stack (from the L1-Data CAR init) is available
- the whole BIOS is flashable at once, since flashrom is executed from
cache and not XIP.
Of course you guys may think this is a shameless plug for UBRX (and
you're probably right) but I have reason to think that, at least for
x86, this approach could prove very effective. Oh and of course, what
works for flashrom, would also work for SerialICE and other goodies...
Regards,
/Pete
[1]
http://code.google.com/p/akeo/source/browse/ubrx/scripts/intel_hello_world_pIIIs1.txt
[2] http://code.google.com/p/akeo/source/browse/ubrx/USAGE
More information about the coreboot
mailing list