static int qxl_drm_freeze(struct drm_device *dev)
 {
-       struct pci_dev *pdev = dev->pdev;
+       struct pci_dev *pdev = to_pci_dev(dev->dev);
        struct qxl_device *qdev = to_qxl(dev);
        int ret;
 
 
                                  struct drm_file *file_priv)
 {
        struct qxl_device *qdev = to_qxl(dev);
+       struct pci_dev *pdev = to_pci_dev(dev->dev);
        struct drm_qxl_clientcap *param = data;
        int byte, idx;
 
        byte = param->index / 8;
        idx = param->index % 8;
 
-       if (dev->pdev->revision < 4)
+       if (pdev->revision < 4)
                return -ENOSYS;
 
        if (byte >= 58)
 
 
 int qxl_irq_init(struct qxl_device *qdev)
 {
+       struct pci_dev *pdev = to_pci_dev(qdev->ddev.dev);
        int ret;
 
        init_waitqueue_head(&qdev->display_event);
        atomic_set(&qdev->irq_received_cursor, 0);
        atomic_set(&qdev->irq_received_io_cmd, 0);
        qdev->irq_received_error = 0;
-       ret = drm_irq_install(&qdev->ddev, qdev->ddev.pdev->irq);
+       ret = drm_irq_install(&qdev->ddev, pdev->irq);
        qdev->ram_header->int_mask = QXL_INTERRUPT_MASK;
        if (unlikely(ret != 0)) {
                DRM_ERROR("Failed installing irq: %d\n", ret);