On 2024/9/30 15:42, Tian, Kevin wrote:
From: Liu, Yi L yi.l.liu@intel.com Sent: Thursday, September 12, 2024 9:13 PM
@@ -191,13 +187,25 @@ int iommufd_fault_domain_replace_dev(struct iommufd_device *idev, return ret; }
- ret = __fault_domain_replace_dev(idev, hwpt, old);
if (hwpt->fault) {
curr = __fault_domain_replace_dev(idev, hwpt, old);ret = IS_ERR(curr) ? PTR_ERR(curr) : 0;} else {
ret = iommu_replace_group_handle(idev->igroup->group,hwpt->domain, NULL);}
if (ret) { if (iopf_on) iommufd_fault_iopf_disable(idev); return ret; }
if (curr) {
iommufd_auto_response_faults(old, curr);kfree(curr);}
this is incorrect. The old code does auto response as long as old->fault is true and replace succeeds. But now you make it an operation only when hwpt->fault is true.
oops, yes it is. needs to get the curr handle in this function instead of getting it from the __fault_domain_replace_dev() helper.