/* IOPF */
 int amd_iommu_iopf_init(struct amd_iommu *iommu);
 void amd_iommu_iopf_uninit(struct amd_iommu *iommu);
+void amd_iommu_page_response(struct device *dev, struct iopf_fault *evt,
+                            struct iommu_page_response *resp);
 
 /* GCR3 setup */
 int amd_iommu_set_gcr3(struct iommu_dev_data *dev_data,
 void __init amd_iommu_free_ppr_log(struct amd_iommu *iommu);
 void amd_iommu_enable_ppr_log(struct amd_iommu *iommu);
 void amd_iommu_poll_ppr_log(struct amd_iommu *iommu);
-int amd_iommu_complete_ppr(struct pci_dev *pdev, u32 pasid,
-                          int status, int tag);
+int amd_iommu_complete_ppr(struct device *dev, u32 pasid, int status, int tag);
 
 /*
  * This function flushes all internal caches of
 
        amd_iommu_domain_flush_all(domain);
 }
 
-int amd_iommu_complete_ppr(struct pci_dev *pdev, u32 pasid,
-                          int status, int tag)
+int amd_iommu_complete_ppr(struct device *dev, u32 pasid, int status, int tag)
 {
        struct iommu_dev_data *dev_data;
        struct amd_iommu *iommu;
        struct iommu_cmd cmd;
 
-       dev_data = dev_iommu_priv_get(&pdev->dev);
-       iommu    = get_amd_iommu_from_dev(&pdev->dev);
+       dev_data = dev_iommu_priv_get(dev);
+       iommu    = get_amd_iommu_from_dev(dev);
 
        build_complete_ppr(&cmd, dev_data->devid, pasid, status,
                           tag, dev_data->pri_tlp);
        .def_domain_type = amd_iommu_def_domain_type,
        .dev_enable_feat = amd_iommu_dev_enable_feature,
        .dev_disable_feat = amd_iommu_dev_disable_feature,
+       .page_response = amd_iommu_page_response,
        .default_domain_ops = &(const struct iommu_domain_ops) {
                .attach_dev     = amd_iommu_attach_device,
                .map_pages      = amd_iommu_map_pages,
 
        iopf_queue_free(iommu->iopf_queue);
        iommu->iopf_queue = NULL;
 }
+
+void amd_iommu_page_response(struct device *dev, struct iopf_fault *evt,
+                            struct iommu_page_response *resp)
+{
+       amd_iommu_complete_ppr(dev, resp->pasid, resp->code, resp->grpid);
+}