On 06/30/2011 07:58 PM, Benjamin Herrenschmidt wrote:
On Thu, 2011-06-30 at 15:59 +0000, Yoder Stuart-B08248 wrote:
This avoids needing to pass the host device tree, but could
get awkward-- the i2c example above is very simple, some device
nodes are very large with a complex hierarchy of subnodes and
could be hundreds of lines of text to represent a single
node.
It gets more complicated...
So, from a qemu command line perspective, all you should have to do is
pass qemu the device-tree -path- to the device you want to pass-trough
(you may support passing a full hierarchy here).
I agree in principle but I think it should be done in a slightly
different way.
I think we ought to support composing a device by passthrough. For
instance, something like:
[physical-device "mydev"]
region[0].file = "/dev/mem"
region[0].guest_address = "0x42232000"
region[0].file_offset = "0x23423400"
region[0].size = "4096"
irq[0].guest_irq = "10"
irq[0].host_irq = "10"
This should be independent of anything to do with device tree. This
would be useful for x86 too to assign platform devices (like the HPET).
I think there should be a separate mechanism to manipulate the guest
device tree, just like there are mechanisms to manipulate the guest's
ACPI tables.
Given these two mechanisms, there should be a simple command line like
Ben has suggested that just takes a host device tree path and Just
Works. It really is just a convenience interface though.
With raw mechanisms like I described above, it would give you the
flexibility to pass through a device with a modified host tree fragment
without having an overly complicated command line interface for the more
common case.
Regards,
Anthony Liguori