mbox series

[GIT,PULL,1/2] arm64: TI K3 SoC configs changes for v5.17

Message ID 20211217172806.10023-1-vigneshr@ti.com
State New
Headers show
Series [GIT,PULL,1/2] arm64: TI K3 SoC configs changes for v5.17 | expand

Pull-request

https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git tags/ti-k3-config-for-v5.17

Message

Vignesh Raghavendra Dec. 17, 2021, 5:28 p.m. UTC
The following changes since commit fa55b7dcdc43c1aa1ba12bca9d2dd4318c2a0dbf:

  Linux 5.16-rc1 (2021-11-14 13:56:52 -0800)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git tags/ti-k3-config-for-v5.17

for you to fetch changes up to 8d73aedca28cbed8030067b0d9423a0694139b9c:

  arm64: defconfig: Enable USB, PCIe and SERDES drivers for TI K3 SoC (2021-12-14 16:22:25 +0530)

----------------------------------------------------------------
ARM64 defconfig changes for TI K3 platforms for v5.17 merge window:

- Increase No. of 8250 UARTs supported in System to 16 for J721s2
- Enable USB, PCIe and SERDES drivers on TI K3 SoC

----------------------------------------------------------------
Aswath Govindraju (1):
      arm64: defconfig: Increase the maximum number of 8250/16550 serial ports

Vignesh Raghavendra (1):
      arm64: defconfig: Enable USB, PCIe and SERDES drivers for TI K3 SoC

 arch/arm64/configs/defconfig | 13 ++++++++++
 1 file changed, 13 insertions(+)

Comments

Arnd Bergmann Dec. 20, 2021, 3:27 p.m. UTC | #1
On Fri, Dec 17, 2021 at 6:28 PM Vignesh Raghavendra <vigneshr@ti.com> wrote:
>
> The following changes since commit fa55b7dcdc43c1aa1ba12bca9d2dd4318c2a0dbf:
>
>   Linux 5.16-rc1 (2021-11-14 13:56:52 -0800)
>
> are available in the Git repository at:
>
>   https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git tags/ti-k3-config-for-v5.17
>
> for you to fetch changes up to 8d73aedca28cbed8030067b0d9423a0694139b9c:
>
>   arm64: defconfig: Enable USB, PCIe and SERDES drivers for TI K3 SoC (2021-12-14 16:22:25 +0530)
>
> ----------------------------------------------------------------
> ARM64 defconfig changes for TI K3 platforms for v5.17 merge window:
>
> - Increase No. of 8250 UARTs supported in System to 16 for J721s2

This looks a little excessive, I'm holding off on this pull request
for now, as I'm
not sure exactly what the downsides are.

I see that your dtsi file has

+       aliases {
+               serial0 = &wkup_uart0;
+               serial1 = &mcu_uart0;
+               serial2 = &main_uart0;
+               serial3 = &main_uart1;
+               serial4 = &main_uart2;
+               serial5 = &main_uart3;
+               serial6 = &main_uart4;
+               serial7 = &main_uart5;
+               serial8 = &main_uart6;
+               serial9 = &main_uart7;
+               serial10 = &main_uart8;
+               serial11 = &main_uart9;
+               mmc0 = &main_sdhci0;
+               mmc1 = &main_sdhci1;
+               can0 = &main_mcan16;
+               can1 = &mcu_mcan0;
+               can2 = &mcu_mcan1;
+               can3 = &main_mcan3;
+               can4 = &main_mcan5;
+       };

which I think is the underlying problem here. The aliases are really meant to
be board specific, and I would assume that none of the boards actually
uses all the
uart and can bus devices, usually this isn't even possible due to pinctrl
constraints, so please follow up by moving these to the .dts files listing only
the actually used devices instead of working around it in the defconfig.

> - Enable USB, PCIe and SERDES drivers on TI K3 SoC

I see the PCIe driver is built-in here. Is that necessary for booting?
If not, please
make it a loadable module.

       Arnd
Vignesh Raghavendra Dec. 20, 2021, 5:40 p.m. UTC | #2
Hi Arnd,

On 20/12/21 8:57 pm, Arnd Bergmann wrote:
> On Fri, Dec 17, 2021 at 6:28 PM Vignesh Raghavendra <vigneshr@ti.com> wrote:
>>
>> The following changes since commit fa55b7dcdc43c1aa1ba12bca9d2dd4318c2a0dbf:
>>
>>   Linux 5.16-rc1 (2021-11-14 13:56:52 -0800)
>>
>> are available in the Git repository at:
>>
>>   https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git tags/ti-k3-config-for-v5.17
>>
>> for you to fetch changes up to 8d73aedca28cbed8030067b0d9423a0694139b9c:
>>
>>   arm64: defconfig: Enable USB, PCIe and SERDES drivers for TI K3 SoC (2021-12-14 16:22:25 +0530)
>>
>> ----------------------------------------------------------------
>> ARM64 defconfig changes for TI K3 platforms for v5.17 merge window:
>>
>> - Increase No. of 8250 UARTs supported in System to 16 for J721s2
> 
> This looks a little excessive, I'm holding off on this pull request
> for now, as I'm
> not sure exactly what the downsides are.
> 
> I see that your dtsi file has
> 
> +       aliases {
> +               serial0 = &wkup_uart0;
> +               serial1 = &mcu_uart0;
> +               serial2 = &main_uart0;
> +               serial3 = &main_uart1;
> +               serial4 = &main_uart2;
> +               serial5 = &main_uart3;
> +               serial6 = &main_uart4;
> +               serial7 = &main_uart5;
> +               serial8 = &main_uart6;
> +               serial9 = &main_uart7;
> +               serial10 = &main_uart8;
> +               serial11 = &main_uart9;
> +               mmc0 = &main_sdhci0;
> +               mmc1 = &main_sdhci1;
> +               can0 = &main_mcan16;
> +               can1 = &mcu_mcan0;
> +               can2 = &mcu_mcan1;
> +               can3 = &main_mcan3;
> +               can4 = &main_mcan5;
> +       };
> 
> which I think is the underlying problem here. The aliases are really meant to
> be board specific, and I would assume that none of the boards actually
> uses all the
> uart and can bus devices, usually this isn't even possible due to pinctrl
> constraints, so please follow up by moving these to the .dts files listing only
> the actually used devices instead of working around it in the defconfig.

Yes indeed, aliases can be trimmed and moved to board dts. With that,
defconfig patch in question can be dropped. Thanks for the hint.

> 
>> - Enable USB, PCIe and SERDES drivers on TI K3 SoC
> 
> I see the PCIe driver is built-in here. Is that necessary for booting?
> If not, please
> make it a loadable module.
> 

Currently its not possible to build PCIE_CADENCE_PLAT_HOST/EP drivers as
modules (symbols are bool only).
PCIe is not necessary for basic boot either. So, I can drop these
configs until these drivers are build able as modules, if you prefer.

Will respin the PRs with comments addressed. Sorry for the trouble.

Regards
Vignesh
Tom Rini Dec. 21, 2021, 3:32 p.m. UTC | #3
On Mon, Dec 20, 2021 at 11:10:25PM +0530, Vignesh Raghavendra wrote:
> Hi Arnd,
> 
> On 20/12/21 8:57 pm, Arnd Bergmann wrote:
> > On Fri, Dec 17, 2021 at 6:28 PM Vignesh Raghavendra <vigneshr@ti.com> wrote:
> >>
> >> The following changes since commit fa55b7dcdc43c1aa1ba12bca9d2dd4318c2a0dbf:
> >>
> >>   Linux 5.16-rc1 (2021-11-14 13:56:52 -0800)
> >>
> >> are available in the Git repository at:
> >>
> >>   https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git tags/ti-k3-config-for-v5.17
> >>
> >> for you to fetch changes up to 8d73aedca28cbed8030067b0d9423a0694139b9c:
> >>
> >>   arm64: defconfig: Enable USB, PCIe and SERDES drivers for TI K3 SoC (2021-12-14 16:22:25 +0530)
> >>
> >> ----------------------------------------------------------------
> >> ARM64 defconfig changes for TI K3 platforms for v5.17 merge window:
> >>
> >> - Increase No. of 8250 UARTs supported in System to 16 for J721s2
> > 
> > This looks a little excessive, I'm holding off on this pull request
> > for now, as I'm
> > not sure exactly what the downsides are.
> > 
> > I see that your dtsi file has
> > 
> > +       aliases {
> > +               serial0 = &wkup_uart0;
> > +               serial1 = &mcu_uart0;
> > +               serial2 = &main_uart0;
> > +               serial3 = &main_uart1;
> > +               serial4 = &main_uart2;
> > +               serial5 = &main_uart3;
> > +               serial6 = &main_uart4;
> > +               serial7 = &main_uart5;
> > +               serial8 = &main_uart6;
> > +               serial9 = &main_uart7;
> > +               serial10 = &main_uart8;
> > +               serial11 = &main_uart9;
> > +               mmc0 = &main_sdhci0;
> > +               mmc1 = &main_sdhci1;
> > +               can0 = &main_mcan16;
> > +               can1 = &mcu_mcan0;
> > +               can2 = &mcu_mcan1;
> > +               can3 = &main_mcan3;
> > +               can4 = &main_mcan5;
> > +       };
> > 
> > which I think is the underlying problem here. The aliases are really meant to
> > be board specific, and I would assume that none of the boards actually
> > uses all the
> > uart and can bus devices, usually this isn't even possible due to pinctrl
> > constraints, so please follow up by moving these to the .dts files listing only
> > the actually used devices instead of working around it in the defconfig.
> 
> Yes indeed, aliases can be trimmed and moved to board dts. With that,
> defconfig patch in question can be dropped. Thanks for the hint.
> 
> > 
> >> - Enable USB, PCIe and SERDES drivers on TI K3 SoC
> > 
> > I see the PCIe driver is built-in here. Is that necessary for booting?
> > If not, please
> > make it a loadable module.
> > 
> 
> Currently its not possible to build PCIE_CADENCE_PLAT_HOST/EP drivers as
> modules (symbols are bool only).
> PCIe is not necessary for basic boot either. So, I can drop these
> configs until these drivers are build able as modules, if you prefer.

Is PCIe required for basic boot for the other platforms in the defconfig
which do enable it in the defconfig today?  It is required for non-basic
boot (whatever storage one puts in a PCIe slot).  If someone is going to
be fixing the PCIe driver to be able to be modular, that's fine too but
I ran in to this trying to see what works out of the box in the
defconfig, on this platform and hit both of these rather large
omissions.
Arnd Bergmann Dec. 21, 2021, 3:55 p.m. UTC | #4
On Tue, Dec 21, 2021 at 4:32 PM Tom Rini <trini@konsulko.com> wrote:
> On Mon, Dec 20, 2021 at 11:10:25PM +0530, Vignesh Raghavendra wrote:
> >
> > Currently its not possible to build PCIE_CADENCE_PLAT_HOST/EP drivers as
> > modules (symbols are bool only).
> > PCIe is not necessary for basic boot either. So, I can drop these
> > configs until these drivers are build able as modules, if you prefer.
>
> Is PCIe required for basic boot for the other platforms in the defconfig
> which do enable it in the defconfig today?  It is required for non-basic
> boot (whatever storage one puts in a PCIe slot).  If someone is going to
> be fixing the PCIe driver to be able to be modular, that's fine too but
> I ran in to this trying to see what works out of the box in the
> defconfig, on this platform and hit both of these rather large
> omissions.

If PCI is often used for storage, then that's ok. There are a number of
other platforms where PCIe is only used for wireless networking or
other secondary devices, but they are still built-in because they got
added before it became possible for PCIe host drivers to be loadable
modules. I would like to eventually go through and turn those into
loadable modules, but for the moment it would be good to only add
built-in drivers where this is actually useful.

       Arnd
Tom Rini Dec. 21, 2021, 4:09 p.m. UTC | #5
On Tue, Dec 21, 2021 at 04:55:48PM +0100, Arnd Bergmann wrote:
> On Tue, Dec 21, 2021 at 4:32 PM Tom Rini <trini@konsulko.com> wrote:
> > On Mon, Dec 20, 2021 at 11:10:25PM +0530, Vignesh Raghavendra wrote:
> > >
> > > Currently its not possible to build PCIE_CADENCE_PLAT_HOST/EP drivers as
> > > modules (symbols are bool only).
> > > PCIe is not necessary for basic boot either. So, I can drop these
> > > configs until these drivers are build able as modules, if you prefer.
> >
> > Is PCIe required for basic boot for the other platforms in the defconfig
> > which do enable it in the defconfig today?  It is required for non-basic
> > boot (whatever storage one puts in a PCIe slot).  If someone is going to
> > be fixing the PCIe driver to be able to be modular, that's fine too but
> > I ran in to this trying to see what works out of the box in the
> > defconfig, on this platform and hit both of these rather large
> > omissions.
> 
> If PCI is often used for storage, then that's ok. There are a number of
> other platforms where PCIe is only used for wireless networking or
> other secondary devices, but they are still built-in because they got
> added before it became possible for PCIe host drivers to be loadable
> modules. I would like to eventually go through and turn those into
> loadable modules, but for the moment it would be good to only add
> built-in drivers where this is actually useful.

That's good to know.  My question tho is, what's actually useful?  The
EVM is 2 PCIe x8 type slots.  I honestly don't know if that means "super
useful, arbitrary devices are expected to work" or "not useful,
arbitrary devices are not expected to work".  Is the functional
definition of what's in the defconfig vs left up to users,
distributions, etc, to find and enabled defined, or at least well known
/ explained somewhere?  Where I'm coming from on this is that these
platforms practically are, and can be SystemReady IR certified.  So
what's needed here to ensure there's a good experience distros to enable
what needs enabling for full functionality?  What we hit was "lets throw
some stuff at this board to test it out and.. wait, PCIe isn't enabled
at all? USB host isn't enabled at all?"

And all that said, if someone is going to be fixing the PCIe drivers to
be enabled as modules soon, and just getting it handled that way in the
next appropriately timed merge window, OK, fine, good enough.
Vignesh Raghavendra Dec. 22, 2021, 7:26 a.m. UTC | #6
On 21/12/21 9:39 pm, Tom Rini wrote:
> On Tue, Dec 21, 2021 at 04:55:48PM +0100, Arnd Bergmann wrote:
>> On Tue, Dec 21, 2021 at 4:32 PM Tom Rini <trini@konsulko.com> wrote:
>>> On Mon, Dec 20, 2021 at 11:10:25PM +0530, Vignesh Raghavendra wrote:
>>>>
>>>> Currently its not possible to build PCIE_CADENCE_PLAT_HOST/EP drivers as
>>>> modules (symbols are bool only).
>>>> PCIe is not necessary for basic boot either. So, I can drop these
>>>> configs until these drivers are build able as modules, if you prefer.
>>>
>>> Is PCIe required for basic boot for the other platforms in the defconfig
>>> which do enable it in the defconfig today?  It is required for non-basic
>>> boot (whatever storage one puts in a PCIe slot).  If someone is going to
>>> be fixing the PCIe driver to be able to be modular, that's fine too but
>>> I ran in to this trying to see what works out of the box in the
>>> defconfig, on this platform and hit both of these rather large
>>> omissions.
>>
>> If PCI is often used for storage, then that's ok. There are a number of
>> other platforms where PCIe is only used for wireless networking or
>> other secondary devices, but they are still built-in because they got
>> added before it became possible for PCIe host drivers to be loadable
>> modules. I would like to eventually go through and turn those into
>> loadable modules, but for the moment it would be good to only add
>> built-in drivers where this is actually useful.
> 
> That's good to know.  My question tho is, what's actually useful?  The
> EVM is 2 PCIe x8 type slots.  I honestly don't know if that means "super
> useful, arbitrary devices are expected to work" or "not useful,
> arbitrary devices are not expected to work".  Is the functional
> definition of what's in the defconfig vs left up to users,
> distributions, etc, to find and enabled defined, or at least well known
> / explained somewhere?  Where I'm coming from on this is that these
> platforms practically are, and can be SystemReady IR certified.  So
> what's needed here to ensure there's a good experience distros to enable
> what needs enabling for full functionality?  What we hit was "lets throw
> some stuff at this board to test it out and.. wait, PCIe isn't enabled
> at all? USB host isn't enabled at all?"
> 
> And all that said, if someone is going to be fixing the PCIe drivers to
> be enabled as modules soon, and just getting it handled that way in the
> next appropriately timed merge window, OK, fine, good enough.
> 

Looks like its not a big effort to convert J7 PCIe driver to build as
module and can be done for v5.18 Merge Window. So how about we enable
only USB controller drivers now and then enable PCIe after its
build-able as module?

Regards
Vignesh
Tom Rini Dec. 22, 2021, 4:40 p.m. UTC | #7
On Wed, Dec 22, 2021 at 12:56:06PM +0530, Vignesh Raghavendra wrote:
> 
> 
> On 21/12/21 9:39 pm, Tom Rini wrote:
> > On Tue, Dec 21, 2021 at 04:55:48PM +0100, Arnd Bergmann wrote:
> >> On Tue, Dec 21, 2021 at 4:32 PM Tom Rini <trini@konsulko.com> wrote:
> >>> On Mon, Dec 20, 2021 at 11:10:25PM +0530, Vignesh Raghavendra wrote:
> >>>>
> >>>> Currently its not possible to build PCIE_CADENCE_PLAT_HOST/EP drivers as
> >>>> modules (symbols are bool only).
> >>>> PCIe is not necessary for basic boot either. So, I can drop these
> >>>> configs until these drivers are build able as modules, if you prefer.
> >>>
> >>> Is PCIe required for basic boot for the other platforms in the defconfig
> >>> which do enable it in the defconfig today?  It is required for non-basic
> >>> boot (whatever storage one puts in a PCIe slot).  If someone is going to
> >>> be fixing the PCIe driver to be able to be modular, that's fine too but
> >>> I ran in to this trying to see what works out of the box in the
> >>> defconfig, on this platform and hit both of these rather large
> >>> omissions.
> >>
> >> If PCI is often used for storage, then that's ok. There are a number of
> >> other platforms where PCIe is only used for wireless networking or
> >> other secondary devices, but they are still built-in because they got
> >> added before it became possible for PCIe host drivers to be loadable
> >> modules. I would like to eventually go through and turn those into
> >> loadable modules, but for the moment it would be good to only add
> >> built-in drivers where this is actually useful.
> > 
> > That's good to know.  My question tho is, what's actually useful?  The
> > EVM is 2 PCIe x8 type slots.  I honestly don't know if that means "super
> > useful, arbitrary devices are expected to work" or "not useful,
> > arbitrary devices are not expected to work".  Is the functional
> > definition of what's in the defconfig vs left up to users,
> > distributions, etc, to find and enabled defined, or at least well known
> > / explained somewhere?  Where I'm coming from on this is that these
> > platforms practically are, and can be SystemReady IR certified.  So
> > what's needed here to ensure there's a good experience distros to enable
> > what needs enabling for full functionality?  What we hit was "lets throw
> > some stuff at this board to test it out and.. wait, PCIe isn't enabled
> > at all? USB host isn't enabled at all?"
> > 
> > And all that said, if someone is going to be fixing the PCIe drivers to
> > be enabled as modules soon, and just getting it handled that way in the
> > next appropriately timed merge window, OK, fine, good enough.
> > 
> 
> Looks like its not a big effort to convert J7 PCIe driver to build as
> module and can be done for v5.18 Merge Window. So how about we enable
> only USB controller drivers now and then enable PCIe after its
> build-able as module?

Works for me, thanks!