|
@@ -66,48 +66,6 @@ int setup_vgpu_mmio(struct intel_vgpu *vgpu)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void setup_vgpu_cfg_space(struct intel_vgpu *vgpu,
|
|
|
|
- struct intel_vgpu_creation_params *param)
|
|
|
|
-{
|
|
|
|
- struct intel_gvt *gvt = vgpu->gvt;
|
|
|
|
- const struct intel_gvt_device_info *info = &gvt->device_info;
|
|
|
|
- u16 *gmch_ctl;
|
|
|
|
- int i;
|
|
|
|
-
|
|
|
|
- memcpy(vgpu_cfg_space(vgpu), gvt->firmware.cfg_space,
|
|
|
|
- info->cfg_space_size);
|
|
|
|
-
|
|
|
|
- if (!param->primary) {
|
|
|
|
- vgpu_cfg_space(vgpu)[PCI_CLASS_DEVICE] =
|
|
|
|
- INTEL_GVT_PCI_CLASS_VGA_OTHER;
|
|
|
|
- vgpu_cfg_space(vgpu)[PCI_CLASS_PROG] =
|
|
|
|
- INTEL_GVT_PCI_CLASS_VGA_OTHER;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /* Show guest that there isn't any stolen memory.*/
|
|
|
|
- gmch_ctl = (u16 *)(vgpu_cfg_space(vgpu) + INTEL_GVT_PCI_GMCH_CONTROL);
|
|
|
|
- *gmch_ctl &= ~(BDW_GMCH_GMS_MASK << BDW_GMCH_GMS_SHIFT);
|
|
|
|
-
|
|
|
|
- intel_vgpu_write_pci_bar(vgpu, PCI_BASE_ADDRESS_2,
|
|
|
|
- gvt_aperture_pa_base(gvt), true);
|
|
|
|
-
|
|
|
|
- vgpu_cfg_space(vgpu)[PCI_COMMAND] &= ~(PCI_COMMAND_IO
|
|
|
|
- | PCI_COMMAND_MEMORY
|
|
|
|
- | PCI_COMMAND_MASTER);
|
|
|
|
- /*
|
|
|
|
- * Clear the bar upper 32bit and let guest to assign the new value
|
|
|
|
- */
|
|
|
|
- memset(vgpu_cfg_space(vgpu) + PCI_BASE_ADDRESS_1, 0, 4);
|
|
|
|
- memset(vgpu_cfg_space(vgpu) + PCI_BASE_ADDRESS_3, 0, 4);
|
|
|
|
- memset(vgpu_cfg_space(vgpu) + INTEL_GVT_PCI_OPREGION, 0, 4);
|
|
|
|
-
|
|
|
|
- for (i = 0; i < INTEL_GVT_MAX_BAR_NUM; i++) {
|
|
|
|
- vgpu->cfg_space.bar[i].size = pci_resource_len(
|
|
|
|
- gvt->dev_priv->drm.pdev, i * 2);
|
|
|
|
- vgpu->cfg_space.bar[i].tracked = false;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
void populate_pvinfo_page(struct intel_vgpu *vgpu)
|
|
void populate_pvinfo_page(struct intel_vgpu *vgpu)
|
|
{
|
|
{
|
|
/* setup the ballooning information */
|
|
/* setup the ballooning information */
|
|
@@ -300,7 +258,7 @@ static struct intel_vgpu *__intel_gvt_create_vgpu(struct intel_gvt *gvt,
|
|
vgpu->gvt = gvt;
|
|
vgpu->gvt = gvt;
|
|
bitmap_zero(vgpu->tlb_handle_pending, I915_NUM_ENGINES);
|
|
bitmap_zero(vgpu->tlb_handle_pending, I915_NUM_ENGINES);
|
|
|
|
|
|
- setup_vgpu_cfg_space(vgpu, param);
|
|
|
|
|
|
+ intel_vgpu_init_cfg_space(vgpu, param->primary);
|
|
|
|
|
|
ret = setup_vgpu_mmio(vgpu);
|
|
ret = setup_vgpu_mmio(vgpu);
|
|
if (ret)
|
|
if (ret)
|