[Intel-gfx] Accelerated read from WC mem (i915_memcpy_from_wc()) may not work in virtualization world

Du, Changbin changbin.du at intel.com
Fri Dec 22 02:51:47 UTC 2017


On Thu, Dec 21, 2017 at 10:56:38AM +0000, Chris Wilson wrote:
> Quoting Du, Changbin (2017-12-21 09:52:16)
> > Hi Chris,
> > Our QA reported a problem caused by movntdqa instructions. Currently, the KVM
> > hypervisor doesn't support VEX-prefix instructions emulation. If users passthrough
> > a GPU to guest with vfio option 'x-no-mmap=on', then all access to the BARs will
> > be trapped and emulated. The KVM hypervisor would raise an inertal error to qemu
> > which cause the guest killed. (Since 'movntdqa' ins is not supported.)
> > 
> > One possible solution is that disable this optimization at i915_memcpy_init_early.
> > This require us to identify the CPUID to check if it is running in guest mode.
> 
> Is this mode not detected by intel_vgpu_active() ?
>
Here intel_vgpu_active() is not ready to use. i915_memcpy_init_early is executed
before MMIO mapped.

> If we need to disable movntdqa, we need to disable it. But not by
> directly checking CPUID, it should be already decoded into a cpu feature
> flag -- assuming we need more than intel_vgpu_active and possibly
> rearranging the init order.
> -Chris

Yes, for Intel CPU, Bit 31 of ECX of CPUID leaf 0x1 is Hypervisor Present Bit.
So I will write a patch to disable it in hypervisor guest if you don't have
objections. Thanks.

-- 
Thanks,
Changbin Du


More information about the Intel-gfx mailing list