Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp558750rwl; Wed, 5 Apr 2023 04:51:56 -0700 (PDT) X-Google-Smtp-Source: AKy350Z4gnQ1iJwu0NqnNJ9zleIAWcbXqnPDhb2W9F+by4VSdB6nDdBjs6HJKic00zznst1luTmd X-Received: by 2002:a17:907:bb81:b0:931:c2f0:9437 with SMTP id xo1-20020a170907bb8100b00931c2f09437mr2597263ejc.8.1680695515915; Wed, 05 Apr 2023 04:51:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680695515; cv=none; d=google.com; s=arc-20160816; b=NmFTTXDxgHrZbeRg0cwfLxCC6+XWqV+eetWqpYzCYy5p8e8d2R9rUJcLZ+bbu+XRu0 3fqSVzohgFMwy++Ukai0Rk1YRAjahe/NJxasHCnDZNgSb8HxPlw0t2mYTbFKNWZ8BH2J KLgrIq2O8dVYFG0MqiVp7pIRtzN7mKxzB/Urj3oc60SMsCwo5m4OvfVoe47Rr+dxWVKi dXfWh+9N3JQmp4g9CrsGynefG68MDzYaEXn5DUwSinJt3iur5V29NosgYDZ6GGGNFSUe Uyao+mj6CHxu4ZNabf6rNic0pFXHTeVeQeEQZ6w89XMt57vdT0tG8PWFbaimhS2+9BL5 3ajw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:feedback-id:dkim-signature:dkim-signature; bh=zQlWYtVpffDPNaN/W+FRH19H3U4y1mSyepBpvfmz0io=; b=gIpsNRP/BtHzaOB9Oi5fxOsSCppoMKgyLihGZG9HCyipEUipLCwJ3Jky4NRWqApyCD ZnSGAhEpKhf0VfUGy+DznEjMVobWvVGyzdgTHNdV8ZeKsSjv0bie37DAJIoSQ/qMkmLu 1u7LFgyxUEdEgWp+wjjV5llPciQ1Fp1QIxHheInxtJI6F+8NX+OG4ZPrdQ3Pn2p4QXIa G1KgUZVV+hXJ9fHVnFcarZ8XKyChqdeNAbGMM5OZAAKICgfqG7+6f0JxE5cqY/FbzzuE 0khNq3mr9OLGaY4rJ6K6kzn/SfxQB6VVb1OEwYnd6os7Bx7scV3/LrllMeTYGfPhuEHC xlpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fastmail.com header.s=fm2 header.b="d/BjLmvK"; dkim=pass header.i=@messagingengine.com header.s=i3db14652.fm2 header.b=frudSLj4; 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=fastmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n3-20020a170906088300b0093189a13aabsi1911132eje.368.2023.04.05.04.51.28; Wed, 05 Apr 2023 04:51:55 -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=@fastmail.com header.s=fm2 header.b="d/BjLmvK"; dkim=pass header.i=@messagingengine.com header.s=i3db14652.fm2 header.b=frudSLj4; 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=fastmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237918AbjDELur (ORCPT + 99 others); Wed, 5 Apr 2023 07:50:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38486 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237867AbjDELuq (ORCPT ); Wed, 5 Apr 2023 07:50:46 -0400 Received: from new4-smtp.messagingengine.com (new4-smtp.messagingengine.com [66.111.4.230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0615619A1; Wed, 5 Apr 2023 04:50:45 -0700 (PDT) Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailnew.nyi.internal (Postfix) with ESMTP id 5A465582376; Wed, 5 Apr 2023 07:50:44 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 05 Apr 2023 07:50:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= cc:cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to; s=fm2; t= 1680695444; x=1680699044; bh=zQlWYtVpffDPNaN/W+FRH19H3U4y1mSyepB pvfmz0io=; b=d/BjLmvKaKa4k49dQJ7knYYlWBme4oeyYCFvJiyX8FkVQJSfw1x UtB2sQGTIuDPrFhl6FsPMMHJ3a4XgWYuXkBKz3F2qCjYhdkFTFAIkezWsL7uaod/ 0dWrJEc0yYslj37jUTgYwJMH4Il7hrybnQGCy1RvmWDLPk6miqzcvnn/QPRYdTRk x40AFz85DPwrL6WbuUEgzqihP1x/JJdTrSMpWofjZ+HKBafHgGY/hbLDpM391+9I 86OFnuP8R27y3+3hvMbmZODhXbq2iQHasqUXnF7Un5xPNMC+48fNxVHhKtuCy/J1 Hm6uvuiuFQMLk2zKQiFhNHgZdfFNFMfD6qw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=i3db14652.fm2; t=1680695444; x=1680699044; bh=zQlWYtVpffDPNaN/W+FRH19H3U4y1mSy epBpvfmz0io=; b=frudSLj4wAS4pmeVPPIydjO4UAjlavwktxIjHlu7ZPBVQlBU NV0VQOhLX4Jzl/Odpgg7nHDl4O9WplZErF+iZYpQVaJhJZIsKZoKxLB36ZdlUJqo IxFq7zBwe3oVOM0azaIcLKuH6gM6mW0gqsq9n4VdgMn7xbtWnfhJ5CwPEvjOiuLh rQBhcm/54xa+eIkFzRn38GA6Ira6KULIBvWKgIqsuIzgrqHgDel/Wtj56Js/Ovjt w6LO3sMTCTQZUlxrUFhQTPWTO4F05jgS1mmoBB4nLt5jpjACaTqy+ZVxhuaPg/ox VEmEMMyb1EIRkszHQbr+09Zn2XXk73YnxTXL0w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrvdejuddggeeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfuffvvehfhfgjtgfgsehtjeertddtfeejnecuhfhrohhmpeffrghm ihgvnhcunfgvucfoohgrlhcuoegulhgvmhhorghlsehfrghsthhmrghilhdrtghomheqne cuggftrfgrthhtvghrnhepteefiefhieetgfevhfegfeehffetteduieetudfgleetvdff udelveejfefhfeejnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh hfrhhomhepughlvghmohgrlhesfhgrshhtmhgrihhlrdgtohhm X-ME-Proxy: Feedback-ID: i3db14652:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 5 Apr 2023 07:50:38 -0400 (EDT) Message-ID: Date: Wed, 5 Apr 2023 20:50:37 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [PATCH v3 10/11] PCI: rockchip: Don't advertise MSI-X in PCIe capabilities Content-Language: en-US To: Rick Wertenbroek , alberto.dassatti@heig-vd.ch Cc: damien.lemoal@opensource.wdc.com, xxm@rock-chips.com, Shawn Lin , Lorenzo Pieralisi , =?UTF-8?Q?Krzysztof_Wilczy=c5=84ski?= , Rob Herring , Bjorn Helgaas , Krzysztof Kozlowski , Heiko Stuebner , Johan Jonker , Brian Norris , Caleb Connolly , Corentin Labbe , Arnaud Ferraris , Lin Huang , Judy Hsiao , Hugh Cole-Baker , linux-pci@vger.kernel.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20230404082426.3880812-1-rick.wertenbroek@gmail.com> <20230404082426.3880812-11-rick.wertenbroek@gmail.com> From: Damien Le Moal In-Reply-To: <20230404082426.3880812-11-rick.wertenbroek@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A, RCVD_IN_DNSWL_LOW,SPF_HELO_PASS,SPF_PASS autolearn=unavailable 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 On 4/4/23 17:24, Rick Wertenbroek wrote: > The RK3399 PCIe endpoint controller cannot generate MSI-X IRQs. > This is documented in the RK3399 technical reference manual (TRM) > section 17.5.9 "Interrupt Support". > > MSI-X capability should therefore not be advertised. Remove the > MSI-X capability by editing the capability linked-list. The > previous entry is the MSI capability, therefore get the next > entry from the MSI-X capability entry and set it as next entry > for the MSI capability. This in effect removes MSI-X from the list. > > Linked list before : MSI cap -> MSI-X cap -> PCIe Device cap -> ... > Linked list now : MSI cap -> PCIe Device cap -> ... > > Signed-off-by: Rick Wertenbroek > --- > drivers/pci/controller/pcie-rockchip-ep.c | 15 +++++++++++++++ > drivers/pci/controller/pcie-rockchip.h | 5 +++++ > 2 files changed, 20 insertions(+) > > diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c > index 924b95bd736c..20c768287870 100644 > --- a/drivers/pci/controller/pcie-rockchip-ep.c > +++ b/drivers/pci/controller/pcie-rockchip-ep.c > @@ -510,6 +510,7 @@ static int rockchip_pcie_ep_probe(struct platform_device *pdev) > size_t max_regions; > struct pci_epc_mem_window *windows = NULL; > int err, i; > + u32 cfg_msi, cfg_msix_cp; > > ep = devm_kzalloc(dev, sizeof(*ep), GFP_KERNEL); > if (!ep) > @@ -584,6 +585,20 @@ static int rockchip_pcie_ep_probe(struct platform_device *pdev) > > ep->irq_pci_addr = ROCKCHIP_PCIE_EP_DUMMY_IRQ_ADDR; > Nit: Adding a comment here about what this is doing and why would be nice. E.g. something like: /* * MSI-X is not supported but the controller still advertises by default * the MSI-X capability, which can lead to the RC-side attempting to use * MSI-X. Avoid this by skipping the MSI-X capability entry in the * chain of PCIe capabilities: get the next pointer from the * MSI-X entry and set that in the MSI capability entry. This way * the MSI-X entry is skipped (left out of the linked-list). */ > + cfg_msi = rockchip_pcie_read(rockchip, PCIE_EP_CONFIG_BASE + > + ROCKCHIP_PCIE_EP_MSI_CTRL_REG); > + > + cfg_msi &= ~ROCKCHIP_PCIE_EP_MSI_CP1_MASK; > + > + cfg_msix_cp = rockchip_pcie_read(rockchip, PCIE_EP_CONFIG_BASE + > + ROCKCHIP_PCIE_EP_MSIX_CAP_REG) & > + ROCKCHIP_PCIE_EP_MSIX_CAP_CP_MASK; > + > + cfg_msi |= cfg_msix_cp; > + > + rockchip_pcie_write(rockchip, cfg_msi, > + PCIE_EP_CONFIG_BASE + ROCKCHIP_PCIE_EP_MSI_CTRL_REG); > + > rockchip_pcie_write(rockchip, PCIE_CLIENT_CONF_ENABLE, PCIE_CLIENT_CONFIG); > > return 0; > diff --git a/drivers/pci/controller/pcie-rockchip.h b/drivers/pci/controller/pcie-rockchip.h > index 1558eae298ae..a21070ea7166 100644 > --- a/drivers/pci/controller/pcie-rockchip.h > +++ b/drivers/pci/controller/pcie-rockchip.h > @@ -226,6 +226,8 @@ > #define ROCKCHIP_PCIE_EP_CMD_STATUS 0x4 > #define ROCKCHIP_PCIE_EP_CMD_STATUS_IS BIT(19) > #define ROCKCHIP_PCIE_EP_MSI_CTRL_REG 0x90 > +#define ROCKCHIP_PCIE_EP_MSI_CP1_OFFSET 8 > +#define ROCKCHIP_PCIE_EP_MSI_CP1_MASK GENMASK(15, 8) > #define ROCKCHIP_PCIE_EP_MSI_FLAGS_OFFSET 16 > #define ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_OFFSET 17 > #define ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_MASK GENMASK(19, 17) > @@ -233,6 +235,9 @@ > #define ROCKCHIP_PCIE_EP_MSI_CTRL_MME_MASK GENMASK(22, 20) > #define ROCKCHIP_PCIE_EP_MSI_CTRL_ME BIT(16) > #define ROCKCHIP_PCIE_EP_MSI_CTRL_MASK_MSI_CAP BIT(24) > +#define ROCKCHIP_PCIE_EP_MSIX_CAP_REG 0xb0 > +#define ROCKCHIP_PCIE_EP_MSIX_CAP_CP_OFFSET 8 > +#define ROCKCHIP_PCIE_EP_MSIX_CAP_CP_MASK GENMASK(15, 8) > #define ROCKCHIP_PCIE_EP_DUMMY_IRQ_ADDR 0x1 > #define ROCKCHIP_PCIE_EP_PCI_LEGACY_IRQ_ADDR 0x3 > #define ROCKCHIP_PCIE_EP_FUNC_BASE(fn) \