From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753308AbdHKOlo (ORCPT ); Fri, 11 Aug 2017 10:41:44 -0400 Received: from 8bytes.org ([81.169.241.247]:40250 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753138AbdHKOlY (ORCPT ); Fri, 11 Aug 2017 10:41:24 -0400 From: Joerg Roedel To: iommu@lists.linux-foundation.org Cc: Robin Murphy , dwmw2@infradead.org, Will Deacon , linux-kernel@vger.kernel.org, Joerg Roedel Subject: [PATCH 7/8] iommu/vt-d: Allow to flush more than 4GB of device TLBs Date: Fri, 11 Aug 2017 16:41:17 +0200 Message-Id: <1502462478-22045-8-git-send-email-joro@8bytes.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502462478-22045-1-git-send-email-joro@8bytes.org> References: <1502462478-22045-1-git-send-email-joro@8bytes.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel The shift qi_flush_dev_iotlb() is done on an int, which limits the mask to 32 bits. Make the mask 64 bits wide so that more than 4GB of address range can be flushed at once. Signed-off-by: Joerg Roedel --- drivers/iommu/dmar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index c8b0329..ca5ebae 100644 --- a/drivers/iommu/dmar.c +++ b/drivers/iommu/dmar.c @@ -1343,7 +1343,7 @@ void qi_flush_dev_iotlb(struct intel_iommu *iommu, u16 sid, u16 qdep, if (mask) { BUG_ON(addr & ((1 << (VTD_PAGE_SHIFT + mask)) - 1)); - addr |= (1 << (VTD_PAGE_SHIFT + mask - 1)) - 1; + addr |= (1ULL << (VTD_PAGE_SHIFT + mask - 1)) - 1; desc.high = QI_DEV_IOTLB_ADDR(addr) | QI_DEV_IOTLB_SIZE; } else desc.high = QI_DEV_IOTLB_ADDR(addr); -- 2.7.4