Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp682384yba; Fri, 26 Apr 2019 07:06:38 -0700 (PDT) X-Google-Smtp-Source: APXvYqw4lCbhSLIXvlLimw4JYfkWxobtfPmd1ythUG05W0BP/RE8mxUAYuigVSfXJWGTW53RJP1b X-Received: by 2002:a17:902:b617:: with SMTP id b23mr43718393pls.73.1556287598810; Fri, 26 Apr 2019 07:06:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556287598; cv=none; d=google.com; s=arc-20160816; b=UtkG7JHQ/TFMcpLn3QDVW64yqn4PHyOm9fx6kWi+WwyVeGq/cI1dcpOhq32OaAsZj0 XrmRWGWvBgz7rRze/iZC0Zw412TBQggZgoKk9iAdyWpIRbztZCpsiuMTEIs0GUZ6CYS8 KmVZot2ttryxiPB19DHauvYN1Me04hp9IqZ7GMOt6D/M/9W46a1zYt9U/lq66VzP1DzL k80y/t9BkPOqka6cb5ZIheN10zNld/04BoXAgOPj0nFlrJgZUTbRHQMfPIvgpFgOJqUj 9aoqwD8NcpFxa+/K0Jk5GVu1IAUYATs9ZsK+XXnc05C0gzZVYbg4mFVx2KkNY/VbR9U6 /S7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=4FTGPp0MXX0ojnUkGNyy9gTQXpJaSngXZEUJR/UNOlA=; b=yt1zmYgChnyf2ALRNIsp0JN1PdOl4koNUmVGmpAKuoBtG9buoin1z2BK9MnUfAd4rH 2wOXyFqHb9++30NDTd47l/aZrhEuxim5DnXSqKkDgykCrifsAeb9hahfkiyQGW+Km5ae vjUUrnT07GPXuxn2lhSQ2n5u8mQoF146vPvIFlahvUkM8fdSM+sr3GGgR6Zl4VeC/XcO N9xNJFBIrNJOxrdpdp+MlupBH4RcwM9bkBMyDnvrxeCv0r7gniRBvmsOZ+SBDDNk68xz qvOVm+rKEC95cKKHNDPUtsZDlbW7OS6zHf/PIVA+ihj6PY4O9icLBccD9BToEPTqnjiO sqtQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r11si23585637pgp.337.2019.04.26.07.06.22; Fri, 26 Apr 2019 07:06:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726229AbfDZOEc (ORCPT + 99 others); Fri, 26 Apr 2019 10:04:32 -0400 Received: from 8bytes.org ([81.169.241.247]:37764 "EHLO theia.8bytes.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726124AbfDZOEc (ORCPT ); Fri, 26 Apr 2019 10:04:32 -0400 Received: by theia.8bytes.org (Postfix, from userid 1000) id 2E59F447; Fri, 26 Apr 2019 16:04:31 +0200 (CEST) Date: Fri, 26 Apr 2019 16:04:29 +0200 From: Joerg Roedel To: Tom Murphy Cc: iommu@lists.linux-foundation.org, murphyt7@tcd.ie, linux-kernel@vger.kernel.org Subject: Re: [PATCH v1] iommu/amd: flush not present cache in iommu_map_page Message-ID: <20190426140429.GG24576@8bytes.org> References: <20190424165051.13614-1-tmurphy@arista.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190424165051.13614-1-tmurphy@arista.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Apr 24, 2019 at 05:50:51PM +0100, Tom Murphy wrote: > check if there is a not-present cache present and flush it if there is. > > Signed-off-by: Tom Murphy > --- > drivers/iommu/amd_iommu.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c > index f7cdd2ab7f11..91fe5cb10f50 100644 > --- a/drivers/iommu/amd_iommu.c > +++ b/drivers/iommu/amd_iommu.c > @@ -1637,6 +1637,11 @@ static int iommu_map_page(struct protection_domain *dom, > > update_domain(dom); > > + if (unlikely(amd_iommu_np_cache && !dom->updated)) { > + domain_flush_pages(dom, bus_addr, page_size); > + domain_flush_complete(dom); > + } > + The iommu_map_page function is called once per physical page that is mapped, so in the worst case for every 4k mapping established. So it is not the right place to put this check in. From a quick glance this check belongs into the map_sg() and the amd_iommu_map() function, but without the dom->updated check. Besides, to really support systems with np-cache in a way that doesn't destroy all performance, the driver also needs range-flushes for IOTLBs. Currently it can only flush a 4k page of the full address space of a domain. But that doesn't mean we shouldn't fix the missing flushes now. So please re-send the patch with the check at the two places I pointed out above. Thanks, Joerg