From: "hans.zhang" <hans.zhang@cixtech.com>
To: "manivannan.sadhasivam@linaro.org"
<manivannan.sadhasivam@linaro.org>,
Peter Chen <peter.chen@cixtech.com>
Cc: Siddharth Vadapalli <s-vadapalli@ti.com>,
"lpieralisi@kernel.org" <lpieralisi@kernel.org>,
"kw@linux.com" <kw@linux.com>,
"robh@kernel.org" <robh@kernel.org>,
"bhelgaas@google.com" <bhelgaas@google.com>,
"vigneshr@ti.com" <vigneshr@ti.com>,
"kishon@kernel.org" <kishon@kernel.org>,
"cassel@kernel.org" <cassel@kernel.org>,
"wojciech.jasko-EXT@continental-corporation.com"
<wojciech.jasko-EXT@continental-corporation.com>,
"thomas.richard@bootlin.com" <thomas.richard@bootlin.com>,
"bwawrzyn@cisco.com" <bwawrzyn@cisco.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>, "srk@ti.com" <srk@ti.com>
Subject: Re: [PATCH 0/4] Loadable Module support for PCIe Cadence and J721E
Date: Thu, 20 Mar 2025 10:14:02 +0800 [thread overview]
Message-ID: <a8966792-fa0e-4e8e-aceb-427819ae4ef5@cixtech.com> (raw)
In-Reply-To: <20250319095511.hf3y2c6vbbnm3ien@thinkpad>
On 2025/3/19 17:55, manivannan.sadhasivam@linaro.org wrote:
> EXTERNAL EMAIL
>
> On Wed, Mar 19, 2025 at 05:31:01PM +0800, Peter Chen wrote:
>> On 25-03-19 14:25:34, Siddharth Vadapalli wrote:
>>>>>
>>>>> Hello,
>>>>>
>>>>> This series enables support to build the PCIe Cadence Controller drivers
>>>>> and the PCI J721E Application/Wrapper/Glue driver as Loadable Kernel
>>>>> Modules. The motivation for this series is that PCIe is not a necessity
>>>>> for booting the SoC, due to which it doesn't have to be a built-in
>>>>> module. Additionally, the defconfig doesn't enable the PCIe Cadence
>>>>> Controller drivers and the PCI J721E driver, due to which PCIe is not
>>>>> supported by default. Enabling the configs as of now (i.e. without this
>>>>> series) will result in built-in drivers i.e. a bloated Linux Image for
>>>>> everyone who doesn't have the PCIe Controller.
>>>>
>>>> If the user doesn't enable PCIe controller device through DTS/ACPI,
>>>> that's doesn't matter.
>>>
>>> The Linux Image for arm64 systems built using:
>>> arch/arm64/configs/defconfig
>>> will not have support for the Cadence PCIe Controller and the PCIe J721e
>>> driver, because these configs aren't enabled.
>>>
>>>>
>>>>> @@ -209,6 +209,12 @@ CONFIG_NFC=m
>>>>> CONFIG_NFC_NCI=m
>>>>> CONFIG_NFC_S3FWRN5_I2C=m
>>>>> CONFIG_PCI=y
>>>>> +CONFIG_PCI_J721E=m
>>>>> +CONFIG_PCI_J721E_HOST=m
>>>>> +CONFIG_PCI_J721E_EP=m
>>>>> +CONFIG_PCIE_CADENCE=m
>>>>> +CONFIG_PCIE_CADENCE_HOST=m
>>>>> +CONFIG_PCIE_CADENCE_EP=m
>>>>
>>>> The common Cadence configuration will be select if the glue layer's
>>>> configuration is select according to Kconfig.
>>>>
>>>> Please do not set common configuration as module, some user may need
>>>> it as build-in like dw's. Considering the situation, the rootfs is at
>>>> NVMe.
>>>
>>> The common configuration at the moment is "DISABLED" i.e. no support for
>>> the Cadence Controller at all. Which "user" are you referring to? This
>>> series was introduced since having the drivers built-in was pushed back at:
>>
>> We are using Cadence controller, and prepare upstream radxa-o6 board
>> whose rootfs is at PCIe NVMe.
>>
>
> It doesn't matter. Only criteria AFAIK to build the driver as built-in in
> defconfig is that it should be a depedency for console. For some time, storage
> was also a dependency, but for sure PCIe is not.
>
> Moreover, CONFIG_BLK_DEV_NVME is built as a module in ARM64 defconfig. So it
> doesn't matter if you build PCIe controller driver as a built-in or not. You
> need to load the NVMe driver somehow.
>
> So please use initramfs.
>
>> You could build driver as module for TI glue layer, but don't force
>> other vendors using module as well, see dwc as an example please.
>>
>
> DWC is a bad example here. Only reason the DWC drivers are not loadable is due
> to the in-built MSI controller implementation as irqchip. People tend to build
> the irqchip controllers as always built-in for some known issues. Even then some
> driver developers prefer to built them as loadable module but suppress unbind to
> avoid rmmoding the module.
Hi Mani,
I think the MSI RTL module provided by Synopsys PCIe controller IP is
not a standard operation. The reason for this MSI module is probably to
be used by some cpus that do not have ITS(LPI interrupt) designed. Or
RISC-V SOC, etc. MSI is defined as an MSI/MSIX interrupt that starts
with a direct write memory access.
There are also SOC vendors that do not use the built-in MSI RTL module.
Instead, MSI/MSIX interrupts are transmitted directly to the GIC's ITS
module via the GIC V3/V4 interface. For example, RK3588, they do not use
the PCIe controller built-in MSI module. Some Qualcomm platforms also
modify the PCIe controller's built-in MSI modules to connect each of
them to 32 SPI interrupts to the GIC. I was under the impression that
the SDM845 was designed that way. The only explanation is that SPI
interrupts are faster than LPI interrupts without having to look up some
tables.
So the dwc driver can also compile to ko?
Best regards,
Hans
next prev parent reply other threads:[~2025-03-20 2:14 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-07 10:31 [PATCH 0/4] Loadable Module support for PCIe Cadence and J721E Siddharth Vadapalli
2025-03-07 10:31 ` [PATCH 1/4] PCI: cadence: Add support to build pcie-cadence library as a kernel module Siddharth Vadapalli
2025-03-13 17:44 ` Manivannan Sadhasivam
2025-03-14 6:54 ` Siddharth Vadapalli
2025-03-18 7:49 ` Manivannan Sadhasivam
2025-03-18 7:55 ` Siddharth Vadapalli
2025-03-07 10:31 ` [PATCH 2/4] PCI: cadence-host: Introduce cdns_pcie_host_disable helper for cleanup Siddharth Vadapalli
2025-03-18 7:55 ` Manivannan Sadhasivam
2025-03-07 10:31 ` [PATCH 3/4] PCI: cadence-ep: Introduce cdns_pcie_ep_disable " Siddharth Vadapalli
2025-03-18 8:03 ` Manivannan Sadhasivam
2025-03-18 8:12 ` Siddharth Vadapalli
2025-03-19 10:32 ` Manivannan Sadhasivam
2025-03-19 10:37 ` Siddharth Vadapalli
2025-04-01 11:28 ` Niklas Cassel
2025-04-09 16:56 ` Manivannan Sadhasivam
2025-03-07 10:31 ` [PATCH 4/4] PCI: j721e: Add support to build as a loadable module Siddharth Vadapalli
2025-03-14 9:03 ` Thomas Richard
2025-03-14 9:07 ` Siddharth Vadapalli
2025-03-19 6:09 ` [PATCH 0/4] Loadable Module support for PCIe Cadence and J721E Peter Chen
2025-03-19 6:25 ` Siddharth Vadapalli
2025-03-19 9:31 ` Peter Chen
2025-03-19 9:55 ` manivannan.sadhasivam
2025-03-20 2:14 ` hans.zhang [this message]
2025-03-20 2:26 ` hans.zhang
2025-03-25 15:26 ` manivannan.sadhasivam
2025-03-25 16:03 ` Hans Zhang
2025-03-25 16:36 ` manivannan.sadhasivam
2025-03-26 1:56 ` Hans Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a8966792-fa0e-4e8e-aceb-427819ae4ef5@cixtech.com \
--to=hans.zhang@cixtech.com \
--cc=bhelgaas@google.com \
--cc=bwawrzyn@cisco.com \
--cc=cassel@kernel.org \
--cc=kishon@kernel.org \
--cc=kw@linux.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=peter.chen@cixtech.com \
--cc=robh@kernel.org \
--cc=s-vadapalli@ti.com \
--cc=srk@ti.com \
--cc=thomas.richard@bootlin.com \
--cc=vigneshr@ti.com \
--cc=wojciech.jasko-EXT@continental-corporation.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox