RE: [PATCH v10 04/10] PCI: cadence: Add support for High Perf Architecture (HPA) controller
From: Manikandan Karunakaran Pillai
Date: Sun Nov 02 2025 - 11:45:59 EST
>-----Original Message-----
>From: Manivannan Sadhasivam <mani@xxxxxxxxxx>
>Sent: Sunday, November 2, 2025 8:38 PM
>To: Manikandan Karunakaran Pillai <mpillai@xxxxxxxxxxx>
>Cc: hans.zhang@xxxxxxxxxxx; bhelgaas@xxxxxxxxxx; helgaas@xxxxxxxxxx;
>lpieralisi@xxxxxxxxxx; kw@xxxxxxxxx; robh@xxxxxxxxxx;
>kwilczynski@xxxxxxxxxx; krzk+dt@xxxxxxxxxx; conor+dt@xxxxxxxxxx;
>fugang.duan@xxxxxxxxxxx; guoyin.chen@xxxxxxxxxxx;
>peter.chen@xxxxxxxxxxx; cix-kernel-upstream@xxxxxxxxxxx; linux-
>pci@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
>Subject: Re: [PATCH v10 04/10] PCI: cadence: Add support for High Perf
>Architecture (HPA) controller
>
>EXTERNAL MAIL
>
>
>On Sun, Nov 02, 2025 at 05:51:05AM +0000, Manikandan Karunakaran Pillai
>wrote:
>> Hi Mani,
>>
>> Pls find my comments below.
>>
>> >> >> + value |=
>> >> >HPA_LM_RC_BAR_CFG_CTRL_PREF_MEM_64BITS(bar);
>> >> >> + } else {
>> >> >> + value |=
>HPA_LM_RC_BAR_CFG_CTRL_MEM_32BITS(bar);
>> >> >> + if ((flags & IORESOURCE_PREFETCH))
>> >> >> + value |=
>> >> >HPA_LM_RC_BAR_CFG_CTRL_PREF_MEM_32BITS(bar);
>> >> >> + }
>> >> >> +
>> >> >> + value |= HPA_LM_RC_BAR_CFG_APERTURE(bar, aperture);
>> >> >> + cdns_pcie_hpa_writel(pcie, REG_BANK_IP_CFG_CTRL_REG,
>> >> >CDNS_PCIE_HPA_LM_RC_BAR_CFG, value);
>> >> >> +
>> >> >> + return 0;
>> >> >> +}
>> >> >> +
>> >> >> +static int cdns_pcie_hpa_host_bar_config(struct cdns_pcie_rc *rc,
>> >> >> + struct resource_entry *entry)
>> >> >
>> >> >This and other functions are almost same as in 'pcie-cadence-host'. Why
>> >don't
>> >> >you reuse them in a common library?
>> >>
>> >> The function cdns_pcie_hpa_host_bar_config() calls functions
>> >cdns_pcie_hpa_host_bar_ib_config()
>> >> which is not common. All functions that are common between the two
>> >architecture are moved to the
>> >> common library file based on earlier comments.
>> >>
>> >
>> >This is not a good reason to duplicate the whole function. You could just
>make
>> >the common function accept the callback ib_config() and pass either
>> >cdns_pcie_host_bar_ib_config() or cdns_pcie_hpa_host_bar_ib_config().
>> >
>> >This pattern could be done for other functions as well. Please audit all of
>them
>> >and move them to common library. Currently, I could see a lot of
>duplications
>> >that could be avoided.
>>
>> The very first patch for this feature included an ops struct which was
>registered (very similar to a callback). Are are asking me to again implement
>the same design which was earlier rejected ?
>>
>
>You didn't provide any link to the discussion, so how can I decide without
>looking into it?
https://www.spinics.net/lists//devicetree/msg814276.html
Patch v5 - 5/5 has the comments on callback.
>
>> Secondly except the names of the functions, the registers and their offset
>written and the sequence also changes for the implementations.
>>
>
>I don't think so. From a quick look, at least cdns_pcie_hpa_host_bar_config(),
>cdns_pcie_hpa_host_map_dma_ranges() are mostly similar. You can keep the
>functions having different register configurations, but should try to move
>others.
>
>- Mani
>
>--
>மணிவண்ணன் சதாசிவம்