From patchwork Thu Oct 13 18:12:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2290 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp425797wrs; Thu, 13 Oct 2022 11:45:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4c1oxIBBQSW6j4z4n8lj1BNXPXm5VoAsQjIPXL9GWEAsuPrvBGkJ2fxOoCWFWAu5NjRO0u X-Received: by 2002:a17:90b:1e4c:b0:20d:8cf0:1a46 with SMTP id pi12-20020a17090b1e4c00b0020d8cf01a46mr1303387pjb.164.1665686702592; Thu, 13 Oct 2022 11:45:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665686702; cv=none; d=google.com; s=arc-20160816; b=W6go+IzF7qaA3zxk1+N6A1QdkH8jxFbol6bcacdamZ0zCA0fMJ8Qi2pdlqKNsiQ9kK rpjNXF7QyMVE2Z2bpl51n9BbvIDGXMudZEe5HzpYPtuzHV9dKW8PELbK7nhABR+t7bxk fav+2SMBTtce/YpsxdHsxPoV2jo9wOb2aKSdyEiokkrJhqN8mkCJgprzyX786F3dpvLZ mTG/4+Mv+bm7iiAqrshJZxkNbFoKfGN6KeTbrEghFrytkGThnEus36cpVAOpS7LZ1wgX dhGlEWIf3BH420UsNe7i/Jl760jvyu+03DgbR3eMfl66oEdClZqw1ZtnNdf8vAbEb/7j qjrw== 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=wy++TP4MEmK9+IncYVXW5dpqxIdw3c9kXrFdre+ha14=; b=uN8lqIywC6NkedJPgv+kMvtjm8qsaKwBhnkxKq0D/0avnO0SbStOXlNkbcOLhUd+/t 50KpRSvOZ29iPlBLExqLiToBEEtvvZWoFzTPwz/neOJuc4ZRkSeVJcCIbWUudUX/6yOI LVAnyZEJf3ijCNOu8ZY/fYyxquPi9qBcnImuo2o0/DDV/VpmGpDjz0qMUNKklRr1AURx GKYBlGC3O9o7Em5lbQlSDalerF7ZwBgMY2CXQZ32rJAfdnNVnlZsS589KPRg43QdeWCG 7jYfOzRx9xSIjjZK4K18IIU5oTEl+I5+fVitf7upLkx6maEkQAgqgxjOqfnf7q5+0iX4 9hEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=CQ9TnzAP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id mq2-20020a17090b380200b001fe41707a2esi7771045pjb.90.2022.10.13.11.44.49; Thu, 13 Oct 2022 11:45:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=CQ9TnzAP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S231288AbiJMSTh (ORCPT + 99 others); Thu, 13 Oct 2022 14:19:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232155AbiJMSTK (ORCPT ); Thu, 13 Oct 2022 14:19:10 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 802E3FD26 for ; Thu, 13 Oct 2022 11:14:48 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id e18so3761367edj.3 for ; Thu, 13 Oct 2022 11:14:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wy++TP4MEmK9+IncYVXW5dpqxIdw3c9kXrFdre+ha14=; b=CQ9TnzAPgu0twXcz51eJtm0MYyiV+U12yy5ia/sBn3YqCfoEQNZbJox/YeWnpaIBoE TYEM9Hw0EGjn2tXKlAWjrkaORyfaKwcar28Ec7NSFIeLYAllGCqNh2pU2PYx3LxsqxFG 6z6XuuKosJtWm6yPV0CdYsnYS7GdnBmUj7R82Ws3yOFTwaIxD32pVpcKhNvW/hq4azh/ pyxMhT+TJGWjw77Bz/d7ZlNR59kXaW9mCpfOPX3rRypwf8LOMd1e3Oc7h8YH1pyz08E5 rppEhw2WHhCkDKW3evmIBSWV1bQ5vA0vM4LjoFtItLlNwt+gYHNoOtSigZItkYpjUT00 NUTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wy++TP4MEmK9+IncYVXW5dpqxIdw3c9kXrFdre+ha14=; b=E/hcam9xPbuJtlt7A+19V7jhkhBBiZ+g+AhwLc5wZjLMyTeoJdB5+t+e9j9mAaDBob uHKChv1zvwzV2RqvSxjGKrjSxpwfX8kWlHLQE/8MtBz1AzECmvVT5rFXAQPd9z8WkYOS JZ/RF3j98RPywhH8VJaA/mG9aV0X8LdADGDyX6i2ZIgSpzSbG2lBDzWQ0yFF3ryfwhNF iopJs5SUoim/Wy0DuLMV3XIyG1VYZtD21lLmUkYcxv6olbvH33JaQ0Fnx2SrKvqBQewC Z1mNces6nxediRZ+kc15mk/aCnOgSLXiIBs/2n3wnqK3LmZd5d9cMDoi2ktFBWy1ghmB onnQ== X-Gm-Message-State: ACrzQf2sVc48hoPOf3HYemCzcI+qhlGQjKwLN/D0PkMk4njuWcgKW7sI Drhi0ARVKY/2/LP4UwFFfDM= X-Received: by 2002:a05:6402:1944:b0:457:fed7:5c30 with SMTP id f4-20020a056402194400b00457fed75c30mr873109edz.278.1665684766034; Thu, 13 Oct 2022 11:12:46 -0700 (PDT) Received: from kista.localdomain (82-149-19-102.dynamic.telemach.net. [82.149.19.102]) by smtp.gmail.com with ESMTPSA id ku15-20020a170907788f00b0078b551d2fa3sm211109ejc.103.2022.10.13.11.12.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Oct 2022 11:12:45 -0700 (PDT) From: Jernej Skrabec To: maxime@cerno.tech, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, wens@csie.org, samuel@sholland.org Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 1/5] iommu/sun50i: Fix reset release Date: Thu, 13 Oct 2022 20:12:16 +0200 Message-Id: <20221013181221.3247429-2-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221013181221.3247429-1-jernej.skrabec@gmail.com> References: <20221013181221.3247429-1-jernej.skrabec@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746599099530340339?= X-GMAIL-MSGID: =?utf-8?q?1746599099530340339?= Reset signal is asserted by writing 0 to the corresponding locations of masters we want to reset. So in order to deassert all reset signals, we should write 1's to all locations. Current code writes 1's to locations of masters which were just reset which is good. However, at the same time it also writes 0's to other locations and thus asserts reset signals of remaining masters. Fix code by writing all 1's when we want to deassert all reset signals. This bug was discovered when working with Cedrus (video decoder). When it faulted, display went blank due to reset signal assertion. Fixes: 4100b8c229b3 ("iommu: Add Allwinner H6 IOMMU driver") Signed-off-by: Jernej Skrabec --- drivers/iommu/sun50i-iommu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index a84c63518773..c777882d0ec2 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -27,6 +27,7 @@ #include #define IOMMU_RESET_REG 0x010 +#define IOMMU_RESET_RELEASE_ALL 0xffffffff #define IOMMU_ENABLE_REG 0x020 #define IOMMU_ENABLE_ENABLE BIT(0) @@ -893,7 +894,7 @@ static irqreturn_t sun50i_iommu_irq(int irq, void *dev_id) iommu_write(iommu, IOMMU_INT_CLR_REG, status); iommu_write(iommu, IOMMU_RESET_REG, ~status); - iommu_write(iommu, IOMMU_RESET_REG, status); + iommu_write(iommu, IOMMU_RESET_REG, IOMMU_RESET_RELEASE_ALL); spin_unlock(&iommu->iommu_lock); From patchwork Thu Oct 13 18:12:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2285 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp425285wrs; Thu, 13 Oct 2022 11:43:37 -0700 (PDT) X-Google-Smtp-Source: AMsMyM74ip/fJmm5jrt8jy7o21bvlGbibaCnL4NWyZc56tT5oLcCV21iE6L70ESGBlqJEzEhSx62 X-Received: by 2002:a17:90b:400f:b0:20a:9965:ef08 with SMTP id ie15-20020a17090b400f00b0020a9965ef08mr1271463pjb.155.1665686616952; Thu, 13 Oct 2022 11:43:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665686616; cv=none; d=google.com; s=arc-20160816; b=0F+bKf0pAq8VeF3mPoFGyoxyr9yehpcGrLVr0J8qKeFcaY8rf4HHLlqPNunvNUYrm+ +2QN/6EowH1eOFX9aua/5lxXVg/9uougs4u+1PavQ28rAi9MN/QdGvFIFyDRkuvdkmgq oJOQbCZ7+VoxMVK7jjhMib3fG/xYc3kOf+JFCOlwFYkuZ7Qgk+LddlGdzCMEnaLBhwg6 Cea99ZCJms6skSQsUx1lsuOxXrfZM2wmgbpT0XP5eTlTEiTlKH7JvKKrbjWvR8ChnqJo gYgTodHvQR84/et+skouaA32mUSUKIDu/Evbiw+IweGRLC8uL2AegYq/V+jgJEW4cZeV BPyQ== 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=oow4Z/54Ywu9hc74bLjW+CtYs8QrvcOSZ9QuyKFYcEc=; b=qgFdhJ0eTZ+mp2jvkPchiJizwZzhQxmK8iEwNHGJbOxZHiQ2b9m4VzMLdLCWANGL5F dht8TLdAzPgCjXE/olprrkKNpViQ7mnGxZzOPOBftXklymqgvIBXuV2LMxGo1dfNLo4h H8trYvDLCKHdeSlx5pVv5kbLFBL+8RQxVppeTyGunc5TKZNSpSSaF/R65wHnwjQNLb7P wKvJ88bWWe41IVNTbGNayM2A9lkASfDxo0LJikopj58K731hFXKQ8SQzTWjvfDdwtMT+ 0zHkuY7mXlcbNz1Ug8LfcAleXeId8pB4K2EKTiBr54PPH8iod5GNCX8LVhUIoRAqKEMv +g3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ED9AlBSj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q12-20020a170902eb8c00b0017f61ac5a53si453617plg.111.2022.10.13.11.43.25; Thu, 13 Oct 2022 11:43:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=ED9AlBSj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S231929AbiJMSbk (ORCPT + 99 others); Thu, 13 Oct 2022 14:31:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231871AbiJMSbS (ORCPT ); Thu, 13 Oct 2022 14:31:18 -0400 Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2A901793B0 for ; Thu, 13 Oct 2022 11:26:59 -0700 (PDT) Received: by mail-ej1-x62d.google.com with SMTP id bj12so5675713ejb.13 for ; Thu, 13 Oct 2022 11:26:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oow4Z/54Ywu9hc74bLjW+CtYs8QrvcOSZ9QuyKFYcEc=; b=ED9AlBSj+HB3AoaKj7DQ6M9wpZ6f6w4GodqNMB1xfK/zk6oF6HLxanhqwuG7Fd6R3S Na43xZWDhuMEVhpRgGli0KufczMvg+iDIQia5e4MkKK7NnuzBjYr9uWV/zTXJ2FFJ9mQ CDyD4aWS4JrSGufnnIK1XfXmJDZocqpnWKg50JoUJhnQJlrDPJUjqGK+uFLhPwnvQaLm DgG4sQ4tmE0ckxaWchNtaudUhH51Q6d4aBK2QPPGJznLm1RAeOMbO6udAqa5gRk6vBbw nvOjXEF3+QAHeLVvYUsrPzaVR7kXWBH6YABlCbDTIH1fcLYhwp2wbMHea3TwU0W1rPJk mbyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oow4Z/54Ywu9hc74bLjW+CtYs8QrvcOSZ9QuyKFYcEc=; b=f5TJjc+WBDwxq3ACzbaqxu0128WRVwpsOCQR1xcITr95hNT5qTk4no9FDyI/K5pB8f dqb1aFWo4/0zsCj2k3PG0riBejSIGUHzjxsLSwcaFPTXSTbLJaO+w/ZmwV6piTmcXCpx 6JUnQccaN4ebmjkBrnS09IUdFpBMBF3aIXlInreXC54kLuUAADq/LLGdkKd1uvilJK0z MsgIfBOBposElPEiXvJ+MR1fHIxAYw592PpOaNpKBQSP8K13KLvtg8L7i8lG0R6vLNZJ xLZfNZptjAHwTYOZSrF1oCHnNGgFzsDuXChpks9MocsEmJ+2/EYO10sJmJv1Cnemn2MT RfqA== X-Gm-Message-State: ACrzQf1Exbj6vU2UuPQvtfoQJu0CxpgcJ7/nCM1HCgjBoHyDjoiRF7Mk L3QwuImiji8BUayQkEHJmGYtR/fHJChUhX2k X-Received: by 2002:a17:906:3fd2:b0:78d:b793:5ef9 with SMTP id k18-20020a1709063fd200b0078db7935ef9mr730855ejj.496.1665684767259; Thu, 13 Oct 2022 11:12:47 -0700 (PDT) Received: from kista.localdomain (82-149-19-102.dynamic.telemach.net. [82.149.19.102]) by smtp.gmail.com with ESMTPSA id ku15-20020a170907788f00b0078b551d2fa3sm211109ejc.103.2022.10.13.11.12.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Oct 2022 11:12:46 -0700 (PDT) From: Jernej Skrabec To: maxime@cerno.tech, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, wens@csie.org, samuel@sholland.org Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 2/5] iommu/sun50i: Consider all fault sources for reset Date: Thu, 13 Oct 2022 20:12:17 +0200 Message-Id: <20221013181221.3247429-3-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221013181221.3247429-1-jernej.skrabec@gmail.com> References: <20221013181221.3247429-1-jernej.skrabec@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746599009795742590?= X-GMAIL-MSGID: =?utf-8?q?1746599009795742590?= We have to reset masters for all faults - permissions, L1 fault or L2 fault. Currently it's done only for permissions. If other type of fault happens, master is in locked up state. Fix that by really considering all fault sources. Fixes: 4100b8c229b3 ("iommu: Add Allwinner H6 IOMMU driver") Signed-off-by: Jernej Skrabec --- drivers/iommu/sun50i-iommu.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index c777882d0ec2..38d1069cf383 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -869,8 +869,8 @@ static phys_addr_t sun50i_iommu_handle_perm_irq(struct sun50i_iommu *iommu) static irqreturn_t sun50i_iommu_irq(int irq, void *dev_id) { + u32 status, l1_status, l2_status, resets; struct sun50i_iommu *iommu = dev_id; - u32 status; spin_lock(&iommu->iommu_lock); @@ -880,6 +880,9 @@ static irqreturn_t sun50i_iommu_irq(int irq, void *dev_id) return IRQ_NONE; } + l1_status = iommu_read(iommu, IOMMU_L1PG_INT_REG); + l2_status = iommu_read(iommu, IOMMU_L2PG_INT_REG); + if (status & IOMMU_INT_INVALID_L2PG) sun50i_iommu_handle_pt_irq(iommu, IOMMU_INT_ERR_ADDR_L2_REG, @@ -893,7 +896,8 @@ static irqreturn_t sun50i_iommu_irq(int irq, void *dev_id) iommu_write(iommu, IOMMU_INT_CLR_REG, status); - iommu_write(iommu, IOMMU_RESET_REG, ~status); + resets = (status | l1_status | l2_status) & IOMMU_INT_MASTER_MASK; + iommu_write(iommu, IOMMU_RESET_REG, ~resets); iommu_write(iommu, IOMMU_RESET_REG, IOMMU_RESET_RELEASE_ALL); spin_unlock(&iommu->iommu_lock); From patchwork Thu Oct 13 18:12:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2294 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp427309wrs; Thu, 13 Oct 2022 11:48:40 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5kVRIG7Kh3f3l4r7DUq57HBLEMLRwkZ6gmLtv/UhVHTfQfqtpl6Wwr20uN33ftsguNor/6 X-Received: by 2002:a63:d709:0:b0:461:be56:507e with SMTP id d9-20020a63d709000000b00461be56507emr1103507pgg.597.1665686920620; Thu, 13 Oct 2022 11:48:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665686920; cv=none; d=google.com; s=arc-20160816; b=HbF66PZfcxsctNbk3PBMSOuIlIrQi37EX9IzXe+EI8F8C0T72SH8wJwfyZy0F3P/cc olsVOAOFXQvFN+0nV8tF50ktjrsrExPlshdB526zxwpEGsY9S6Fmjz27RfTZ8jjLoyoY UDbOBWarzjjwIXUGMQ39vBK+sN5Pd68ur5gMqZGyvAyd0VXROxOq/0Hqj0yztUvCE3wS PpccraMJUaVkjD94KIYhqnhglPqAEdSc1FI/ljb0ma5mYYvHfnL11qHs50ptOLh/6K9Q zLZBNS5XyL662reECYfcXGNdA1z5eKlndZSmZ5u7mtdktJ8D/n1MMf1G+dmMdOIUhuGG iOoQ== 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=t5o4hmrTo+a4A6KCBunzs3GYyFuyFvq3xuPa8kZR43M=; b=yDDcQXgoqc6ArO/8RCUMSjPygq69bkOUSq/rQDbhVzXIXEFAE8MqMqXcWP3u+QVx6k y+VOd62cs+57wrnUDs85YHnu0jvHydmSi692HDKJXBPQjKFdNxjUJ0yZjPEWcp+Xe510 0+e2iKWYNWK0HEhVRAAO6VZnvyQ8zCbihph6JZy3+fWzWZ43/VVd7as+S/LKb4pqbjDi 9ZELizBJwok/D//B/kFIRAG4axbNO0xqlgZZwOCgE0Wp9brWvh4a+hl66VBptAzc3CRE 6P7UV55Xf55E4lmHwN/d+2m+C37URHbFYzCDI+OWe9fgCzlkVWxxooQdN2a+xHEaXdXM iG8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="DU//SwH+"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id mu10-20020a17090b388a00b001fdcbf875e7si4823007pjb.35.2022.10.13.11.48.28; Thu, 13 Oct 2022 11:48:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="DU//SwH+"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S230493AbiJMScv (ORCPT + 99 others); Thu, 13 Oct 2022 14:32:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37868 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230252AbiJMScd (ORCPT ); Thu, 13 Oct 2022 14:32:33 -0400 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F73B15CB1B for ; Thu, 13 Oct 2022 11:28:29 -0700 (PDT) Received: by mail-ed1-x52c.google.com with SMTP id e18so3809568edj.3 for ; Thu, 13 Oct 2022 11:28:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=t5o4hmrTo+a4A6KCBunzs3GYyFuyFvq3xuPa8kZR43M=; b=DU//SwH+JfMDyVMKNcHeLU136bnf9QlAcBT+KWFVH1q8TwC873dRzVkVcKr2u+9nNy s4WnYSjekVglH1Dqi8Q5bz1KKUstGlkGyZICaJIhtnSxPx9i4eWPCG4iyWXTFMOu80Yj JuXKwqbN5s/MaQedvEbm5oL0MF5SwXqsOSAYwgO+wM1nu4MxZk5JEX47YxnmZKq5HFWM iOQKeimAZfXCEBU0wVC/OmlYE4XV5R7pbnkFQFzZelR3uIldMiOvA3dP4qKmlcR5MWv6 vPAd8nW9lYSA7dr6TxoqTJEsvKy18NpG7B3jvYfTGmiaad+Tq72HVbY90tsQmCyC0nEC p6rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=t5o4hmrTo+a4A6KCBunzs3GYyFuyFvq3xuPa8kZR43M=; b=D1j1edG2qYJ5CLD6eqWP9SrcQpxDuZSgxfRUZ+w5QS4LO9yIowkCMi37MJ9ERzysTG V7GxA8jmOR7/CoGZHXfPUEnnn46nZxFMK22T4zd4tTWu9oPDI0AGHiUeRkG3tgr6pbAB yQB/zv5EqG0SNuO97XQ+VYkoyj52FcWgUxbNzQIDSE3U7cK+q+Cv8MXFUUKa5pEQx5sK PWWYMGMD8SanTO4Ofss/UwOSLrtQ1r898QcfhUIfHnXtmbCNUPpxkZfs22qJe1lqxU3f MeRSUG7sMQ7i4os5KNhR3gVkwsbRj8onxtZFAUghri38NJhcMJ4D98vO7gfMTQLUBKHd vMrw== X-Gm-Message-State: ACrzQf0hsn1AY8LRoLj+Fllk/3MXOmKJ8P2B1SMI5Keia+6Ccwh8vNeT p54Zm5/SF343AXRbhSEKWSA1uIAkzOOQLkiW X-Received: by 2002:a05:6402:350d:b0:45c:f5a2:348e with SMTP id b13-20020a056402350d00b0045cf5a2348emr895071edd.398.1665684768460; Thu, 13 Oct 2022 11:12:48 -0700 (PDT) Received: from kista.localdomain (82-149-19-102.dynamic.telemach.net. [82.149.19.102]) by smtp.gmail.com with ESMTPSA id ku15-20020a170907788f00b0078b551d2fa3sm211109ejc.103.2022.10.13.11.12.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Oct 2022 11:12:47 -0700 (PDT) From: Jernej Skrabec To: maxime@cerno.tech, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, wens@csie.org, samuel@sholland.org Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 3/5] iommu/sun50i: Fix R/W permission check Date: Thu, 13 Oct 2022 20:12:18 +0200 Message-Id: <20221013181221.3247429-4-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221013181221.3247429-1-jernej.skrabec@gmail.com> References: <20221013181221.3247429-1-jernej.skrabec@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746599328028038798?= X-GMAIL-MSGID: =?utf-8?q?1746599328028038798?= Because driver has enum type permissions and iommu subsystem has bitmap type, we have to be careful how check for combined read and write permissions is done. In such case, we have to mask both permissions and check that both are set at the same time. Current code just masks both flags but doesn't check that both are set. In short, it always sets R/W permission, regardles if requested permissions were RO, WO or RW. Fix that. Fixes: 4100b8c229b3 ("iommu: Add Allwinner H6 IOMMU driver") Signed-off-by: Jernej Skrabec --- drivers/iommu/sun50i-iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index 38d1069cf383..135df6934a9e 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -271,7 +271,7 @@ static u32 sun50i_mk_pte(phys_addr_t page, int prot) enum sun50i_iommu_aci aci; u32 flags = 0; - if (prot & (IOMMU_READ | IOMMU_WRITE)) + if ((prot & (IOMMU_READ | IOMMU_WRITE)) == (IOMMU_READ | IOMMU_WRITE)) aci = SUN50I_IOMMU_ACI_RD_WR; else if (prot & IOMMU_READ) aci = SUN50I_IOMMU_ACI_RD; From patchwork Thu Oct 13 18:12:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2280 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp424277wrs; Thu, 13 Oct 2022 11:41:02 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7mY/cakDs2UjN7kFBEH5tozzpYKorUdIUqu11XNmRknqxrVEVeGfXeL+r5FLxRKgWLz5xz X-Received: by 2002:a17:907:3f89:b0:78d:4cca:3643 with SMTP id hr9-20020a1709073f8900b0078d4cca3643mr792163ejc.353.1665686462576; Thu, 13 Oct 2022 11:41:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665686462; cv=none; d=google.com; s=arc-20160816; b=Fgss7WUnAAS1U9u3XF9St8YDmNm/LGfkg+/6+8aEfuoMs1UQNCrcBAcDnkStndx9K7 QkeEJ9EF+lJBO0zUuBH1ljrRTyiYD5UK8gcEGeIsBqX0aXHqyD+gDV95MmU7JSv2hKht alz78qiwl0urnHhZrontse0Zw4O8y80AElhmPAGTrCxNOzg8h0BxbgSS6a8HRUHNPePT LOIHebT2JpOtHU7nKG3CpVcu0f6JR/pT4iYKKlBkBQnn4ZbgTtWlMcM24DhjNcwYc9so ZFkxhTXOaEEtHUUvmL0Yl5H6PKWuF5nB7asqBLrC9h22wjy/CunA+sgqxpOUg0WjuXVV VG+A== 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=DEldd9wQdL+BNIpPagsN4syvK2Vu5z+yJRpIhSRKQMc=; b=i7as9MBFoWUnUU6yv95fTnY5zBIzon0YkMTNj63PrEOehCOW2z6FQ/ZTf+s1eP4wM7 6GlW2vt5G8EH8QwBhwEd1FjZzJmAvfMxd4PeZoAcfEIdLJrmy8VzuoOBHsT2XlP8OWA5 bqgsVbtZkGsBznJGCl6egLDsC01JywOqfRPH7CHmR4waMocxwOjdC3BDaUvmcjmn3mIs RliiZ7lPVyG0ETkCLYuPRt/UnSbB7rpFAI/EdmYjCcx7FtJEm9D+4NG+dWyk+xp2k/Pe S7AWmyEMqG4N9Jhsc6swlxUx6WUac3O7w/ctAtdLvaNjKTVChQ1Pg7GvDat7rznR+fts Sgqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=qzluUBhJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sa19-20020a1709076d1300b0078dcdbe650fsi337727ejc.443.2022.10.13.11.40.34; Thu, 13 Oct 2022 11:41:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=qzluUBhJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S231438AbiJMScV (ORCPT + 99 others); Thu, 13 Oct 2022 14:32:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232012AbiJMSbz (ORCPT ); Thu, 13 Oct 2022 14:31:55 -0400 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D8C3188124 for ; Thu, 13 Oct 2022 11:27:48 -0700 (PDT) Received: by mail-ed1-x531.google.com with SMTP id s30so3826364eds.1 for ; Thu, 13 Oct 2022 11:27:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DEldd9wQdL+BNIpPagsN4syvK2Vu5z+yJRpIhSRKQMc=; b=qzluUBhJwWMerMPUe1gwWm6V5osUfex8TSHWUCaPokvqy+9fQRlP7jpgo9iflEUD6g clMX3iYM7P+JkEBVsDGWP/fJycFBwJwEj5F7/evQJKj89Q9Uq+rtrU5D8kLD3Ptz9o8W QGPC6LRUw4nVWr7SnJBkCg1O3NStZ/Bsmo/XcHOMkIUJNkLEjKN/2cGlflJjwhEtjDLG aVUbu9K3c9BXOsCY1+KOE1S1+NeKycL2yjfht2mOAaOSQDvmGRyMZH7+rF77Glo/k7LB ip6ygGlGS3didO4QLZtugOcfuvhQsFAyIWPR+8jGmCITGDyYQ9DxS+TGWikBtW/zo4qc DzjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DEldd9wQdL+BNIpPagsN4syvK2Vu5z+yJRpIhSRKQMc=; b=zpQxs0whNKA4hbshtq8dvM5VcnmtKM2++znO3Ot85dob0SkdwAOTRjv5uTGy9Xalg2 gfP5jBUxIY7hcPlFmbvJ/E2lHCJZPm1ZtsqzhgYyhHA9iEO3XPv9hoyuBn1x0v+NTEVI xY/28KFFmKytL+tKcWjEp1o572P9SIIv4NDipiNC2XsqpB8pKwtzbJ6keoOokGFkTriA dG4b09lVwOwueouHIuayVwbIlBGLhMeHrWR+UKDQGr4mWMtXlxRVwJCv8i3xINLWxLKk ZIEueOlBjUJlP0B/s6v3J4tmTlXAJZsFUcR1lHEoT+RtGRmnlMW0W0IslVESP0cbNioK tiTA== X-Gm-Message-State: ACrzQf2DNJQgAbP7pZsp9tcX6Y/3xdg8iJ+pAJNLYy0KxDjgo4v5VDet wRw3EII+5hBXbClqjzbhOrtMZui7tL8meRgn X-Received: by 2002:a17:907:3d91:b0:78d:f675:5659 with SMTP id he17-20020a1709073d9100b0078df6755659mr766140ejc.92.1665684769534; Thu, 13 Oct 2022 11:12:49 -0700 (PDT) Received: from kista.localdomain (82-149-19-102.dynamic.telemach.net. [82.149.19.102]) by smtp.gmail.com with ESMTPSA id ku15-20020a170907788f00b0078b551d2fa3sm211109ejc.103.2022.10.13.11.12.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Oct 2022 11:12:49 -0700 (PDT) From: Jernej Skrabec To: maxime@cerno.tech, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, wens@csie.org, samuel@sholland.org Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 4/5] iommu/sun50i: Fix flush size Date: Thu, 13 Oct 2022 20:12:19 +0200 Message-Id: <20221013181221.3247429-5-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221013181221.3247429-1-jernej.skrabec@gmail.com> References: <20221013181221.3247429-1-jernej.skrabec@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746598848231637971?= X-GMAIL-MSGID: =?utf-8?q?1746598848231637971?= Function sun50i_table_flush() takes number of entries as an argument, not number of bytes. Fix that mistake in sun50i_dte_get_page_table(). Fixes: 4100b8c229b3 ("iommu: Add Allwinner H6 IOMMU driver") Signed-off-by: Jernej Skrabec --- drivers/iommu/sun50i-iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index 135df6934a9e..7c3b2ac552da 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -512,7 +512,7 @@ static u32 *sun50i_dte_get_page_table(struct sun50i_iommu_domain *sun50i_domain, sun50i_iommu_free_page_table(iommu, drop_pt); } - sun50i_table_flush(sun50i_domain, page_table, PT_SIZE); + sun50i_table_flush(sun50i_domain, page_table, NUM_PT_ENTRIES); sun50i_table_flush(sun50i_domain, dte_addr, 1); return page_table; From patchwork Thu Oct 13 18:12:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jernej_=C5=A0krabec?= X-Patchwork-Id: 2288 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp425686wrs; Thu, 13 Oct 2022 11:44:48 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4TSOkRF9mDHqPawyuyzA1OQ01khyFI8lBgw1NDo9KSVH35oyp5+EiWGpps/V3SMbrPO6LR X-Received: by 2002:a63:5617:0:b0:43c:9a42:fe95 with SMTP id k23-20020a635617000000b0043c9a42fe95mr1099701pgb.446.1665686688042; Thu, 13 Oct 2022 11:44:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1665686688; cv=none; d=google.com; s=arc-20160816; b=rNNt5Tt4iB8YM68M7qZ9GK8rDupw+TKQ82LBxurSW2+li/53ztB+VvNkMb9uIaLovP nEHySJ7eCj3p2+fiLPSSinuK2w5+os5bQQ2DNYOmOeeoAzkKjZGfD9CBRVz9j5jyR3Fz YrQ0g0gKFy2x5Qt1Q5cXfyAKC4nmHl8KoNrscs7HXQaornNg6U4SA9FAuG1t/5Tpbsge 0qYAbRXW5gUBNiIAMNlsGf025XfzrELEuJUvQCl7/u225e/EBi2cWUV+o6mNY+tNT0zm l8+BLaVMoxlY1WozBgVoD5Cv4fV7dWfHmIRGJ5sWZCJldsg3foCiu3QjTkhkq6LqqeKQ WlWA== 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=G/wqfyJKTZ7wwUwifWDTzmNazpZHMfc05QXeSM6TUXI=; b=lVKANp512QbV6219rXUD0LuJCA3ex0eVK0j517x8DIot3CUq/Fqa+EPs9KaCzRBpBJ p8qvrWcsNt6sU/b0GaFukQvg9/iYEaco/7sgSEbWONCf9pcm5AYGEa4yursWJbqH5tCV fndHw7E0ioExSAmVdLyS4uHx+yboN+rcIqYrEU4WcM5bLRtevSgOPXsgKTmmazT1qeoV fITG4xfIpxQV99gmnoH7e5CN+ZRlB2nAu9/gtpBudWcptYnsxPTu/2mK+mhYzsmqVAP/ 31Kinr0klD41z/3+Um0Y7sJ4noQqSrBLLJ0/sYeYliAcM/+uPHGuB1x2BEfHN7tCZAGd 5ERw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=HaWB05RU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b5-20020a170902d50500b0017841dd2ee6si613561plg.170.2022.10.13.11.44.36; Thu, 13 Oct 2022 11:44:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=HaWB05RU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S231824AbiJMSY1 (ORCPT + 99 others); Thu, 13 Oct 2022 14:24:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232114AbiJMSXw (ORCPT ); Thu, 13 Oct 2022 14:23:52 -0400 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F71B44544 for ; Thu, 13 Oct 2022 11:19:28 -0700 (PDT) Received: by mail-ej1-f46.google.com with SMTP id d26so5649809ejc.8 for ; Thu, 13 Oct 2022 11:19:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G/wqfyJKTZ7wwUwifWDTzmNazpZHMfc05QXeSM6TUXI=; b=HaWB05RUzvGfW6+QiMaqb8b0VOKKAaUqAEvziPp0WVrpvdqnF7t9V7XIW/Kdd2CgTV MWJQpXnB4lJPuCjoPHK4oXZ2a5OmmlJ6mMvRxsbnC+3saJfPtSps5BwSki8CFQMHRPjc aDGbMFxIME7O4mmOfGRwjI3kPeu7DB/u64DMUqpxcNLaMBT+EAwQGRC0ySMbeNQ02CKT 0slQHRidRJ/khi3Tf4mcKVVW7Fdct7kH+myaom2zNvNGPDxIlJv7Xnh/kM8OaXTlNcHJ avaPrzAqSGIvo/rdV72eaY6xHH/dvt2g8Slr/UEBbbSwTOQqUJKa7BoJeS5+rc2+i9by vLYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G/wqfyJKTZ7wwUwifWDTzmNazpZHMfc05QXeSM6TUXI=; b=emdiNi4uiEH4uKHTXFkQhXsL6GK20Ue/OHMAbFV/iKwJqDxLNizHyHeaapT0ujNfqY D7H0eFaEAFg0ZAqXLEbTRvjdWNvd346o4SRyXfjwaEGy48g7fNGve865Ba2JsjAal1on 9exwOPWO1foczZW7Ga/u5z8Bkc6oUmTeaUJPi6o2onaRcNrEVLiGFBS+eE5pKCqQXr4s /li5NR0oviWO7D7X9PRtEIMyqKiEbUhQ0+Vysop9miA/T9/LOJpG0i//dU+of7TnYVu2 0413QAvMrkD5Qx1vJOvWtpJ/uJEJByGm6DCRyFOcTY/syj8B00d6CBbGF/abeXqUGl5S Vd2w== X-Gm-Message-State: ACrzQf3rL2xU3WxhywMNkU08BVqwSvhfPQpkzYnXvJpXIvQppOQhpOM1 I2wZPBchKXlmhUnu1LKcQEg= X-Received: by 2002:a17:907:75ed:b0:78d:97ed:2894 with SMTP id jz13-20020a17090775ed00b0078d97ed2894mr698352ejc.739.1665684770605; Thu, 13 Oct 2022 11:12:50 -0700 (PDT) Received: from kista.localdomain (82-149-19-102.dynamic.telemach.net. [82.149.19.102]) by smtp.gmail.com with ESMTPSA id ku15-20020a170907788f00b0078b551d2fa3sm211109ejc.103.2022.10.13.11.12.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Oct 2022 11:12:50 -0700 (PDT) From: Jernej Skrabec To: maxime@cerno.tech, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, wens@csie.org, samuel@sholland.org Cc: iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Jernej Skrabec Subject: [PATCH 5/5] iommu/sun50i: Invalidate iova at map and unmap Date: Thu, 13 Oct 2022 20:12:20 +0200 Message-Id: <20221013181221.3247429-6-jernej.skrabec@gmail.com> X-Mailer: git-send-email 2.38.0 In-Reply-To: <20221013181221.3247429-1-jernej.skrabec@gmail.com> References: <20221013181221.3247429-1-jernej.skrabec@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746599011403447781?= X-GMAIL-MSGID: =?utf-8?q?1746599084522774082?= Mapped and unmapped iova addresses needs to be invalidated immediately or otherwise they might or might not work when used by master device. This was discovered when running video decoder conformity test with Cedrus. Some videos were now and then decoded incorrectly and generated page faults. Fixes: 4100b8c229b3 ("iommu: Add Allwinner H6 IOMMU driver") Signed-off-by: Jernej Skrabec --- drivers/iommu/sun50i-iommu.c | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index 7c3b2ac552da..21e47ce6946a 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -518,6 +518,53 @@ static u32 *sun50i_dte_get_page_table(struct sun50i_iommu_domain *sun50i_domain, return page_table; } +static void sun50i_iommu_zap_iova(struct sun50i_iommu *iommu, unsigned long iova) +{ + unsigned long flags; + u32 reg; + int ret; + + spin_lock_irqsave(&iommu->iommu_lock, flags); + + iommu_write(iommu, IOMMU_AUTO_GATING_REG, 0); + + iommu_write(iommu, IOMMU_TLB_IVLD_ADDR_REG, iova); + iommu_write(iommu, IOMMU_TLB_IVLD_ADDR_MASK_REG, GENMASK(11, 0)); + iommu_write(iommu, IOMMU_TLB_IVLD_ENABLE_REG, IOMMU_TLB_IVLD_ENABLE_ENABLE); + + ret = readl_poll_timeout_atomic(iommu->base + IOMMU_TLB_IVLD_ENABLE_REG, + reg, !reg, 1, 2000); + if (ret) + dev_warn(iommu->dev, "TLB invalidation timed out!\n"); + + iommu_write(iommu, IOMMU_AUTO_GATING_REG, IOMMU_AUTO_GATING_ENABLE); + + spin_unlock_irqrestore(&iommu->iommu_lock, flags); +} + +static void sun50i_iommu_zap_ptw_cache(struct sun50i_iommu *iommu, unsigned long iova) +{ + unsigned long flags; + u32 reg; + int ret; + + spin_lock_irqsave(&iommu->iommu_lock, flags); + + iommu_write(iommu, IOMMU_AUTO_GATING_REG, 0); + + iommu_write(iommu, IOMMU_PC_IVLD_ADDR_REG, iova); + iommu_write(iommu, IOMMU_PC_IVLD_ENABLE_REG, IOMMU_PC_IVLD_ENABLE_ENABLE); + + ret = readl_poll_timeout_atomic(iommu->base + IOMMU_PC_IVLD_ENABLE_REG, + reg, !reg, 1, 2000); + if (ret) + dev_warn(iommu->dev, "PTW cache invalidation timed out!\n"); + + iommu_write(iommu, IOMMU_AUTO_GATING_REG, IOMMU_AUTO_GATING_ENABLE); + + spin_unlock_irqrestore(&iommu->iommu_lock, flags); +} + static int sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot, gfp_t gfp) { @@ -546,6 +593,8 @@ static int sun50i_iommu_map(struct iommu_domain *domain, unsigned long iova, *pte_addr = sun50i_mk_pte(paddr, prot); sun50i_table_flush(sun50i_domain, pte_addr, 1); + sun50i_iommu_zap_iova(iommu, iova); + sun50i_iommu_zap_ptw_cache(iommu, iova); out: return ret; @@ -571,6 +620,8 @@ static size_t sun50i_iommu_unmap(struct iommu_domain *domain, unsigned long iova memset(pte_addr, 0, sizeof(*pte_addr)); sun50i_table_flush(sun50i_domain, pte_addr, 1); + sun50i_iommu_zap_iova(sun50i_domain->iommu, iova); + sun50i_iommu_zap_ptw_cache(sun50i_domain->iommu, iova); return SZ_4K; }