On Sun, Mar 09, 2025 at 11:18:21AM +0800, Hans Zhang wrote:
On 2025/3/9 10:38, Siddharth Vadapalli wrote:
On Sat, Mar 08, 2025 at 09:39:03PM +0800, Hans Zhang wrote:
Add configuration space capability search API using struct cdns_pcie*
pointer.
The offset address of capability or extended capability designed by
different SOC design companies may not be the same. Therefore, a flexible
public API is required to find the offset address of a capability or
extended capability in the configuration space.
Signed-off-by: Hans Zhang <18255117159@xxxxxxx>
---
Changes since v1:
https://lore.kernel.org/linux-pci/20250123070935.1810110-1-18255117159@xxxxxxx
- Added calling the new API in PCI-Cadence ep.c.
- Add a commit message reason for adding the API.
In reply to your v1 patch, you have mentioned the following:
"Our controller driver currently has no plans for upstream and needs to
wait for notification from the boss."
at:
https://lore.kernel.org/linux-pci/fcfd4827-4d9e-4bcd-b1d0-8f9e349a6be7@xxxxxxx/
Since you have posted this patch, does it mean that you will be
upstreaming your driver as well? If not, we still end up in the same
situation as earlier where the Upstream Linux has APIs to support a
Downstream driver.
Bjorn indicated the above already at:
https://lore.kernel.org/linux-pci/20250123170831.GA1226684@bhelgaas/
and you did agree to do so. But this patch has no reference to the
upstream driver series which shall be making use of the APIs in this
patch.
Hi Siddharth,
Bjorn:
If/when you upstream code that needs this interface, include this
patch as part of the series. As Siddharth pointed out, we avoid
merging code that has no upstream users.
Hans: This user is: pcie-cadence-ep.c. I think this is an optimization of
Cadence common code. I think this is an optimization of Cadence common code.
Siddharth, what do you think?
This seems to be an extension of the driver rather than an optimization.
At first glance, though it seems like this patch is enabling code-reuse,
it is actually attempting to walk through the config space registers to
identify a capability. Prior to this patch, those offsets were hard-coded,
saving the trouble of having to walk through the capability pointers to
arrive at the capability.
In my opinion, hard-coded is not universal.
This patch will affect the following functions:
01. cdns_pcie_get_fn_from_vfn()
02. cdns_pcie_ep_write_header()
03. cdns_pcie_ep_set_msi()
04. cdns_pcie_ep_get_msi()
05. cdns_pcie_ep_get_msix()
06. cdns_pcie_ep_set_msix()
07. cdns_pcie_ep_send_msi_irq()
08. cdns_pcie_ep_map_msi_irq()
09. cdns_pcie_ep_send_msix_irq()
10. cdns_pcie_ep_start()
which will now take longer to get to the capability whose offset was
known. I understand that you wish to extend these functions to support
your SoC where the offsets don't match the hard-coded ones.
I will let Bjorn and others share their views on this patch.
Regards,
Siddharth.