Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4073848pxj; Mon, 24 May 2021 23:14:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw+lB8UMkGTcSGSLAXOCwmPKkV84FNnfvGW7mS3VvkT6dJXsle48kXrDngGTr3TtuDIIVmR X-Received: by 2002:a17:906:7c9:: with SMTP id m9mr26681324ejc.98.1621923294756; Mon, 24 May 2021 23:14:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621923294; cv=none; d=google.com; s=arc-20160816; b=eTY9epOCORjSrtibLFeC8DkIcIgTVwvTM2OGQMypQubjOvO4qxZRcEmCZ531fxp+Q2 4f/wy8JFWPbYa4Mzi7pFlv1sRob1z9ajgHHxi/S8sS3NeFaVCgZkB4OhBPmcU5lTB395 g2hEwwMMTpHKcn7V621CvyOSgdawrTyu1R0LNwUGjejKOgsQjB+JL6zkiqhNjjWtkQrQ 2X6THSIxDOaUz5Z83Qty71ktP0+3s7CPYw4Hj1hecR7Ei+rsG+aVaFetJphjEVCsbFVG HYWrYKmA4uNOchRMgA8stSBMXeU3XydSPPMP7q/UASs3fd+oQ1uRG+d00sLWQDDtpb1L R6og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5X0JTQzlcxqdyb4573dS6/kX2Ui7vOskaKMybRf6Z5M=; b=z3A8hOy9wS2XaTWbbF3yrOismMLhQIVUiSqGUMKU+JXIp9vLYXOoHzYaURxGQLML5o JHlI0AFbJjMtAgvXuYTwENGehkHR/L9LeqYLwMSKrmJlAR+lgf7UCp74FuKttmpSIRG/ 3XkT2T3N39MQfDBuDhklJCoN4ICza2HDAnZdSz9yaN5s4tNNPS0KIH7aUjnbTGPXpRoo WABCtEpciOm2iHJIn1Ua+JU2zy0FkWPsN+X3AV1QMfZlogqIijVBJNRaUDKEL5iWSzxK hZ49uvLfZPj95MAY7p7mybgKVqspSglodI/lkEQ4Lx+sKHHx+oXJBHiPwS411hKqafeI IRmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=QgBp8x8F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s25si14669258ejx.655.2021.05.24.23.14.32; Mon, 24 May 2021 23:14:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=QgBp8x8F; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230523AbhEYGMy (ORCPT + 99 others); Tue, 25 May 2021 02:12:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46970 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230522AbhEYGMs (ORCPT ); Tue, 25 May 2021 02:12:48 -0400 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E7873C061574 for ; Mon, 24 May 2021 23:11:18 -0700 (PDT) Received: by mail-pj1-x1031.google.com with SMTP id cu11-20020a17090afa8bb029015d5d5d2175so12604734pjb.3 for ; Mon, 24 May 2021 23:11:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5X0JTQzlcxqdyb4573dS6/kX2Ui7vOskaKMybRf6Z5M=; b=QgBp8x8FA2KPnES/dXAn7UcCsCOFA05H9EKrKDO48k6YYBUAhh07XYM9uYgjpSP//s wjwVjOuQhIZOhQEECLcGg8hM8x+tMr0DhXvrv5JX8aKFXsjnPjpkcv4A2+6/39D+JqYl yj1Dr3DlNH5pqAVISRx7Q3riYVQKMkhHsNkGwMBNAMBIEMyO7VSDyXBv45RvG8FvFEUM QJcXdStU7Sj+E3O4JNeMoKi649ar/p8H8qDeGIhvzpyAU8557NGj2Ny3YEXafUcmU7sP /gVg9F81tv19dJtui3KYYQdnwvAe/jUiVUViABHrxt5r7+NzvmCP1gwfe9V2ceyQoIrf 6q1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5X0JTQzlcxqdyb4573dS6/kX2Ui7vOskaKMybRf6Z5M=; b=Q330EDEDR9HC2rtxVcVyEeIyQEGeAbL4FdG1IxEzTk1eDPrDitlu9in8YuXsfaznoC e+Lm+XlXVweEdxlVY7GG6wE7ikbWvy652ng9tt38Xn3nLp77drJIrVC6iSvKqVH1r7HV JU9eqxEmEvIpmtam1rO+zBLeqZu6xuQitPvnQf1lgZh7IO3s9DhLZmecTtrVnbETwoUg 1pEIYzE3Vg5DdrqHOSiQuMEYNihcxI/BJExQatcNlZmo7uKrRPxefMXUrNA6QONGnvIm LnblMfpZBdT4ZpJaFVZ+XKlc0yttRImD1hG0hNOba2/8BqA8Tds4bplzyUBgwKO+4R1u gm6w== X-Gm-Message-State: AOAM530b+cYoyjkHlhmZ7RXa/picRrHkqj0NkyVm3lShGLHpc8nS0jGU BFMpTdhrPNf6z4diVhKcZXgQ5K9BfA8iuw== X-Received: by 2002:a17:902:d643:b029:ef:62cd:eeed with SMTP id y3-20020a170902d643b02900ef62cdeeedmr29296314plh.42.1621923078362; Mon, 24 May 2021 23:11:18 -0700 (PDT) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id h3sm12452301pgp.10.2021.05.24.23.11.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 May 2021 23:11:17 -0700 (PDT) From: Nadav Amit X-Google-Original-From: Nadav Amit To: Joerg Roedel Cc: Nadav Amit , Will Deacon , Jiajun Cao , iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/4] iommu/amd: Do not sync on page size changes Date: Mon, 24 May 2021 15:41:58 -0700 Message-Id: <20210524224159.32807-4-namit@vmware.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210524224159.32807-1-namit@vmware.com> References: <20210524224159.32807-1-namit@vmware.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nadav Amit Some IOMMU architectures perform invalidations regardless of the page size. In such architectures there is no need to sync when the page size changes or to regard pgsize when making interim flush in iommu_iotlb_gather_add_page(). Add a "ignore_gather_pgsize" property for each IOMMU-ops to decide whether gather's pgsize is tracked and triggers a flush. Cc: Joerg Roedel Cc: Will Deacon Cc: Jiajun Cao Cc: iommu@lists.linux-foundation.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Nadav Amit --- drivers/iommu/amd/iommu.c | 1 + include/linux/iommu.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/amd/iommu.c b/drivers/iommu/amd/iommu.c index b8cabbbeed71..1849b53f2149 100644 --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -2215,6 +2215,7 @@ const struct iommu_ops amd_iommu_ops = { .put_resv_regions = generic_iommu_put_resv_regions, .is_attach_deferred = amd_iommu_is_attach_deferred, .pgsize_bitmap = AMD_IOMMU_PGSIZES, + .ignore_gather_pgsize = true, .flush_iotlb_all = amd_iommu_flush_iotlb_all, .iotlb_sync = amd_iommu_iotlb_sync, .def_domain_type = amd_iommu_def_domain_type, diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 32d448050bf7..1fb2695418e9 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -284,6 +284,7 @@ struct iommu_ops { int (*def_domain_type)(struct device *dev); unsigned long pgsize_bitmap; + bool ignore_gather_pgsize; struct module *owner; }; @@ -508,7 +509,7 @@ static inline void iommu_iotlb_gather_add_page(struct iommu_domain *domain, * a different granularity, then sync the TLB so that the gather * structure can be rewritten. */ - if (gather->pgsize != size || + if ((gather->pgsize != size && !domain->ops->ignore_gather_pgsize) || end + 1 < gather->start || start > gather->end + 1) { if (gather->pgsize) iommu_iotlb_sync(domain, gather); -- 2.25.1