On Mon, Dec 13, 2010 at 11:10:38AM +0200, Avi Kivity wrote:
On 12/13/2010 11:03 AM, Gleb Natapov wrote:
We could
also deprecate the old port and use fwcfg for everything
(try fwcfg, fall back to ae00).
fwcfg designed to be simple for easy use by firmware. It has two port
one for index another for value, so its use is racy in multi-threaded SMP
environment. DSDT code is executed in such environment. There is lock
facility in AML, but why complicate things.
I prefer to remove complexity from interfaces and have it in the
implementation instead.
I prefer whatever is simpler :) simpler == less bugs. And
it is not like
we discuss new interface here. You want to deprecate existing interface
in favor of something that was not designed to handle the task.
> We could do this in two ways: by adding a fwcfg
client to the DSDT,
> or by copying the information to system memory, and referencing
> system memory from the DSDT.
>
This is even worse. It requires some fixed address to be shared between
DSDT and Seabios (or alternatively Seabios will have to generate this
part of DSDT dynamically).
Could easily be something in the F segment.
Yes, but then we will have two magic values (fwcfg index + address
in F segment) instead of one (address of pci hot-plug controller).
The F segment address is internal to SeaBIOS; it isn't an external
interface.
Depends on how you define external interface. It can be considered as
interface between OSPM and firmware. Next time layout of F segment
changes in SeaBIOS will you remember fixing DSDT too?
--
Gleb.