Message ID | 20221124055036.1630573-2-Frank.Li@nxp.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp3210558wrr; Wed, 23 Nov 2022 21:53:59 -0800 (PST) X-Google-Smtp-Source: AA0mqf4gmD4/QSPR/QroGOZKOu405Zfw+rGiZKC1xW0H0mH/kbfvwVfEHAAVUyzU1g/btlFxr3yv X-Received: by 2002:a17:906:edd2:b0:7bb:1424:b112 with SMTP id sb18-20020a170906edd200b007bb1424b112mr1689645ejb.168.1669269239783; Wed, 23 Nov 2022 21:53:59 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1669269239; cv=pass; d=google.com; s=arc-20160816; b=SqquI49fs4JMdmFRfRD1Kb6LLGqp5jWJhh7DGf45/kzqr1UX1uibh3XvKJtlbAx/Sv nO5hBeE44cFZ3HyBLmrjIBPHbZW6j/3i1dMr2MYrwN37VKgXRL10X7c4kJOH0KNu+RjO 5EQSx9ogTYpjmtzavYcfM9MTjNtIJY5jOA00p9VXIehzDdEzD5zxwbzACX/qaUypyfX8 wstj5WR1QOtFRlgd5TkErSYUbDjj27hf9HQG8wiiNz/yhmcQ47c/sln7bwuYziV+pWUx USwPnIXykcCNsZ64Vl/eASnaS6f5/c4WhvJuFrU+TFvDKgvxihvtF0T55ZEGM0uE2Zk4 JrXw== 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=rqk0haMkUELkhka90hz7fNXOseyw1Mx6qLdspYNQTZg=; b=MEZ9SIkYBZ1aEBFWoNG1dHvgzA9VkiszBuQJDEPk9qh5U0M+kAxgnHi3p7pSz2FSzV t+OPGAUD/CbPzWbPitccbXf1kPycoYmg6hNN2gE8zKsF9crcYZ/K/3Fpe+fTSDlYJRiB gX7/QMU7KjJNP4xHVfTlnJZnj82b9Hj6myhyMSSC79P32WRLN0opF5zMiA4XY+Udle04 8hEdI0CurAditCWKrXMqe9ZJmDEmK7qjBSWF3puxDwcKv5VtAnda71IqDlR1hL6W+DjM mjI2VBcrkLEKUOzn7v9Y1rdvyJxZGPMY/m5nJ6AZPnx4WRPWo1UOhrLh95phxW5te3Cl duug== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=s8F4cLN5; 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::1:20 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 (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id xf9-20020a17090731c900b0079b9f472d85si119222ejb.698.2022.11.23.21.53.36; Wed, 23 Nov 2022 21:53:59 -0800 (PST) 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=@nxp.com header.s=selector2 header.b=s8F4cLN5; 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::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229570AbiKXFvT (ORCPT <rfc822;fengqi706@gmail.com> + 99 others); Thu, 24 Nov 2022 00:51:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229455AbiKXFvM (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Thu, 24 Nov 2022 00:51:12 -0500 Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03on2087.outbound.protection.outlook.com [40.107.103.87]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 29077C6896; Wed, 23 Nov 2022 21:51:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YssmKPDNrdIZAX4uTTrX5V09sDh1YFDCHKw8aQ680pHq4lJQoJfNQoQHf6x3KLx03OUThxsL30eGpvhKzADxRX2m8k8VoklaZMzCc7li5DLzcwXYz1wtpYn/4BbA4ZgoGr8hqg1ezyZrGL4a999Fz+0Ztmmc57Zp/CrLiIYRq7fh4mDeILCJcEg6UXMzjVvnEyd8frm8VnNPRUS4c01f/+IrpfGypY9s4kT0tmZF5dxUQjG4ura6gOG4evqjtlFiB8SwZY6bDT7p3INm6narAtZTy2vWxbWrJ2bltg3T9E1rtpRWG6Powf34t2HSm6224rH7/sdF/k/Z9DQaM3LftA== 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=rqk0haMkUELkhka90hz7fNXOseyw1Mx6qLdspYNQTZg=; b=Y7Y0L/OYjDOq0w/0ZgEHMCbSfWrOj3y3yIo+e3vAoKTslvlAxjUn8bYEhJVLgQjp8w4u+ULmD9Uu6j4XPYpzNazLWf1K7qvLLfXsOqfPGN5FDAUy7/i5Nnv03HjCpY8vXpA8Mcahbxaw5fQILfgxtF71Zf67aeeCmtXtmlu8xIgqdfNCPGvCu9arQk87ZqAZMluRpu6xW9fFhzaeLeqcXnR74HJ8xZxSm8WksRu8RnXI3D5R3Jh5r8uZFtoUeEgSRKsprWlLed4hgFliyYBM09UIGMqOeUH3Y5zfJJPJBJKbyj+yhkYQEZr+yhXZczAwGwsHg1NxFqhqEPlnHNDVUg== 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=rqk0haMkUELkhka90hz7fNXOseyw1Mx6qLdspYNQTZg=; b=s8F4cLN5mXHPyJyqcWzA4invpGg2FYOmWrDzlvlmMGMPW5JH8kbo5wsa9DYVk7FlMz0dhDnovFGQC8wm36cl2pXAakaCKshLCZk9WG4n45hkF17lCEVa4ffHZyMVRSW9b++IcBWf6xw/7Pnf+jneIsyJ1XGbOQ0rANUr+J3I1Qk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from HE1PR0401MB2331.eurprd04.prod.outlook.com (2603:10a6:3:24::22) by DU2PR04MB8600.eurprd04.prod.outlook.com (2603:10a6:10:2db::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5834.9; Thu, 24 Nov 2022 05:51:09 +0000 Received: from HE1PR0401MB2331.eurprd04.prod.outlook.com ([fe80::a405:3557:91bc:9230]) by HE1PR0401MB2331.eurprd04.prod.outlook.com ([fe80::a405:3557:91bc:9230%12]) with mapi id 15.20.5834.015; Thu, 24 Nov 2022 05:51:09 +0000 From: Frank Li <Frank.Li@nxp.com> To: lpieralisi@kernel.org Cc: Frank.Li@nxp.com, aisheng.dong@nxp.com, bhelgaas@google.com, devicetree@vger.kernel.org, festevam@gmail.com, imx@lists.linux.dev, jdmason@kudzu.us, kernel@pengutronix.de, kishon@ti.com, krzysztof.kozlowski+dt@linaro.org, kw@linux.com, linux-arm-kernel@lists.infradead.org, linux-imx@nxp.com, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, lorenzo.pieralisi@arm.com, lznuaa@gmail.com, manivannan.sadhasivam@linaro.org, maz@kernel.org, ntb@lists.linux.dev, peng.fan@nxp.com, robh+dt@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org, tglx@linutronix.de Subject: [PATCH v13 1/2] PCI: endpoint: pci-epf-vntb: change doorbell register offset calc mathod Date: Thu, 24 Nov 2022 00:50:35 -0500 Message-Id: <20221124055036.1630573-2-Frank.Li@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221124055036.1630573-1-Frank.Li@nxp.com> References: <20221124055036.1630573-1-Frank.Li@nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BYAPR05CA0043.namprd05.prod.outlook.com (2603:10b6:a03:74::20) To HE1PR0401MB2331.eurprd04.prod.outlook.com (2603:10a6:3:24::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: HE1PR0401MB2331:EE_|DU2PR04MB8600:EE_ X-MS-Office365-Filtering-Correlation-Id: a6870bdd-d50f-4c25-66f1-08dacddfe2a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Eis+NDbEcKvz2Y/QIhXqPi2reNgsEufe75/jGIQk/8djQJdOB8DgqQX/vpKwNG+uf8eWO22axbiwm23sgZSV2cb6JP75PdoPAzPvC33ekyE+UKPHVWVb6LuJIY3QyOwEBpugrxiP3vactcsSnZ3BAn750tkQ+lZKN/nuon0rE9w5rFZOWaYmK3VsKsGxuXSNSpU/N/acFpCfWiZvRl8wmFcUGnJ/fm8Pcs0bJqFZTuRFagzgPe0z6BvqtcRwbqfCDgIwtNe8hoRVHWFE16Ms7+2HU7kOx4mQ9hvG9/LAoIiq+shz50/pWL2bo91+Y+0FY+moUQlg8lIRg5GRV2y2ffiywJ/cUN+u3/UMqIKjYUN28EWqbSpF6ZPqFvWHvlWuYXbbQv2FHee6ZyouWhv+EaaLQeVfZIdaKIo+1yPQyyyeKdav2CU6063VZaKSCDmgz3xnUgya5ABv7Tk3ctvMsaasIrfJHu3CQ2dtC2jkKXWZEs15eNFmqG9ZVenBlRuZkmKMwTbladZDHxIBlcdyRyAkT/3HY01TgbTCbYY3ddnFvCI65MocGNMJ0H9qPzEgl1DNRNWhLzx3Rov94Win42SZgjBOYPpgmg5WmDKZB8uvFi3TaMVMEJugVfSJjqo/l6NVQDFJSLOi7rnb5WKGMlnLKoy7ENh4RCUv38uYcvRR8l6HbjRMRuR2VOfKZEn7dz6vyzfJdGDt3ZQnUp4/4w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HE1PR0401MB2331.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(136003)(376002)(39860400002)(366004)(396003)(451199015)(7416002)(86362001)(38350700002)(4326008)(2906002)(83380400001)(38100700002)(316002)(8936002)(8676002)(66476007)(1076003)(6916009)(2616005)(6486002)(36756003)(478600001)(186003)(6506007)(66946007)(6512007)(5660300002)(66556008)(26005)(6666004)(41300700001)(52116002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ysYt8I2t18Se0iXW1UuuoHNHrc/y96l68rqLY+xtIjrYbgKVNlCES/xgPmgPQdaqVzqlf/S3yDSnUCzs5u2Gu2kgDtOERo+tYoJwcUlSiRmCjXitXlZn4nwfZ0qkNuWI9Uo6yHaKTAhawpWzmhF5VzFfS+aHAX6kFwZOvpLCTUcqo662uzPF4YnGJifszOb8wo4mQDxqv7TRyhg1A6LUwCeLZU6KLQkwBq+1p7Lc1GPuVGw35p/AqTyVvFIVK8nVRc91zArq3PLWCARsV6WzrdAm+x9cDKAFz+3YVsBagkAaLo0K+hjnREJXb5RXfS0H0bzAQRzOQCrtZXK1GCw3A/Bipvovh4Xp4Q4b2LfacVKALXRb0X6ifXMYRERxlQk1oIYD2U1IWe2W9ZYlzZeaC5F4BYGQ48X4Z49UUlK6P/U20G+LF/goI+bNBpqV33GtYO4kuzRc0h1PZltrrhy1WL5gNux7dDnK17baCGoa26tzGeRfd+VhyBP/mARJ1r4XcufiCqCLjbJdW6u7xgLbnK/4+EyW4es/z1ilDWWYXFziBwu+NquplRXb6CHgC57y7TtyLZivfUL1TuloohQnZzYF8lsM/MBxe8alWPJDMkHBaPGJ7p7QF9ldQWRQ/jvs7m6MLAADcoHfWoZKfMXCG8nTJ8vmdo/P3C/KQ4P16orrz0kgIX0xmPK7jwbSra+H1oukocVHm+hUydeBR+3gFCv7RF9qGhE3GeIayItfgyM9uz1xoU0DiS7Uw/XluiZfaE7SLZMtcz8muGUypArTN2yoDuDWkP7hwhwyM0RwktMl0MAIDQAZ6gZY9/hP9ZPfECyUj9OI2m6voBLU8vDGD86sri5gRJqRMqftS7MUvAoKjMWyPy9EkAPv42mV7ZozLQ+t10DMXKeElUwMrx2MjoMicjEelW1lqveJQHHuZQ62iDq8YEsXqtFEYThK4VNP3hDn1Yqi3dyqpk2Wm6oBv0RSb+LduGueYbDARql+J8ka2QhjHX128ya7wwfZyJPjckzgczDzks+U6+idXsSfBeqC0CCRTrjWjs+BKWZeKPffR64F9ihqyCNwnkMcLU9E5P/Wz0XDKshRpvnQOWmlc119RaIFtXvrSN0TKFBfpM6weH4aph6hXuMhpXKWswUWbvdTnos/QfOFM/shwpxnheQyF8XkKCnZyEYFK5sWYFQAG8nHbTQTSEHzpvdDs4peiYEMW+k0LzbpeiBLl/16uX7vKkCUL82wz50tLMXpsRkSeZUEQ89dTYDxdwNQiPWIKgAttNo4e+Gdp6ANzlongoLwVkor2jP6voC6Ms3iZ/w3mNkYnQyD1LgYnjejzUl9Za+M1obcK7iQLda8VcWCkV1TmDj0LN+WGHNFvTobDO70N9VcOWK4VbdXsEoIOUqLXOka4pdjPJ7u3FBotI0vUYboG78vPTsGfRuno7p+QnEPR7Obqravhcprf48oxvEN3Xz+Z/xPEp122CC2/cxVS9ZjAWaTFPrF2T3K3mjZ6uNnv3OIILZeEd6nQll9tK8b7lQiYh3t8lAWphIB8Ra+bQBUvWBReDMiJiKly27qfVGNcFxVM+pkukvAocNWzSbw X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a6870bdd-d50f-4c25-66f1-08dacddfe2a6 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0401MB2331.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2022 05:51:09.5928 (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: 3rBREURmx04wx4Dn+qQS1uVD/ib6dFI9zj4Vi1lJk/ZVRzN+pJtp2W7izOzSOP+Ee9Zc3PCitSK4G6zSx9g9Jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR04MB8600 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,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: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750355662397093286?= X-GMAIL-MSGID: =?utf-8?q?1750355662397093286?= |
Series |
PCI: endpoint: pci-epf-vntb: using platform MSI as doorbell
|
|
Commit Message
Frank Li
Nov. 24, 2022, 5:50 a.m. UTC
In drivers/ntb/hw/epf/ntb_hw_epf.c
ntb_epf_peer_db_set()
{
...
db_offset = readl(ndev->ctrl_reg + NTB_EPF_DB_OFFSET(interrupt_num));
writel(db_data, ndev->db_reg + (db_entry_size * interrupt_num) +
db_offset);
...
}
The door register offset's formular is
offset = db_entry_size * interrupt_num + db_offset[interrupt_number]
Previous db_entry_size is 4, all db_offset is 0.
irq | offset
--------------
0 0
1 4
2 8
...
Change to db_entry_size is 0 and db_offset is 0, 4, 8, ...
So we can get the same map value between irq and offset. This will be
convenience for hardware doorbell register memory map.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/pci/endpoint/functions/pci-epf-vntb.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Comments
On Thu, Nov 24, 2022 at 12:50:35AM -0500, Frank Li wrote: > In drivers/ntb/hw/epf/ntb_hw_epf.c > ntb_epf_peer_db_set() > { > ... > db_offset = readl(ndev->ctrl_reg + NTB_EPF_DB_OFFSET(interrupt_num)); > writel(db_data, ndev->db_reg + (db_entry_size * interrupt_num) + > db_offset); > ... > } > > The door register offset's formular is > offset = db_entry_size * interrupt_num + db_offset[interrupt_number] You did not mention the DB BAR here. Without that, this calculation doesn't make sense. > > Previous db_entry_size is 4, all db_offset is 0. s/Previous/Previously > irq | offset > -------------- > 0 0 > 1 4 > 2 8 > ... > > Change to db_entry_size is 0 and db_offset is 0, 4, 8, ... > So we can get the same map value between irq and offset. This will be > convenience for hardware doorbell register memory map. > In your irq-imx-mu-msi.c driver, the msi_address is calculated as: ``` u64 addr = msi_data->msiir_addr + 4 * data->hwirq; ``` So the MSI addresses itself are of 4 bytes width. So the offsets will be separated by 8 bytes like, 0, 8, 16,... and this won't match the MSI addresses as they are 4 bytes apart. So you want to change the offset to 0, 4, 8,... by zeroing db_entry_size, right? > Signed-off-by: Frank Li <Frank.Li@nxp.com> > --- > drivers/pci/endpoint/functions/pci-epf-vntb.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/endpoint/functions/pci-epf-vntb.c > index 04698e7995a5..0d744975f815 100644 > --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c > +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c > @@ -461,11 +461,11 @@ static int epf_ntb_config_spad_bar_alloc(struct epf_ntb *ntb) > ctrl->num_mws = ntb->num_mws; > ntb->spad_size = spad_size; > > - ctrl->db_entry_size = sizeof(u32); > + ctrl->db_entry_size = 0; > > for (i = 0; i < ntb->db_count; i++) { > ntb->reg->db_data[i] = 1 + i; > - ntb->reg->db_offset[i] = 0; > + ntb->reg->db_offset[i] = sizeof(u32) * i; If my above understanding is correct, then you could just reassign "db_entry_size" in epf_ntb_epc_msi_init(). Thanks, Mani > } > > return 0; > -- > 2.34.1 >
> -----Original Message----- > From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> > Sent: Thursday, November 24, 2022 3:19 AM > To: Frank Li <frank.li@nxp.com> > Cc: lpieralisi@kernel.org; Aisheng Dong <aisheng.dong@nxp.com>; > bhelgaas@google.com; devicetree@vger.kernel.org; festevam@gmail.com; > imx@lists.linux.dev; jdmason@kudzu.us; kernel@pengutronix.de; > kishon@ti.com; krzysztof.kozlowski+dt@linaro.org; kw@linux.com; linux- > arm-kernel@lists.infradead.org; dl-linux-imx <linux-imx@nxp.com>; linux- > kernel@vger.kernel.org; linux-pci@vger.kernel.org; > lorenzo.pieralisi@arm.com; lznuaa@gmail.com; maz@kernel.org; > ntb@lists.linux.dev; Peng Fan <peng.fan@nxp.com>; robh+dt@kernel.org; > s.hauer@pengutronix.de; shawnguo@kernel.org; tglx@linutronix.de > Subject: [EXT] Re: [PATCH v13 1/2] PCI: endpoint: pci-epf-vntb: change > doorbell register offset calc mathod > > Caution: EXT Email > > On Thu, Nov 24, 2022 at 12:50:35AM -0500, Frank Li wrote: > > In drivers/ntb/hw/epf/ntb_hw_epf.c > > ntb_epf_peer_db_set() > > { > > ... > > db_offset = readl(ndev->ctrl_reg + NTB_EPF_DB_OFFSET(interrupt_num)); > > writel(db_data, ndev->db_reg + (db_entry_size * interrupt_num) + > > db_offset); > > ... > > } > > > > The door register offset's formular is > > offset = db_entry_size * interrupt_num + db_offset[interrupt_number] > > You did not mention the DB BAR here. Without that, this calculation doesn't > make sense. Doorbell register offset should means Base on DB BAR. How about "The formula of door register offset refer to DB BAR"? > > > > > Previous db_entry_size is 4, all db_offset is 0. > > s/Previous/Previously > > > irq | offset > > -------------- > > 0 0 > > 1 4 > > 2 8 > > ... > > > > Change to db_entry_size is 0 and db_offset is 0, 4, 8, ... > > So we can get the same map value between irq and offset. This will be > > convenience for hardware doorbell register memory map. > > > > In your irq-imx-mu-msi.c driver, the msi_address is calculated as: > > ``` > u64 addr = msi_data->msiir_addr + 4 * data->hwirq; > ``` > > So the MSI addresses itself are of 4 bytes width. So the offsets will be > separated by 8 bytes like, 0, 8, 16,... and this won't match the MSI addresses > as they are 4 bytes apart. Addr is absolute physical IO address, which increased by 4. But it doesn't matter. It should be okay if range is between 2^32. > > So you want to change the offset to 0, 4, 8,... by zeroing db_entry_size, > right? I want to directly using db_offset[irq] value as offset. It will be simple. I am not sure why ntb_hw_epf.c use below formular. "Db_offset[irq] + irq * db_entry_size" Db_entry_size = 0 will be simple, all offset will be controlled by db_offset[] You can save db_offset[] as 0, 4, 8... or 0, 8, 16 as needs. > > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > > --- > > drivers/pci/endpoint/functions/pci-epf-vntb.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c > b/drivers/pci/endpoint/functions/pci-epf-vntb.c > > index 04698e7995a5..0d744975f815 100644 > > --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c > > +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c > > @@ -461,11 +461,11 @@ static int epf_ntb_config_spad_bar_alloc(struct > epf_ntb *ntb) > > ctrl->num_mws = ntb->num_mws; > > ntb->spad_size = spad_size; > > > > - ctrl->db_entry_size = sizeof(u32); > > + ctrl->db_entry_size = 0; > > > > for (i = 0; i < ntb->db_count; i++) { > > ntb->reg->db_data[i] = 1 + i; > > - ntb->reg->db_offset[i] = 0; > > + ntb->reg->db_offset[i] = sizeof(u32) * i; > > If my above understanding is correct, then you could just reassign > "db_entry_size" in epf_ntb_epc_msi_init(). Yes, that's one method. I want to use one method to calc db offset for both software polling and MSI. So overall logic should be simple. Frank Li > > Thanks, > Mani > > > } > > > > return 0; > > -- > > 2.34.1 > > > > -- > மணிவண்ணன் சதாசிவம்
On Thu, Nov 24, 2022 at 05:49:32PM +0000, Frank Li wrote: > > > > -----Original Message----- > > From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> > > Sent: Thursday, November 24, 2022 3:19 AM > > To: Frank Li <frank.li@nxp.com> > > Cc: lpieralisi@kernel.org; Aisheng Dong <aisheng.dong@nxp.com>; > > bhelgaas@google.com; devicetree@vger.kernel.org; festevam@gmail.com; > > imx@lists.linux.dev; jdmason@kudzu.us; kernel@pengutronix.de; > > kishon@ti.com; krzysztof.kozlowski+dt@linaro.org; kw@linux.com; linux- > > arm-kernel@lists.infradead.org; dl-linux-imx <linux-imx@nxp.com>; linux- > > kernel@vger.kernel.org; linux-pci@vger.kernel.org; > > lorenzo.pieralisi@arm.com; lznuaa@gmail.com; maz@kernel.org; > > ntb@lists.linux.dev; Peng Fan <peng.fan@nxp.com>; robh+dt@kernel.org; > > s.hauer@pengutronix.de; shawnguo@kernel.org; tglx@linutronix.de > > Subject: [EXT] Re: [PATCH v13 1/2] PCI: endpoint: pci-epf-vntb: change > > doorbell register offset calc mathod > > > > Caution: EXT Email > > > > On Thu, Nov 24, 2022 at 12:50:35AM -0500, Frank Li wrote: > > > In drivers/ntb/hw/epf/ntb_hw_epf.c > > > ntb_epf_peer_db_set() > > > { > > > ... > > > db_offset = readl(ndev->ctrl_reg + NTB_EPF_DB_OFFSET(interrupt_num)); > > > writel(db_data, ndev->db_reg + (db_entry_size * interrupt_num) + > > > db_offset); > > > ... > > > } > > > > > > The door register offset's formular is > > > offset = db_entry_size * interrupt_num + db_offset[interrupt_number] > > > > You did not mention the DB BAR here. Without that, this calculation doesn't > > make sense. > > Doorbell register offset should means Base on DB BAR. > How about "The formula of door register offset refer to DB BAR"? "Doobell register offset in DB BAR is calculated using:" > > > > > > > > > Previous db_entry_size is 4, all db_offset is 0. > > > > s/Previous/Previously > > > > > irq | offset > > > -------------- > > > 0 0 > > > 1 4 > > > 2 8 > > > ... > > > > > > Change to db_entry_size is 0 and db_offset is 0, 4, 8, ... > > > So we can get the same map value between irq and offset. This will be > > > convenience for hardware doorbell register memory map. > > > > > > > In your irq-imx-mu-msi.c driver, the msi_address is calculated as: > > > > ``` > > u64 addr = msi_data->msiir_addr + 4 * data->hwirq; > > ``` > > > > So the MSI addresses itself are of 4 bytes width. So the offsets will be > > separated by 8 bytes like, 0, 8, 16,... and this won't match the MSI addresses > > as they are 4 bytes apart. > > Addr is absolute physical IO address, which increased by 4. But it doesn't matter. > It should be okay if range is between 2^32. > > > > > So you want to change the offset to 0, 4, 8,... by zeroing db_entry_size, > > right? > > I want to directly using db_offset[irq] value as offset. It will be simple. > > I am not sure why ntb_hw_epf.c use below formular. > "Db_offset[irq] + irq * db_entry_size" > > Db_entry_size = 0 will be simple, all offset will be controlled by db_offset[] > > You can save db_offset[] as 0, 4, 8... or 0, 8, 16 as needs. > > > > > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > > > --- > > > drivers/pci/endpoint/functions/pci-epf-vntb.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c > > b/drivers/pci/endpoint/functions/pci-epf-vntb.c > > > index 04698e7995a5..0d744975f815 100644 > > > --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c > > > +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c > > > @@ -461,11 +461,11 @@ static int epf_ntb_config_spad_bar_alloc(struct > > epf_ntb *ntb) > > > ctrl->num_mws = ntb->num_mws; > > > ntb->spad_size = spad_size; > > > > > > - ctrl->db_entry_size = sizeof(u32); > > > + ctrl->db_entry_size = 0; > > > > > > for (i = 0; i < ntb->db_count; i++) { > > > ntb->reg->db_data[i] = 1 + i; > > > - ntb->reg->db_offset[i] = 0; > > > + ntb->reg->db_offset[i] = sizeof(u32) * i; > > > > If my above understanding is correct, then you could just reassign > > "db_entry_size" in epf_ntb_epc_msi_init(). > > Yes, that's one method. > I want to use one method to calc db offset for both software polling > and MSI. So overall logic should be simple. > I think it is better to leave db_entry_size for polling as it is and modify it for MSI alone. Thanks, Mani > Frank Li > > > > > Thanks, > > Mani > > > > > } > > > > > > return 0; > > > -- > > > 2.34.1 > > > > > > > -- > > மணிவண்ணன் சதாசிவம்
> -----Original Message----- > From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> > Sent: Thursday, November 24, 2022 12:51 PM > To: Frank Li <frank.li@nxp.com> > Cc: lpieralisi@kernel.org; Aisheng Dong <aisheng.dong@nxp.com>; > bhelgaas@google.com; devicetree@vger.kernel.org; festevam@gmail.com; > imx@lists.linux.dev; jdmason@kudzu.us; kernel@pengutronix.de; > krzysztof.kozlowski+dt@linaro.org; kw@linux.com; linux-arm- > kernel@lists.infradead.org; dl-linux-imx <linux-imx@nxp.com>; linux- > kernel@vger.kernel.org; linux-pci@vger.kernel.org; > lorenzo.pieralisi@arm.com; lznuaa@gmail.com; maz@kernel.org; > ntb@lists.linux.dev; Peng Fan <peng.fan@nxp.com>; robh+dt@kernel.org; > s.hauer@pengutronix.de; shawnguo@kernel.org; tglx@linutronix.de; > kishon@kernel.org > Subject: Re: [EXT] Re: [PATCH v13 1/2] PCI: endpoint: pci-epf-vntb: change > doorbell register offset calc mathod > > Caution: EXT Email > > On Thu, Nov 24, 2022 at 05:49:32PM +0000, Frank Li wrote: > > > > > > > -----Original Message----- > > > From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> > > > Sent: Thursday, November 24, 2022 3:19 AM > > > To: Frank Li <frank.li@nxp.com> > > > Cc: lpieralisi@kernel.org; Aisheng Dong <aisheng.dong@nxp.com>; > > > bhelgaas@google.com; devicetree@vger.kernel.org; > festevam@gmail.com; > > > imx@lists.linux.dev; jdmason@kudzu.us; kernel@pengutronix.de; > > > kishon@ti.com; krzysztof.kozlowski+dt@linaro.org; kw@linux.com; linux- > > > arm-kernel@lists.infradead.org; dl-linux-imx <linux-imx@nxp.com>; > linux- > > > kernel@vger.kernel.org; linux-pci@vger.kernel.org; > > > lorenzo.pieralisi@arm.com; lznuaa@gmail.com; maz@kernel.org; > > > ntb@lists.linux.dev; Peng Fan <peng.fan@nxp.com>; robh+dt@kernel.org; > > > s.hauer@pengutronix.de; shawnguo@kernel.org; tglx@linutronix.de > > > Subject: [EXT] Re: [PATCH v13 1/2] PCI: endpoint: pci-epf-vntb: change > > > doorbell register offset calc mathod > > > > > > Caution: EXT Email > > > > > > On Thu, Nov 24, 2022 at 12:50:35AM -0500, Frank Li wrote: > > > > In drivers/ntb/hw/epf/ntb_hw_epf.c > > > > ntb_epf_peer_db_set() > > > > { > > > > ... > > > > db_offset = readl(ndev->ctrl_reg + > NTB_EPF_DB_OFFSET(interrupt_num)); > > > > writel(db_data, ndev->db_reg + (db_entry_size * interrupt_num) + > > > > db_offset); > > > > ... > > > > } > > > > > > > > The door register offset's formular is > > > > offset = db_entry_size * interrupt_num + > db_offset[interrupt_number] > > > > > > You did not mention the DB BAR here. Without that, this calculation > doesn't > > > make sense. > > > > Doorbell register offset should means Base on DB BAR. > > How about "The formula of door register offset refer to DB BAR"? > > "Doobell register offset in DB BAR is calculated using:" > > > > > > > > > > > > > > Previous db_entry_size is 4, all db_offset is 0. > > > > > > s/Previous/Previously > > > > > > > irq | offset > > > > -------------- > > > > 0 0 > > > > 1 4 > > > > 2 8 > > > > ... > > > > > > > > Change to db_entry_size is 0 and db_offset is 0, 4, 8, ... > > > > So we can get the same map value between irq and offset. This will be > > > > convenience for hardware doorbell register memory map. > > > > > > > > > > In your irq-imx-mu-msi.c driver, the msi_address is calculated as: > > > > > > ``` > > > u64 addr = msi_data->msiir_addr + 4 * data->hwirq; > > > ``` > > > > > > So the MSI addresses itself are of 4 bytes width. So the offsets will be > > > separated by 8 bytes like, 0, 8, 16,... and this won't match the MSI > addresses > > > as they are 4 bytes apart. > > > > Addr is absolute physical IO address, which increased by 4. But it doesn't > matter. > > It should be okay if range is between 2^32. > > > > > > > > So you want to change the offset to 0, 4, 8,... by zeroing db_entry_size, > > > right? > > > > I want to directly using db_offset[irq] value as offset. It will be simple. > > > > I am not sure why ntb_hw_epf.c use below formular. > > "Db_offset[irq] + irq * db_entry_size" > > > > Db_entry_size = 0 will be simple, all offset will be controlled by db_offset[] > > > > You can save db_offset[] as 0, 4, 8... or 0, 8, 16 as needs. > > > > > > > > > Signed-off-by: Frank Li <Frank.Li@nxp.com> > > > > --- > > > > drivers/pci/endpoint/functions/pci-epf-vntb.c | 4 ++-- > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c > > > b/drivers/pci/endpoint/functions/pci-epf-vntb.c > > > > index 04698e7995a5..0d744975f815 100644 > > > > --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c > > > > +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c > > > > @@ -461,11 +461,11 @@ static int > epf_ntb_config_spad_bar_alloc(struct > > > epf_ntb *ntb) > > > > ctrl->num_mws = ntb->num_mws; > > > > ntb->spad_size = spad_size; > > > > > > > > - ctrl->db_entry_size = sizeof(u32); > > > > + ctrl->db_entry_size = 0; > > > > > > > > for (i = 0; i < ntb->db_count; i++) { > > > > ntb->reg->db_data[i] = 1 + i; > > > > - ntb->reg->db_offset[i] = 0; > > > > + ntb->reg->db_offset[i] = sizeof(u32) * i; > > > > > > If my above understanding is correct, then you could just reassign > > > "db_entry_size" in epf_ntb_epc_msi_init(). > > > > Yes, that's one method. > > I want to use one method to calc db offset for both software polling > > and MSI. So overall logic should be simple. > > > > I think it is better to leave db_entry_size for polling as it is and modify it > for MSI alone. Okay, that means needn't this patch at all. > > Thanks, > Mani > > > Frank Li > > > > > > > > Thanks, > > > Mani > > > > > > > } > > > > > > > > return 0; > > > > -- > > > > 2.34.1 > > > > > > > > > > -- > > > மணிவண்ணன் சதாசிவம் > > -- > மணிவண்ணன் சதாசிவம்
diff --git a/drivers/pci/endpoint/functions/pci-epf-vntb.c b/drivers/pci/endpoint/functions/pci-epf-vntb.c index 04698e7995a5..0d744975f815 100644 --- a/drivers/pci/endpoint/functions/pci-epf-vntb.c +++ b/drivers/pci/endpoint/functions/pci-epf-vntb.c @@ -461,11 +461,11 @@ static int epf_ntb_config_spad_bar_alloc(struct epf_ntb *ntb) ctrl->num_mws = ntb->num_mws; ntb->spad_size = spad_size; - ctrl->db_entry_size = sizeof(u32); + ctrl->db_entry_size = 0; for (i = 0; i < ntb->db_count; i++) { ntb->reg->db_data[i] = 1 + i; - ntb->reg->db_offset[i] = 0; + ntb->reg->db_offset[i] = sizeof(u32) * i; } return 0;