bool primary)
 {
        struct intel_gvt *gvt = vgpu->gvt;
+       struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev);
        const struct intel_gvt_device_info *info = &gvt->device_info;
        u16 *gmch_ctl;
        u8 next;
        memset(vgpu_cfg_space(vgpu) + INTEL_GVT_PCI_OPREGION, 0, 4);
 
        vgpu->cfg_space.bar[INTEL_GVT_PCI_BAR_GTTMMIO].size =
-               pci_resource_len(gvt->gt->i915->drm.pdev, 0);
+               pci_resource_len(pdev, 0);
        vgpu->cfg_space.bar[INTEL_GVT_PCI_BAR_APERTURE].size =
-               pci_resource_len(gvt->gt->i915->drm.pdev, 2);
+               pci_resource_len(pdev, 2);
 
        memset(vgpu_cfg_space(vgpu) + PCI_ROM_ADDRESS, 0, 4);
 
 
 static int expose_firmware_sysfs(struct intel_gvt *gvt)
 {
        struct intel_gvt_device_info *info = &gvt->device_info;
-       struct pci_dev *pdev = gvt->gt->i915->drm.pdev;
+       struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev);
        struct gvt_firmware_header *h;
        void *firmware;
        void *p;
 
 static void clean_firmware_sysfs(struct intel_gvt *gvt)
 {
-       struct pci_dev *pdev = gvt->gt->i915->drm.pdev;
+       struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev);
 
        device_remove_bin_file(&pdev->dev, &firmware_attr);
        vfree(firmware_attr.private);
                           const struct firmware *fw)
 {
        struct intel_gvt_device_info *info = &gvt->device_info;
-       struct pci_dev *pdev = gvt->gt->i915->drm.pdev;
+       struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev);
        struct gvt_firmware_header *h;
        unsigned long id, crc32_start;
        const void *mem;
 int intel_gvt_load_firmware(struct intel_gvt *gvt)
 {
        struct intel_gvt_device_info *info = &gvt->device_info;
-       struct pci_dev *pdev = gvt->gt->i915->drm.pdev;
+       struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev);
        struct intel_gvt_firmware *firmware = &gvt->firmware;
        struct gvt_firmware_header *h;
        const struct firmware *fw;
 
        gvt_dbg_core("request hw state firmware %s...\n", path);
 
-       ret = request_firmware(&fw, path, &gvt->gt->i915->drm.pdev->dev);
+       ret = request_firmware(&fw, path, gvt->gt->i915->drm.dev);
        kfree(path);
 
        if (ret)
 
 
 static void ppgtt_free_spt(struct intel_vgpu_ppgtt_spt *spt)
 {
-       struct device *kdev = &spt->vgpu->gvt->gt->i915->drm.pdev->dev;
+       struct device *kdev = spt->vgpu->gvt->gt->i915->drm.dev;
 
        trace_spt_free(spt->vgpu->id, spt, spt->guest_page.type);
 
 static struct intel_vgpu_ppgtt_spt *ppgtt_alloc_spt(
                struct intel_vgpu *vgpu, enum intel_gvt_gtt_type type)
 {
-       struct device *kdev = &vgpu->gvt->gt->i915->drm.pdev->dev;
+       struct device *kdev = vgpu->gvt->gt->i915->drm.dev;
        struct intel_vgpu_ppgtt_spt *spt = NULL;
        dma_addr_t daddr;
        int ret;
                                vgpu->gvt->device_info.gtt_entry_size_shift;
        void *scratch_pt;
        int i;
-       struct device *dev = &vgpu->gvt->gt->i915->drm.pdev->dev;
+       struct device *dev = vgpu->gvt->gt->i915->drm.dev;
        dma_addr_t daddr;
 
        if (drm_WARN_ON(&i915->drm,
 static int release_scratch_page_tree(struct intel_vgpu *vgpu)
 {
        int i;
-       struct device *dev = &vgpu->gvt->gt->i915->drm.pdev->dev;
+       struct device *dev = vgpu->gvt->gt->i915->drm.dev;
        dma_addr_t daddr;
 
        for (i = GTT_TYPE_PPGTT_PTE_PT; i < GTT_TYPE_MAX; i++) {
 {
        int ret;
        void *page;
-       struct device *dev = &gvt->gt->i915->drm.pdev->dev;
+       struct device *dev = gvt->gt->i915->drm.dev;
        dma_addr_t daddr;
 
        gvt_dbg_core("init gtt\n");
  */
 void intel_gvt_clean_gtt(struct intel_gvt *gvt)
 {
-       struct device *dev = &gvt->gt->i915->drm.pdev->dev;
+       struct device *dev = gvt->gt->i915->drm.dev;
        dma_addr_t daddr = (dma_addr_t)(gvt->gtt.scratch_mfn <<
                                        I915_GTT_PAGE_SHIFT);
 
 
                const char *name)
 {
        const char *driver_name =
-               dev_driver_string(&gvt->gt->i915->drm.pdev->dev);
+               dev_driver_string(gvt->gt->i915->drm.dev);
        int i;
 
        name += strlen(driver_name) + 1;
 static void init_device_info(struct intel_gvt *gvt)
 {
        struct intel_gvt_device_info *info = &gvt->device_info;
-       struct pci_dev *pdev = gvt->gt->i915->drm.pdev;
+       struct pci_dev *pdev = to_pci_dev(gvt->gt->i915->drm.dev);
 
        info->max_support_vgpus = 8;
        info->cfg_space_size = PCI_CFG_SPACE_EXP_SIZE;
        intel_gvt_debugfs_init(gvt);
 
        gvt_dbg_core("gvt device initialization is done\n");
-       intel_gvt_host.dev = &i915->drm.pdev->dev;
+       intel_gvt_host.dev = i915->drm.dev;
        intel_gvt_host.initialized = true;
        return 0;
 
 
 static int gvt_dma_map_page(struct intel_vgpu *vgpu, unsigned long gfn,
                dma_addr_t *dma_addr, unsigned long size)
 {
-       struct device *dev = &vgpu->gvt->gt->i915->drm.pdev->dev;
+       struct device *dev = vgpu->gvt->gt->i915->drm.dev;
        struct page *page = NULL;
        int ret;
 
 static void gvt_dma_unmap_page(struct intel_vgpu *vgpu, unsigned long gfn,
                dma_addr_t dma_addr, unsigned long size)
 {
-       struct device *dev = &vgpu->gvt->gt->i915->drm.pdev->dev;
+       struct device *dev = vgpu->gvt->gt->i915->drm.dev;
 
        dma_unmap_page(dev, dma_addr, size, PCI_DMA_BIDIRECTIONAL);
        gvt_unpin_guest_page(vgpu, gfn, size);