• Changbin Du's avatar
    drm/i915/gvt: Add support for PCIe extended configuration space · 02d578e5
    Changbin Du authored
    IGD is PCIe device and has extended configuration space. Checking
    the binary dump, we can see we have Caps located out of PCI compatible
    Configuration Space range.
    
    0x000: 86 80 12 19 17 04 10 00 06 00 00 03 00 00 00 00
    0x010: 04 00 00 10 08 00 00 00 0c 00 00 00 08 00 00 00
    0x020: 00 00 00 00 00 00 00 00 00 00 00 00 28 10 b9 06
    0x030: 00 f8 ff ff 40 00 00 00 00 00 00 00 0b 01 00 00
    0x040: 09 70 0c 01 71 26 01 62 c8 00 04 84 00 00 00 00
    0x050: c1 00 00 00 39 00 00 00 00 00 00 00 01 00 00 a2
    0x060: 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x070: 10 ac 92 00 00 80 00 10 00 00 00 00 00 00 00 00
    0x080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x0a0: 00 00 00 00 00 00 00 00 00 00 00 00 05 d0 01 00
    0x0b0: 18 00 e0 fe 00 00 00 00 00 00 00 00 00 00 00 00
    0x0c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x0d0: 01 00 22 00 00 80 00 00 00 00 00 00 00 00 00 00
    0x0e0: 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00
    0x0f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x100: 1b 00 01 20 02 14 00 00 00 00 00 00 00 00 00 00
    ...
    
    Currently, we only emulate the PCI compatible Configuration Space.
    This is okay if we attach vGPU to PCI bus. But when we attach to
    a PCI Express bus (when Qemu emulates a Intel Q35 chipset which has
    PCIe slot), it will not work. Extended Configuration Space is required
    for a PCIe device.
    
    This patch extended the virtual configuration space from 256 bytes
    to 4KB bytes. So we are to be a *real* PCIe device. And for the
    Extended CapList we keep same to physical GPU.
    
    Cc: Laszlo Ersek <lersek@redhat.com>
    Tested-by: default avatarLaszlo Ersek <lersek@redhat.com>
    Signed-off-by: default avatarChangbin Du <changbin.du@intel.com>
    Signed-off-by: default avatarZhenyu Wang <zhenyuw@linux.intel.com>
    02d578e5
cfg_space.c 10.9 KB