Received: by 2002:ac0:a679:0:0:0:0:0 with SMTP id p54csp672495imp; Wed, 20 Feb 2019 07:06:54 -0800 (PST) X-Google-Smtp-Source: AHgI3IbpxR8MLcaBhtSxOYQEg8e3DexPelHNCJDo4R/PzApho7qEkrw0uhPVumV3YIxozY81JbeE X-Received: by 2002:a62:b02:: with SMTP id t2mr5644432pfi.127.1550675213967; Wed, 20 Feb 2019 07:06:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550675213; cv=none; d=google.com; s=arc-20160816; b=dIFNZv2gNxXeOSVAhluwBJmG2UefQ9g/P9bl6sYltHySOVeNkyBYDgHd8C6aDk08WC JxHy9C1NMu4175tzCUeCSj9O1A3muekEouDdL7MPZV4LZxLeGi+nLhDoEjym7UsrCiOZ gR1piY4dlcejrYnPKd0F+xcP+BNbL13uTtfndoT76cFQtIO+NN7+1QA9dfMHm8UBwG2K DI5oKdNvok0iRszdBng3e4fyW9zxO6eKRnvy5OksKGfpc9FcsylhWkNLL6pSo5+uNYMR qMfEEp943NrO0GF2Ss3VSxNBAKWHNbO6qDRdtjAJFbYQU8iZzaBMPwjIodc3qKLBV3GK cTYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=WZ3BCG3DBA8/6pwP4uBImJt9ZBU1ShwGgSiCC8Ho5f4=; b=D6sJLG9ZkLCo1vEv1qf2XhrfiJm33aurmtvKThu0TzYEWybwzyH9j5ciL7mxwCDPPG WrTaDjQf2T0zq1zQxuZ38GfwFHb7AaDia/K7vT/8FeRhGuWQDrpr8V0ViZ0ReqyTIYkz 3Dt6e31QzEX2ESzX3qWHeXnOOIh10ROog3jztnSo+VvEoX6bYbFHuZ9WYRngAKjX0XHA TON/9tZlVrKEVph8VG+koX98dtgnzcO8YuRqckHZzCG2473MjacT9ZR5Abz1rW3BRkc5 Dyc9//SytFz5Qt532OU0iiqn3Dwm4u8T4HhidhOcBKohxsKMA+1zdAbrsmdPI5cUwsvE Zubw== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r11si18214148pgp.243.2019.02.20.07.06.37; Wed, 20 Feb 2019 07:06:53 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727280AbfBTPFv (ORCPT + 99 others); Wed, 20 Feb 2019 10:05:51 -0500 Received: from xavier.telenet-ops.be ([195.130.132.52]:35330 "EHLO xavier.telenet-ops.be" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726803AbfBTPFh (ORCPT ); Wed, 20 Feb 2019 10:05:37 -0500 Received: from ramsan ([84.194.111.163]) by xavier.telenet-ops.be with bizsmtp id f35b1z00n3XaVaC0135bmW; Wed, 20 Feb 2019 16:05:35 +0100 Received: from rox.of.borg ([192.168.97.57]) by ramsan with esmtp (Exim 4.90_1) (envelope-from ) id 1gwTRH-0002II-Ju; Wed, 20 Feb 2019 16:05:35 +0100 Received: from geert by rox.of.borg with local (Exim 4.90_1) (envelope-from ) id 1gwTRH-0000eq-IF; Wed, 20 Feb 2019 16:05:35 +0100 From: Geert Uytterhoeven To: Joerg Roedel , Magnus Damm Cc: Laurent Pinchart , iommu@lists.linux-foundation.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH 3/7] iommu/ipmmu-vmsa: Prepare to handle 40-bit error addresses Date: Wed, 20 Feb 2019 16:05:27 +0100 Message-Id: <20190220150531.2462-4-geert+renesas@glider.be> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190220150531.2462-1-geert+renesas@glider.be> References: <20190220150531.2462-1-geert+renesas@glider.be> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On R-Car Gen3, the faulting virtual address is a 40-bit address, and comprised of two registers. Read the upper address part, and combine both parts, when running on a 64-bit system. Signed-off-by: Geert Uytterhoeven --- Apart from this, the driver doesn't support 40-bit IOVA addresses yet. --- drivers/iommu/ipmmu-vmsa.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c index ac70cb967ff821c6..4d07c26c97848b65 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -186,7 +186,9 @@ static struct ipmmu_vmsa_device *to_ipmmu(struct device *dev) #define IMMAIR_ATTR_IDX_WBRWA 1 #define IMMAIR_ATTR_IDX_DEV 2 -#define IMEAR 0x0030 +#define IMEAR 0x0030 /* R-Car Gen2 */ +#define IMELAR IMEAR /* R-Car Gen3 */ +#define IMEUAR 0x0034 /* R-Car Gen3 */ #define IMPCTR 0x0200 #define IMPSTR 0x0208 @@ -521,14 +523,16 @@ static irqreturn_t ipmmu_domain_irq(struct ipmmu_vmsa_domain *domain) { const u32 err_mask = IMSTR_MHIT | IMSTR_ABORT | IMSTR_PF | IMSTR_TF; struct ipmmu_vmsa_device *mmu = domain->mmu; + unsigned long iova; u32 status; - u32 iova; status = ipmmu_ctx_read_root(domain, IMSTR); if (!(status & err_mask)) return IRQ_NONE; - iova = ipmmu_ctx_read_root(domain, IMEAR); + iova = ipmmu_ctx_read_root(domain, IMELAR); + if (IS_ENABLED(CONFIG_64BIT)) + iova |= (u64)ipmmu_ctx_read_root(domain, IMEUAR) << 32; /* * Clear the error status flags. Unlike traditional interrupt flag @@ -540,10 +544,10 @@ static irqreturn_t ipmmu_domain_irq(struct ipmmu_vmsa_domain *domain) /* Log fatal errors. */ if (status & IMSTR_MHIT) - dev_err_ratelimited(mmu->dev, "Multiple TLB hits @0x%08x\n", + dev_err_ratelimited(mmu->dev, "Multiple TLB hits @0x%lx\n", iova); if (status & IMSTR_ABORT) - dev_err_ratelimited(mmu->dev, "Page Table Walk Abort @0x%08x\n", + dev_err_ratelimited(mmu->dev, "Page Table Walk Abort @0x%lx\n", iova); if (!(status & (IMSTR_PF | IMSTR_TF))) @@ -559,7 +563,7 @@ static irqreturn_t ipmmu_domain_irq(struct ipmmu_vmsa_domain *domain) return IRQ_HANDLED; dev_err_ratelimited(mmu->dev, - "Unhandled fault: status 0x%08x iova 0x%08x\n", + "Unhandled fault: status 0x%08x iova 0x%lx\n", status, iova); return IRQ_HANDLED; -- 2.17.1