lkml.org 
[lkml]   [2021]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC] /dev/ioasid uAPI proposal
    On Mon, Jun 07, 2021 at 12:59:46PM -0600, Alex Williamson wrote:

    > > It is up to qemu if it wants to proceed or not. There is no issue with
    > > allowing the use of no-snoop and blocking wbinvd, other than some
    > > drivers may malfunction. If the user is certain they don't have
    > > malfunctioning drivers then no issue to go ahead.
    >
    > A driver that knows how to use the device in a coherent way can
    > certainly proceed, but I suspect that's not something we can ask of
    > QEMU. QEMU has no visibility to the in-use driver and sketchy ability
    > to virtualize the no-snoop enable bit to prevent non-coherent DMA from
    > the device. There might be an experimental ("x-" prefixed) QEMU device
    > option to allow user override, but QEMU should disallow the possibility
    > of malfunctioning drivers by default. If we have devices that probe as
    > supporting no-snoop, but actually can't generate such traffic, we might
    > need a quirk list somewhere.

    Compatibility is important, but when I look in the kernel code I see
    very few places that call wbinvd(). Basically all DRM for something
    relavent to qemu.

    That tells me that the vast majority of PCI devices do not generate
    no-snoop traffic.

    > > I think it makes the software design much simpler if the security
    > > check is very simple. Possessing a suitable device in an ioasid fd
    > > container is enough to flip on the feature and we don't need to track
    > > changes from that point on. We don't need to revoke wbinvd if the
    > > ioasid fd changes, for instance. Better to keep the kernel very simple
    > > in this regard.
    >
    > You're suggesting that a user isn't forced to give up wbinvd emulation
    > if they lose access to their device?

    Sure, why do we need to be stricter? It is the same logic I gave
    earlier, once an attacker process has access to wbinvd an attacker can
    just keep its access indefinitely.

    The main use case for revokation assumes that qemu would be
    compromised after a device is hot-unplugged and you want to block off
    wbinvd. But I have a hard time seeing that as useful enough to justify
    all the complicated code to do it...

    For KVM qemu can turn on/off on hot plug events as it requires to give
    VM security. It doesn't need to rely on the kernel to control this.

    But I think it is all fine tuning, the basic idea seems like it could
    work, so we are not blocked here on kvm interactions.

    Jason

    \
     
     \ /
      Last update: 2021-06-07 21:08    [W:2.849 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site