]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iommu/vt-d: Remove LPIG from page group response descriptor
authorLu Baolu <baolu.lu@linux.intel.com>
Thu, 18 Sep 2025 05:02:01 +0000 (13:02 +0800)
committerJoerg Roedel <joerg.roedel@amd.com>
Fri, 19 Sep 2025 07:43:20 +0000 (09:43 +0200)
Bit 66 in the page group response descriptor used to be the LPIG (Last
Page in Group), but it was marked as Reserved since Specification 4.0.
Remove programming on this bit to make it consistent with the latest
specification.

Existing hardware all treats bit 66 of the page group response descriptor
as "ignored", therefore this change doesn't break any existing hardware.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Link: https://lore.kernel.org/r/20250901053943.1708490-1-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
drivers/iommu/intel/iommu.h
drivers/iommu/intel/prq.c

index 7da1cf88ce80f65507c55451cbeccec409185931..21d79414385c0937fbc7ee40f12c1423c25e37be 100644 (file)
@@ -460,7 +460,6 @@ enum {
 #define QI_PGRP_PASID(pasid)   (((u64)(pasid)) << 32)
 
 /* Page group response descriptor QW1 */
-#define QI_PGRP_LPIG(x)                (((u64)(x)) << 2)
 #define QI_PGRP_IDX(idx)       (((u64)(idx)) << 3)
 
 
index 52570e42a14c05b7492957909568805dc9c7b6ef..ff63c228e6e19d9a01be6f9eac307957d846dd6f 100644 (file)
@@ -151,8 +151,7 @@ static void handle_bad_prq_event(struct intel_iommu *iommu,
                        QI_PGRP_PASID_P(req->pasid_present) |
                        QI_PGRP_RESP_CODE(result) |
                        QI_PGRP_RESP_TYPE;
-       desc.qw1 = QI_PGRP_IDX(req->prg_index) |
-                       QI_PGRP_LPIG(req->lpig);
+       desc.qw1 = QI_PGRP_IDX(req->prg_index);
 
        qi_submit_sync(iommu, &desc, 1, 0);
 }
@@ -379,19 +378,17 @@ void intel_iommu_page_response(struct device *dev, struct iopf_fault *evt,
        struct iommu_fault_page_request *prm;
        struct qi_desc desc;
        bool pasid_present;
-       bool last_page;
        u16 sid;
 
        prm = &evt->fault.prm;
        sid = PCI_DEVID(bus, devfn);
        pasid_present = prm->flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID;
-       last_page = prm->flags & IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE;
 
        desc.qw0 = QI_PGRP_PASID(prm->pasid) | QI_PGRP_DID(sid) |
                        QI_PGRP_PASID_P(pasid_present) |
                        QI_PGRP_RESP_CODE(msg->code) |
                        QI_PGRP_RESP_TYPE;
-       desc.qw1 = QI_PGRP_IDX(prm->grpid) | QI_PGRP_LPIG(last_page);
+       desc.qw1 = QI_PGRP_IDX(prm->grpid);
        desc.qw2 = 0;
        desc.qw3 = 0;