[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 10/10] x86/MSI-X: provide hypercall interface for mask-all control
>>> On 05.06.15 at 17:57, <andrew.cooper3@xxxxxxxxxx> wrote: > On 05/06/15 12:28, Jan Beulich wrote: >> Qemu shouldn't be fiddling with this bit directly, as the hypervisor >> may (and now does) use it for its own purposes. Provide it with a >> replacement interface, allowing the hypervisor to track host and guest >> masking intentions independently (clearing the bit only when both want >> it clear). >> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> >> --- >> Whether the permission check should really be an XSM_TARGET one needs >> to be determined: That allowing the guest to issue the hypercalls on >> itself means permitting it to bypass the device model, and thus render >> device model state stale. > > I concur. > > On the other hand, there should be nothing the guest could do with > access to these hypercalls which would damage Xen itself. That's exactly the reason I have it as it is now. >> --- a/tools/libxc/xc_physdev.c >> +++ b/tools/libxc/xc_physdev.c >> @@ -112,3 +112,38 @@ int xc_physdev_unmap_pirq(xc_interface * >> return rc; >> } >> >> +int xc_physdev_msix_enable(xc_interface *xch, >> + int segment, >> + int bus, >> + int devfn, >> + int on) >> +{ >> + struct physdev_pci_device dev = { >> + .seg = segment, >> + .bus = bus, >> + .devfn = devfn >> + }; >> + >> + return do_physdev_op(xch, >> + on ? PHYSDEVOP_msix_enable >> + : PHYSDEVOP_msix_disable, >> + &dev, sizeof(dev)); >> +} > > xc_physdev_misx_enable(xch, X, Y, Z, 0) is slightly misleading to read... > >> + >> +int xc_physdev_msix_mask_all(xc_interface *xch, >> + int segment, >> + int bus, >> + int devfn, >> + int mask) >> +{ >> + struct physdev_pci_device dev = { >> + .seg = segment, >> + .bus = bus, >> + .devfn = devfn >> + }; >> + >> + return do_physdev_op(xch, >> + mask ? PHYSDEVOP_msix_mask_all >> + : PHYSDEVOP_msix_unmask_all, >> + &dev, sizeof(dev)); >> +} > > And equally xc_physdev_misx_mask_all(xch, X, Y, Z, 0). > > I think it would be cleaner to have something like > > xc_physdev_msix_manage(xch, X, Y, Z, PHYSDEVOP_msix_XXX) > > which results in far more readable client code. But will require callers to include xen/physdev.h which I think otherwise they wouldn't have to. Anyway, I'll wait for what the tool stack and qemu maintainers say. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |