From patchwork Thu Oct 19 22:27:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Frank Li X-Patchwork-Id: 155725 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2010:b0:403:3b70:6f57 with SMTP id fe16csp688262vqb; Thu, 19 Oct 2023 15:28:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEwFIhhQR+z2ki+fKlmUYJhq9MkJ4FoN4ZpLJaeQVWoTHHL/z/OLO50IMutETJDVPykV4a/ X-Received: by 2002:a05:6a20:da87:b0:157:609f:6057 with SMTP id iy7-20020a056a20da8700b00157609f6057mr151528pzb.27.1697754525434; Thu, 19 Oct 2023 15:28:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697754525; cv=pass; d=google.com; s=arc-20160816; b=leUC8CSYUpBstVrwLWL7gP35xl1xit9wXiPGDz0Z7pV0bB7FnkqBycEmWx7wG/q/kX BgZ5uFlXFZa/Mgj765bRtWD9+CwcOMiRT5xsfPGTi+Jjr+RCfDgpvVV7SVLgDtBVbalf HGPOHc7owOEc1abU8n1jfpDxMGmjB1x2qxsRHMbb7iPp1/JAvBNCQrSu0FQk/S4l7kE1 tV90bJnLRQwaMMYPJVLiCHQ0JcjJ9TphpvDyEFB6ARecmL0ZQIMi75MXGjV0hrGRrtUu WQ6KbrknVBFJ6udMR1eJLU3NHSxcGV1bdfxaHE55Ndp3aSwd5UJSrO8X8uVVwVexUvdL fTDA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=nayoLnZA6AxlXnKCCet/C/KGKXlH5vBlf4Xff954ehM=; fh=sDe3TG6/b46JEOvF2xh0f1K4oYWCH8cpxTVfh1/w/G8=; b=yW+weJIpBdrdkhVd6zX1FerAeparB2mVU4jRYiSWRLDzlGHO64fBXRIG+dDOCcMtK1 bYZy1dj0nSZULvksfMp5H6+O0/RfofFZ/IXA/Cbl8eh4xknKuDKEUdGpY8g4xKR4W78G JFqKfSQIQm+aK6ofXqh9lzQIDTgFNZFv/uYYrhOdW9PdqWx5EqZbsrYrPmVriC8k8pKA /ogF4ticJZyugFOq+kdeG18prsZmla1ZwqNYqh2E7DvAd7FsIit0XCCGJmPcYoZOkMn7 p5Io9FiEurD9hJgv0nppzvTXunZ3z4yh+HzlGrl6v2n3/SoSOodDGiT7h3aduuqW/VKp KnAQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=Qron0qZv; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id 10-20020a170902c20a00b001bbcddd6e82si424508pll.91.2023.10.19.15.28.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Oct 2023 15:28:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=Qron0qZv; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id A226281E5559; Thu, 19 Oct 2023 15:28:18 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346648AbjJSW1x (ORCPT + 26 others); Thu, 19 Oct 2023 18:27:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346636AbjJSW1u (ORCPT ); Thu, 19 Oct 2023 18:27:50 -0400 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2080.outbound.protection.outlook.com [40.107.22.80]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 538EBCA for ; Thu, 19 Oct 2023 15:27:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lv4cDGShXeR/1JmdmgHJ4dEt2oaDEIGFOfPICkkgr2HiiW2jswV25ppOZ4+9ReqfGmJYH4Y0SyXrfecOLWXqJbXnKLbV4qVu+CLfgS5HZWc1NmAki5dyO5AnBIOTr/qTj0t6AV8jCOfFZ3jpq8i6kSBYAvnqBIsZp6i03NUtyv20178b7l4IYA/wsl1ElhOMA5YDlwhKX1SmBzBMRLIJs5xsxijhxabLHlyrTzRatbVqZkSQhuiMFoPMZi7tMK1LBSHwXOAp03nadExsVU+UJEBJbC8CbftNfaekoxCeR20JwiKCUflgQB01rNgitA6C5/OQHGQbDca1y+l/tyNg0g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=nayoLnZA6AxlXnKCCet/C/KGKXlH5vBlf4Xff954ehM=; b=iz6226LEgDWXs93yzs8TRrEvKZ1ZQv900LHlhjGL3vSmtEI5MqcR4O0fQUjL6OdOf0E5JsP7TmtyiWOYYURsT9Wry4gckc2iGcp5NiY7W1keBE/QKigLQAesfBSSm3L5eRzuVRExL+gQNqYUVJ8GxHfpf7EHthEqYddoI3iqhCohOO1IfGsteA5sz5LzF+RnHdU4SCCJ64k6aMmolkPhzxTKNut3XpUpOlaK0/zHwXUPBGlinNExx1H21mdKiD3fYLyRTYuv3OiHbV9gIQ4AOoyCS70hSs4A3pXPwojqxBIeSUSB9zQRDtxhMWCUykyvll+u4+8Ka8Mm5+KcTD43sA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=nayoLnZA6AxlXnKCCet/C/KGKXlH5vBlf4Xff954ehM=; b=Qron0qZvzh9R9lQ10mbL+NcL3ASOLaXPFXhCutOdPb6Yi5743Jbtwab82SgotNmL5IzjauCxs87mZmSR719v0LWAWsl7BjlPn4rFtKXhybwZvgHb6+f1i6Yk3D7XonKLgK/vm3e+Ou7h7GSpDddKSpcQhRMw2QMZecNkY1vGSU4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) by DBBPR04MB7708.eurprd04.prod.outlook.com (2603:10a6:10:20d::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.10; Thu, 19 Oct 2023 22:27:46 +0000 Received: from AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2]) by AM6PR04MB4838.eurprd04.prod.outlook.com ([fe80::1774:e25f:f99:aca2%4]) with mapi id 15.20.6907.022; Thu, 19 Oct 2023 22:27:46 +0000 From: Frank Li To: miquel.raynal@bootlin.com Cc: Frank.Li@nxp.com, alexandre.belloni@bootlin.com, conor.culhane@silvaco.com, imx@lists.linux.dev, joe@perches.com, linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/6] i3c: master: svc: fix wrong data return when IBI happen during start frame Date: Thu, 19 Oct 2023 18:27:21 -0400 Message-Id: <20231019222725.3598022-3-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231019222725.3598022-1-Frank.Li@nxp.com> References: <20231019222725.3598022-1-Frank.Li@nxp.com> X-ClientProxiedBy: PH7PR17CA0042.namprd17.prod.outlook.com (2603:10b6:510:323::21) To AM6PR04MB4838.eurprd04.prod.outlook.com (2603:10a6:20b:4::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM6PR04MB4838:EE_|DBBPR04MB7708:EE_ X-MS-Office365-Filtering-Correlation-Id: e3b0df36-cc2d-477f-8eca-08dbd0f29ea5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /rHP0is51NSlclkO3cW50Eri7HQoNqkzrrZJEKFKRrtuocnt9IAFlaLzerTFFAV/al+vs9PNyFKIhILf7DIYBhPbgyMlLKeGbXzmajNF88DJXkjyYR9riej1tQqPfnt2kcPYmX7hg7wOqrk2G10iEF7IjfFJ9yI8z7KptK8F9w6aoj1bMyu3mE8D/v5R/XACkpjqnhO2Al9JyPWr8DeSwEVSNpTIhsrMujddeXMlx7gPdaPKi0OlK7tbRMfYSuOCEwCwmo1sCiShKva5UEzlTySeVWV0G2IdxasjFIOWaRUWdVHnFkHh3f6NvlLZhEVys9EBQKizMulXzKbVQwL1TqRGH3/BFfFOMWQbQ79n9vZ6TwbTLKj9vZBmUjUdSti1CMecQY4xQz0VJlpYb8XyKtYtFBfF86Yk8Q409LcGgj3p/lLZ9XZ0eep1/J1rOMv1POntr8fWTNE4fYB3d71lEiWdDpGMUuukDNdzTM/DAygZDJZJBZbWGklxSHxmZXi5p65AqJuAbny/f2uXQi6NZPXblGlKFvvOZwamTjDnAQPVeDQd2O8hYqEnOwu1qHuK1AQt6MuulawyYIvxDfOxd6g8CbICnJ8e9Ft+aFDIOMF33EydA//57oFxFKl610YoyO49gXiaZC7lYuGmz8iWIjzDGZWutQmvXIMj8Vwkv80= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB4838.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(366004)(346002)(39860400002)(376002)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(6506007)(83380400001)(6512007)(38100700002)(478600001)(36756003)(66476007)(66556008)(66946007)(316002)(6916009)(86362001)(6486002)(52116002)(2616005)(1076003)(26005)(6666004)(5660300002)(2906002)(41300700001)(8676002)(8936002)(4326008)(38350700005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?nuyAePY4bROJEIXmXJI95TjWS8jq?= =?utf-8?q?NW/Bf95x3H8vdz/kW0Bt3Ye1+HNZAdkFG5PiFUKZ01JrIDLElUWS8MlRCQe0ErUUF?= =?utf-8?q?TSVcAkelhJbUzdDvVQ3XkVK6UWCH/SeUOzD1DH/8jRI6XMAnEGh2JOMvys8vb1qR1?= =?utf-8?q?27H5j50z1XuBRNjI+m/Nbq09/rdaIgi/KydT7kbNdMZwrRNJChjzjkoK3MwJ3inMC?= =?utf-8?q?py+j5rEo2QE036Yhgp+2ZRybc/tfokatk9arBhPLfNvzWFJL1QNNKsSSpu9+ICvHn?= =?utf-8?q?cw2Va3objUing2noenFITDOB87R4QIC7acY3qjOmsRticGbipMRbr/NP06C88MMCO?= =?utf-8?q?c/CP9oPRVprvltbmtWA6tQZeKRcskAkY+b+7mVCmKdbBWyrwUIVrPb0Fbmhh/qBsQ?= =?utf-8?q?4r7M++q8TDUVDMTnqCauwkNZoeuNg9YnKWtDWMRSYUjfdeXVGD3MuuYNwoklymMpU?= =?utf-8?q?LGUgYdmI9fE/MwdFzRW8u0xBeXBXEUlCs+Dv6F2ZLzEfMa7Glc8C3bRP1/jIDmVp6?= =?utf-8?q?wQR3nS02vb+AUGGkFUO3b17pwiiLqwRKhFNgZNEbMoJSyGykY4NRfSAhrzRlewxcO?= =?utf-8?q?LiYvaiQ1pq5oMcVPwcwHDHAWgpVKiifm2tKqC1Rov6PvACPOn9twhEpweVsi5Q+8S?= =?utf-8?q?OtxLMIs/HDlb+CzyktsM8y+IPylNHh1/Nd41/0IT50oNTQyRZpbQn/gyAa9Uy5VUn?= =?utf-8?q?3tHMjvzqvk+BHSFvFDYZBXAm7IJdyLzt/RNXZQCI9s5taDAYGBnXBkqkyOJbOEQNm?= =?utf-8?q?cFQGPHDcasMNj3V2QXX7cu6qP0fla3UN+GOnDt96xH7/qO1S8+ZAec6DOR65pSis/?= =?utf-8?q?7D1ByyRmYkpLGJY8OMcKP1W9xIh3HAXcFiqTTB9PkZXJc9mVtwYkoAeq9fIRl2F0K?= =?utf-8?q?o9Ai4r9PenN3NXsIkfHQy/ZADnasCZl7AyuG0RRTnHRxcMf7vqV8uxlsDPKu0cAHA?= =?utf-8?q?DMlyZ+/MyKAK+IK94N+/CLXgElroaR3lbR3IIwr6drSvLxCGQc/9NsOfiOYmRni6z?= =?utf-8?q?YZamRwoDkQxIjT7SzmcIiyKSQIv68RqDC4LxwnTI8igct5QNeWt69yOI/c9jJ+NYc?= =?utf-8?q?X2Kl0QZX+hGCGXbeuPE4rsy9FuR0965meL0AW3TDNw+Lupaj2I2As6l2qyURjmxCY?= =?utf-8?q?9HNqaqc+JgIidmEvw6iIGKyqA3/PXnHH6a/oPW5Q0yXDZRt3sUMIhfmCh2Xy988gq?= =?utf-8?q?e6To2NaErj7M05bKcqLgcMG8jR1IZ/A9eI5rEr2PXroA6mnZnnXt9ExjT6boIl5C7?= =?utf-8?q?op+5lIEAdqs7WG1rYkGH8xajXllHdz9NyzEY2g78WeTgj9+fzsofSmtS5YE2TV0+M?= =?utf-8?q?SoS5DAigWi4wEWKsHeRgTfmK7zlP9faBFtdSpL8STItbZV58aJX3BlqHp5Xas89cn?= =?utf-8?q?lF3JrZup35UqcLKh1Bo9rpejEMu1blxDTZ2YgyCzg/ZXJ1xBJ6HGKi0ijgrJJ69a+?= =?utf-8?q?dvOFr+f9Y+b4+wMYdLY6UHHKOrTdND/y/KAW1x/CBMLY1ReTmPOXwu8k=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3b0df36-cc2d-477f-8eca-08dbd0f29ea5 X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4838.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2023 22:27:46.6967 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UjWOuI190NzS7D4LU06fTE+PcM4B2/M2KE1OyCW32WX+PrrxRmTAWWf65gJJeTK8T0vROiMQ2PRVDkh4cTEw5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB7708 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Thu, 19 Oct 2023 15:28:18 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780224649324381909 X-GMAIL-MSGID: 1780224649324381909 ┌─────┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┏──┐ ┌───── SCL: ┘ └─────┛ └──┛ └──┛ └──┛ └──┛ └──┛ └──┛ └──┛ └──┘ ───┐ ┌─────┐ ┌─────┐ ┌───────────┐ SDA: └───────────────────────┘ └─────┘ └─────┘ └───── xxx╱ ╲╱ ╲╱ ╲╱ ╲╱ ╲ : xxx╲IBI ╱╲ Addr(0x0a) ╱╲ RW ╱╲NACK╱╲ S ╱ If an In-Band Interrupt (IBI) occurs and IBI work thread is not immediately scheduled, When svc_i3c_master_priv_xfers() initiates the I3C transfer and attempts to send address 0x7e, the target interprets it as an IBI handler and returns the target address 0x0a. However, svc_i3c_master_priv_xfers() does not handle this case and proceeds with other transfers, resulting in incorrect data being returned. Add IBIWON check in svc_i3c_master_xfer(). In case this situation occurs, return a failure to the driver. Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver") Cc: stable@vger.kernel.org Reviewed-by: Miquel Raynal Signed-off-by: Frank Li --- Notes: Change from v1 to v2 - update commit message - fix typo yeild and falure drivers/i3c/master/svc-i3c-master.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/i3c/master/svc-i3c-master.c b/drivers/i3c/master/svc-i3c-master.c index 8cd708c965085..abebef666b2bb 100644 --- a/drivers/i3c/master/svc-i3c-master.c +++ b/drivers/i3c/master/svc-i3c-master.c @@ -1010,6 +1010,9 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master, u32 reg; int ret; + /* clean SVC_I3C_MINT_IBIWON w1c bits */ + writel(SVC_I3C_MINT_IBIWON, master->regs + SVC_I3C_MSTATUS); + writel(SVC_I3C_MCTRL_REQUEST_START_ADDR | xfer_type | SVC_I3C_MCTRL_IBIRESP_NACK | @@ -1028,6 +1031,23 @@ static int svc_i3c_master_xfer(struct svc_i3c_master *master, goto emit_stop; } + /* + * According to I3C spec ver 1.1.1, 5.1.2.2.3 Consequence of Controller Starting a Frame + * with I3C Target Address. + * + * The I3C Controller normally should start a Frame, the Address may be arbitrated, and so + * the Controller shall monitor to see whether an In-Band Interrupt request, a Controller + * Role Request (i.e., Secondary Controller requests to become the Active Controller), or + * a Hot-Join Request has been made. + * + * If missed IBIWON check, the wrong data will be return. When IBIWON happen, return failure + * and yield the above events handler. + */ + if (SVC_I3C_MSTATUS_IBIWON(reg)) { + ret = -ENXIO; + goto emit_stop; + } + if (rnw) ret = svc_i3c_master_read(master, in, xfer_len); else