All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gerd Hoffmann <kraxel@redhat.com>
To: Blue Swirl <blauwirbel@gmail.com>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH, RFC 0/5] Improve device info handling
Date: Wed, 02 Sep 2009 18:42:07 +0200	[thread overview]
Message-ID: <4A9EA05F.50100@redhat.com> (raw)
In-Reply-To: <f43fc5580909020741y6453fd6bvfcccdcf509b52106@mail.gmail.com>

   Hi,

>> The qdev root is the main_system_bus right now, I don't see a need to change
>> that.  All core devices (cpus, memory, pic, ...) can be children of the main
>> system bus.
>
> That level is too low, because the metamachine level would not be
> interested in the internals of the pc device (except generic
> parameters like memory, number of CPUs etc), but how it connects to
> the host devices.

IMO the connection to the host device belongs to the guest device which 
needs the link.  i.e. the scsi-disk driver should handle that, not some 
metamachine.

>> We have to clearly separate between host state and guest state.
>> qdev is about guest state.
>
> Yes, it's about guest state _now_, but why limit it to that? But if
> host devices as a class are really different from guest device, we
> could have something similar to qdev but for host devices. I still
> don't see a need for a special type.

There are a number of differences.  guest devices belong to a emulated 
bus (ide/pci/usb/scsi/whatever).  host devices don't.  guest devices 
form a device tree.  host devices are simple flat lists.

It might make sense to create something simliar to qdev for the host 
devices.

>> A disk has two sides:  The host side (virtual drive foo is a lvm volume in
>> raw format / a file in qcow2 format / a iso image / whatever else) and the
>> guest side (this virtual drive is a master ide disk / scsi disk with id 3 /
>> virtio disk / ...).  Only the later is represented by qdev.  The link
>> between the two is a property.
>
> There is no need for a link. Instead of the property stuff, the pc
> qdev should make available mappable objects (drive placeholders),

The pc qdev doesn't know which "mappable objects" exist.  The knowledge 
is scattered all over the devices (ide / scsi / virtio-blk / usb-storage 
/ ...).  And not all of them are present in all configurations.

> the
> metamachine would plug in the host drives by mapping the drive to a
> host drive. It's just like device vs. address: drive placeholder vs.
> host drive.

It works the other way around:  We have a linked list of host drives 
(with names).  guest drives have a property, setting the property will 
lookup the host drive by name (only virtio-blk is merged, patches for 
scsi-disk & usb-storage are on the list).

> Consider vlan:
>     DeviceState *gdev, *hdev, *vlan;
>     VLAN *gvlan, *hvlan;
>
>     hdev = qdev_create(NULL, "host");
>     qdev_init(hdev);
>
>     gdev = qdev_create(NULL, "pc");
>     qdev_init(gdev);
>
>     vlan = qdev_create(NULL, "vlan");
>     qdev_init(gdev);
>     gvlan = qdev_get_vlan_in(gdev, 0); // Analogous to gpio

Same problem as with the drives: pc doesn't handle vlans, the nic driver 
somewhere down the device tree does.

cheers,
   Gerd

  reply	other threads:[~2009-09-02 16:42 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-29 14:06 [Qemu-devel] [PATCH, RFC 0/5] Improve device info handling Blue Swirl
2009-08-31  8:12 ` Gerd Hoffmann
2009-08-31 15:23   ` Blue Swirl
2009-09-01  7:54     ` Gerd Hoffmann
2009-09-01 16:21       ` Blue Swirl
2009-09-02  6:35         ` Gerd Hoffmann
2009-09-02 14:41           ` Blue Swirl
2009-09-02 16:42             ` Gerd Hoffmann [this message]
2009-09-02 17:53               ` Blue Swirl

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A9EA05F.50100@redhat.com \
    --to=kraxel@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.