On 11/24/2010 11:07 AM, Avi Kivity wrote:
On 11/24/2010 07:02 PM, Gleb Natapov wrote:
On Wed, Nov 24, 2010 at 06:56:52PM +0200, Avi Kivity wrote:
> On 11/24/2010 06:52 PM, Gleb Natapov wrote:
> >> Plus some magic glue. You can't say it is an ISA bridge. It's
> >> exactly what its spec says it is.
> >>
> >First thing my spec says is "Bridge Between the PCI Bus and ISA Bus"
>
> It's the first item in a list of features. Be serious.
>
I am serious. The fact that it provides IDE or kbd doesn't make this IDE
or kbd special. It means that it has gates that provide functionality of
those chips. Just like SoC really. IDE doesn't become part of ARM cpu
just because some SoC somewhere include them on the same silicon.
They aren't special. They're just part of the PIIX3 device.
So based on the IRC discussion that pbrook and I have been having, you
can think of things like this:
class PIIX3 {
public:
Plug<I8042> i8042;
};
A plug allows conditional composition whereas the absence of a plug
means unconditional composition. There is a mechanism to name plugs and
you can have an i8042 factory to create the device and then
conditionally attach it to the plug.
This is fine even though I think it's unnecessary abstraction. What I
object to is introducing an artificial ISA bus layering.
A Plug<Type> is basically a Type * except it has some additional
features. It provides null-pointer dereference checking, provides a
marshalling interface, and supports the ability to be locked which
enables a device to enforce that plugging cannot happen after the device
is realized (power-on).
> When we do have a spec for something, we should implement it as the
> spec says, not according to our ideas of how it should be.
>
PIIX3 is composite device. It is not one device. To emulate it you need
to provide functionality of all devices included om PIIX3. Spec says
nothing about how it should be implemented.
Right, we could (and probably should) implement it as
class PIIX3 {
private:
class isa_bridge { .... };
isa_bridge isa_bridge;
No, PIIX3 is an PCI-to-ISA bridge.
It's a fundamental part of the definition of it as a PCI device.
Regards,
Anthony Liguori
i8042 kbc;
...
}
So the thing becomes just a glue layer for various components. But
when pc.c says PIIX3, it gets what the spec says, not something else.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html