Hi,
On 11/03/2015 13:50, Julien Grall wrote:
On 11/03/2015 12:37, Ian Campbell wrote:
On Tue, 2015-03-10 at 16:33 +0000, Julien Grall wrote:
Hi Ian,
On 20/02/15 17:17, Ian Campbell wrote:
+ /* TODO: Do we need to check is_dying? Mostly to protect against
+ * hypercall trying to passthrough a device while we are
+ * dying.
FWIW the PCI case appears not to care...
There is one place in XEN_DOMCTL_assign_device...
Although I don't understand much the usage of is_dying.
+ */
+
+ switch ( domctl->cmd )
+ {
+ case XEN_DOMCTL_assign_device:
+ ret = -ENOSYS;
+ if ( domctl->u.assign_device.dev != XEN_DOMCTL_DEV_DT )
+ break;
You added something similar to iommu_do_pci_domctl, would it not be
preferable for the caller to switch on domctl->u.assign_device.dev and
call the correct iommu_do_*_domctl?
I though about it. It would require to stub iommu_do_*_domctl. So I
preferred to chose the current solution.
You mean iommu_do_{pci,dt}_domctl?
IIRC you already added suitable #defines for when these features are
present, so reusing them at the call sites wouldn't be too bad, or else
stubs aren't the worst thing either.
Hmmm I think I got you point now. Do you mean have something like:
switch (domctl->u.assign_device.dev)
{
#ifdef HAS_PCI
case XEN_DOMCTL_DEV_PCI:
ret = iommu_do_pci_domctl();
break;
#endif
#ifdef HAS_DEVICE_TREE
case XEN_DOMCTL_DEV_DT:
ret = iommu_do_dt_domctl()
break;
#endif
default:
ret = -ENOSYS;
}
I though more about it and it won't be possible to do it unless we
decode DOMCTL too.
This is because the DOMCTL_get_device_group use a different structure
and is only for PCI.
So unless we decide to consolidate the 2 DOMCTL structures in a single
one. I would prefer to keep the current solution with the suggestion
made by Jan earlier.
Regards,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel