qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH 4/4] i8254: convert to qdev


From: Blue Swirl
Subject: [Qemu-devel] Re: [PATCH 4/4] i8254: convert to qdev
Date: Sun, 6 Mar 2011 23:15:56 +0200

On Sun, Mar 6, 2011 at 10:45 PM, Anthony Liguori <address@hidden> wrote:
> On 03/06/2011 12:06 PM, Jan Kiszka wrote:
>>>
>>> In the system we model, the PIT is part of the PIIX3.  The right way to
>>> model it is as a DeviceState that's no_user=1 and created as part of the
>>> initialized of PIIX3 (for the PC at least).
>>>
>>> LPC is still an expansion bus and it's primarily used for discrete
>>> components like a TPM.  For components that are all part of a Super I/O
>>> chip, there really just isn't a bus in the middle.
>>>
>>
>> There surely is some bus (or even multiple), just not external an one.
>>
>
> It almost doesn't matter.  It would look like:
>
> I8254 is-a DeviceState
>
> SuperIO has-a I8254
>
> And the has-a relationship might be some custom bus mechanism (even if it's
> purely a VHDL or software concept).
>
> But in terms of modelling, we make I8254 a DeviceState because we don't care
> what bus it sits on.

Southbridge (+Super I/O) provides an ISA bus, partially internal and
external (LPC). i8254 is one of those devices, so calling it an
ISADevice is not completely wrong.

>> Most of the currently ISA-attached devices are chipset internal.
>
> Yeah, and making them ISA devices was the wrong thing to do.  This is all
> going to have to be redone in the not too distant future.

I don't think the recent discussion about device models was very
conclusive. Maybe patches would clarify.

> An is-a relationship only makes sense when the device is naturally
> represented as the parent object.
>
>>  They
>> belong to the PIIX3, so they need to be attached to some bus that is
>> owned by this device. If that is its ISA bus or a separate one for
>> internal devices - really, this looks like an academic discussion to me.
>>
>
> It's far from academic as this is user-visible and visible via the command
> line.

Currently the device tree looks like this (extracted from 'info qtree' output):
bus: main-system-bus
  type System
  dev: i440FX-pcihost, id ""
    irq 0
    bus: pci.0
      type PCI
      dev: PIIX3, id ""
        class ISA bridge, addr 00:01.0, pci id 8086:7000 (sub 1af4:1100)
        bus: isa.0
          type ISA
          dev: isa-pit, id ""
            dev-prop: irq = 0
            dev-prop: iobase = 0x40

I don't think this is completely wrong. 'isa-pit' device is in fact
part of PIIX3 and that is not visible. The tree should probably
reflect that somehow (for example, name the device PIIX3-isa-pit).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]