Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp169659pxj; Tue, 1 Jun 2021 18:18:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyE8T2QNiYuZGys9So2nnbSt8YBe8mS/9XN970R5mWs7G+Ci4kVtLSDo18ux59F1mahMq2s X-Received: by 2002:a92:2004:: with SMTP id j4mr24801173ile.53.1622596709017; Tue, 01 Jun 2021 18:18:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622596709; cv=none; d=google.com; s=arc-20160816; b=FCekwnGt4uzrX4K7Eht9bF1X/ezrLxBYTtxKBUkBYvgt4thgSXE1CaLg3lhayH+ZPc Nn9QtDZDkS9rkxTlKZDp/Bix5LuaueLKN3DD/34dRopWumJBUysiVAMBbUUxlIjEtwaU WCeWx9d4osZKhZR7HiLDNLkwXKH4MdSzqh7ilGjnd33YVxYWMTAISqyIV5kiTlPkDcGJ +Z65o+zG59KPmwGN/8pGmEE5LD48QzD10i1RZuOLxSgFkkWYGTt1DuRI20xcWVSKbPF0 TMCJxhYR0YQRH0QzJ0PdUsSMeuwB3OR9y0Qcy6eKW1NHUOokprVecEygDKxYFeYR3/x4 YUCQ== 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=9ttH2lB2Q3iQhWxz0MO6TSPDv0IHfj1scw5R0SMtBJU=; b=uOf2/hbdu6bygqRSVTpVX6fhkpPunDA7U7vPbKGc8eh61NTqQHIq9Ocw5H45SqsfrR k2wYxUK1lfoI3gDrDL+IhZHPRHPzd49mEAD2hFLYA2j8Q2BQZYzh1/9uRUAaIlsM5EGZ VLuXs4mFpNI7tYHA1s8C87iY38+t4+9pmWT2P1BwrVDWJdxi2RPtps/XiAw0bdy6HWfE 7t3Y1inMk4GYuc2Xx7S5GonmaBtCWAev53qL+uRgMwnFu3wad9UnFhxFgjBdUrOrl3ML dmlk5AEx+26IAD3EzJNvrDAqNVgD/Z3WlklIop87rMk0gO8AzHrlONDraLgzDs91L7KV 1hPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=pIrVT61f; 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 o10si11883865ilc.147.2021.06.01.18.18.11; Tue, 01 Jun 2021 18:18:29 -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=pIrVT61f; 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 S235070AbhFAWpv (ORCPT + 99 others); Tue, 1 Jun 2021 18:45:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235054AbhFAWpt (ORCPT ); Tue, 1 Jun 2021 18:45:49 -0400 Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 946E2C061756 for ; Tue, 1 Jun 2021 15:44:06 -0700 (PDT) Received: by mail-pf1-x433.google.com with SMTP id u18so629917pfk.11 for ; Tue, 01 Jun 2021 15:44:06 -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=9ttH2lB2Q3iQhWxz0MO6TSPDv0IHfj1scw5R0SMtBJU=; b=pIrVT61fx1rvumOUvE+U675Xr8GitSeSt4o0OfVAYKRWi8DS2mWDlWm1qtwtkfnDC0 y9DNROp3Va+NBbZ8LgLe/HNctDwcqKGz22rixaxmBUKJb4w9iqO4F9zQm095IzbSgN+p NTLCHeDtMzIr9R1a2jmbIeBBnNDrS4ePTlmjU80G9C6BPpIxygTPe9dDVXJCN3ZS4Xa2 wEym9t1RIe16wZYUD5Q/l8+EYTM2jE28SXQdUQflw79XNJ4S6wGil+4U550FrloPzrXM lnZOtm9n74chG/rOQTLSuWSQTLt4jKWcE+fCWJ9iEaTwZAQY/OC3KXN3P8X8zv9FYmXd MXNQ== 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=9ttH2lB2Q3iQhWxz0MO6TSPDv0IHfj1scw5R0SMtBJU=; b=SC71uSwe+iUxdTXDE9PsEgf2ybBFaY4y8gDG6/So9JG7v409YuDK2HsDqiyOzY1HcK afQIOUIPC6hGdDF++KvX3lglD3TgzeAlTbQCyTJg1G9DqK7ESdR+T+otPRNQZYNjJTU+ RLC22KBqKujbHktUZx2Cn3kJy0jKkp5VJHQDUjfi9IC7kJvTDbTdrCeb/oT0Nvzg4a61 uTL6fqZ1RDTyDEha4tNxwAiDNyzs5tDvQddjPk0DPqsJKi7K4hbDar5oWWV2SNZ+9CE3 H67f+UOR24i34gXUeFDLUV4fBD9Ec/6nH66KKIKjjHlFeCN1Gy/TOltJkDbD+4Ck/jNU TxUw== X-Gm-Message-State: AOAM5331pRXIAnLOYE+F3Cls4RxYeb6QjR1A58L6EHdranOfI43lTkGG 7iM15y8Il15Dxhjk0MqWA3s= X-Received: by 2002:a63:540d:: with SMTP id i13mr904290pgb.360.1622587446121; Tue, 01 Jun 2021 15:44:06 -0700 (PDT) Received: from localhost (c-73-25-156-94.hsd1.or.comcast.net. [73.25.156.94]) by smtp.gmail.com with ESMTPSA id n12sm14674511pjk.48.2021.06.01.15.44.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Jun 2021 15:44:05 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: Jordan Crouse , Jordan Crouse , Rob Clark , Will Deacon , Robin Murphy , Joerg Roedel , Krishna Reddy , Sai Prakash Ranjan , linux-arm-kernel@lists.infradead.org (moderated list:ARM SMMU DRIVERS), iommu@lists.linux-foundation.org (open list:IOMMU DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v4 1/6] iommu/arm-smmu: Add support for driver IOMMU fault handlers Date: Tue, 1 Jun 2021 15:47:20 -0700 Message-Id: <20210601224750.513996-3-robdclark@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210601224750.513996-1-robdclark@gmail.com> References: <20210601224750.513996-1-robdclark@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jordan Crouse Call report_iommu_fault() to allow upper-level drivers to register their own fault handlers. Signed-off-by: Jordan Crouse Signed-off-by: Rob Clark --- drivers/iommu/arm/arm-smmu/arm-smmu.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-smmu/arm-smmu.c index 6f72c4d208ca..b4b32d31fc06 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c @@ -408,6 +408,7 @@ static irqreturn_t arm_smmu_context_fault(int irq, void *dev) struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); struct arm_smmu_device *smmu = smmu_domain->smmu; int idx = smmu_domain->cfg.cbndx; + int ret; fsr = arm_smmu_cb_read(smmu, idx, ARM_SMMU_CB_FSR); if (!(fsr & ARM_SMMU_FSR_FAULT)) @@ -417,8 +418,12 @@ static irqreturn_t arm_smmu_context_fault(int irq, void *dev) iova = arm_smmu_cb_readq(smmu, idx, ARM_SMMU_CB_FAR); cbfrsynra = arm_smmu_gr1_read(smmu, ARM_SMMU_GR1_CBFRSYNRA(idx)); - dev_err_ratelimited(smmu->dev, - "Unhandled context fault: fsr=0x%x, iova=0x%08lx, fsynr=0x%x, cbfrsynra=0x%x, cb=%d\n", + ret = report_iommu_fault(domain, NULL, iova, + fsynr & ARM_SMMU_FSYNR0_WNR ? IOMMU_FAULT_WRITE : IOMMU_FAULT_READ); + + if (ret == -ENOSYS) + dev_err_ratelimited(smmu->dev, + "Unhandled context fault: fsr=0x%x, iova=0x%08lx, fsynr=0x%x, cbfrsynra=0x%x, cb=%d\n", fsr, iova, fsynr, cbfrsynra, idx); arm_smmu_cb_write(smmu, idx, ARM_SMMU_CB_FSR, fsr); -- 2.31.1