On 1/18/2024 10:26 AM, Ethan Zhao wrote:
On 1/18/2024 8:46 AM, Baolu Lu wrote:
On 1/17/24 5:00 PM, Ethan Zhao wrote:
+ /*
+ * If the ATS invalidation target device is gone this moment
(surprise
+ * removed, died, no response) don't try this request again.
this
+ * request will not get valid result anymore. but the
request was
+ * already submitted to hardware and we predict to get a ITE in
+ * followed batch of request, if so, it will get handled then.
+ */
+ if (target_pdev && !pci_device_is_present(target_pdev))
+ return -EINVAL;
Again, we should not ignore the error triggered by the current request.
Do not leave it to the next one. The WAIT descriptor is a fence. Handle
everything within its boundary.
We didn't set fence bit to every ATS invalidation wait descriptor,
only the intel_drain_pasid_prq() queue a drain page requests with FN
sit, but that is not called in hotplug removal path.
So, in fact so far, it doesn't act as a fence except the
intel_drain_pasid_prq() ,
and it never handle everthing within its border.
Thanks,
Ethan
Thanks,
Ethan
Best regards,
baolu