diff mbox series

[RFC|kirkstone] linux-ti-staging: add config preempt for am335x and am437x

Message ID 20230914171026.3014887-1-anandb@ti.com
State RFC
Delegated to: Ryan Eatmon
Headers show
Series [RFC|kirkstone] linux-ti-staging: add config preempt for am335x and am437x | expand

Commit Message

Anand Balagopalakrishnan Sept. 14, 2023, 5:10 p.m. UTC
SGX needs a preemptible kernel. CONFIG_PREEMPT has always been enabled
on TI Linux kernels upto K5.1.

This is enabled on AM65x by default but missed out AM335x and AM437x.
Add a kernel config fragment to enable config preempt.

Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
---
 .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
 .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
 2 files changed, 13 insertions(+)
 create mode 100644 meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg

Comments

Andrew Davis Sept. 14, 2023, 7:09 p.m. UTC | #1
On 9/14/23 12:10 PM, Anand Balagopalakrishnan via lists.yoctoproject.org wrote:
> SGX needs a preemptible kernel. CONFIG_PREEMPT has always been enabled
> on TI Linux kernels upto K5.1.
> 
> This is enabled on AM65x by default but missed out AM335x and AM437x.
> Add a kernel config fragment to enable config preempt.
> 
> Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
> ---

Do not add configs to Yocto, add them to the kernel as normal patches using LPR
like everyone else.

Andrew

>   .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
>   .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
>   2 files changed, 13 insertions(+)
>   create mode 100644 meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> 
> diff --git a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> new file mode 100644
> index 00000000..c1e5ad7d
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> @@ -0,0 +1,12 @@
> +CONFIG_PREEMPT_BUILD=y
> +# CONFIG_PREEMPT_NONE is not set
> +CONFIG_PREEMPT=y
> +CONFIG_PREEMPT_COUNT=y
> +CONFIG_PREEMPTION=y
> +CONFIG_PREEMPT_RCU=y
> +CONFIG_TASKS_RCU_GENERIC=y
> +CONFIG_TASKS_RCU=y
> +CONFIG_UNINLINE_SPIN_UNLOCK=y
> +# CONFIG_CEC_GPIO is not set
> +CONFIG_DEBUG_PREEMPT=y
> +# CONFIG_PREEMPT_TRACER is not set
> diff --git a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> index 8a883878..0ee63358 100644
> --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
>   
>   KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
>   KERNEL_GIT_PROTOCOL = "https"
> +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
>   SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
>               file://defconfig"
>   
> 
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#16968): https://lists.yoctoproject.org/g/meta-ti/message/16968
> Mute This Topic: https://lists.yoctoproject.org/mt/101362535/3619733
> Group Owner: meta-ti+owner@lists.yoctoproject.org
> Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/unsub [afd@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Ryan Eatmon Sept. 14, 2023, 7:30 p.m. UTC | #2
On 9/14/2023 12:10 PM, Anand Balagopalakrishnan wrote:
> SGX needs a preemptible kernel. CONFIG_PREEMPT has always been enabled
> on TI Linux kernels upto K5.1.
> 
> This is enabled on AM65x by default but missed out AM335x and AM437x.
> Add a kernel config fragment to enable config preempt.
> 
> Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
> ---
>   .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
>   .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
>   2 files changed, 13 insertions(+)
>   create mode 100644 meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> 
> diff --git a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> new file mode 100644
> index 00000000..c1e5ad7d
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> @@ -0,0 +1,12 @@
> +CONFIG_PREEMPT_BUILD=y
> +# CONFIG_PREEMPT_NONE is not set
> +CONFIG_PREEMPT=y
> +CONFIG_PREEMPT_COUNT=y
> +CONFIG_PREEMPTION=y
> +CONFIG_PREEMPT_RCU=y
> +CONFIG_TASKS_RCU_GENERIC=y
> +CONFIG_TASKS_RCU=y
> +CONFIG_UNINLINE_SPIN_UNLOCK=y
> +# CONFIG_CEC_GPIO is not set
> +CONFIG_DEBUG_PREEMPT=y
> +# CONFIG_PREEMPT_TRACER is not set
> diff --git a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> index 8a883878..0ee63358 100644
> --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
>   
>   KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
>   KERNEL_GIT_PROTOCOL = "https"
> +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
>   SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
>               file://defconfig"
>   

I'm going to provide comments just as a learning moment for those paying 
attention.

1) The location of where you stuck KERNEL_CONFIG_FRAGMENTS is out of 
place.  It just there in the middle of the SRC_URI variables.

2) We do not need to add this for ALL platforms, just the ones that you 
identified (am3, am4, am57, etc...)  So you should use the SOC_FAMILY 
override syntax to limit the change to just those families:

KERNEL_CONFIG_FRAGMENTS:append:ti33x = " ${WORKDIR}/config-preempt.cfg"
KERNEL_CONFIG_FRAGMENTS:append:ti43x = " ${WORKDIR}/config-preempt.cfg"
KERNEL_CONFIG_FRAGMENTS:append:dra7x = " ${WORKDIR}/config-preempt.cfg"

3) As this patch is adding the RT prempt stuff, it does not need to be 
present for building the RT kernel.  But the RT recipe includes this 
recipe and just changes the branch and SRCREV.  So this change would 
conflict with what the RT kernel recipe is doing.

4) All of the RT stuff is done with config fragments.  You can look in 
meta-ti-bsp/recipes-kernel/linux/linux-ti-staging-rt-6.1/defconfig:

use-kernel-config=multi_v7_defconfig
config-fragment=kernel/configs/ti_multi_v7_prune.config 
kernel/configs/ti_rt.config

So this patch should be done using the existing method fragments, not 
just setting the variable.  A new config fragment needs to be added to 
the kernel that sets CONFIG_PREMPT=y (maybe 
kernel/configs/ti_preempt.config).

And then create three new files:

meta-ti-bsp/recipes-linux/linux/linux-ti-staging-6.1/ti33x/defconfig
--------------------------------------------------------------------
use-kernel-config=multi_v7_defconfig
config-fragment=kernel/configs/ti_multi_v7_prune.config 
kernel/configs/ti_preempt.config

meta-ti-bsp/recipes-linux/linux/linux-ti-staging-6.1/ti43x/defconfig
--------------------------------------------------------------------
use-kernel-config=multi_v7_defconfig
config-fragment=kernel/configs/ti_multi_v7_prune.config 
kernel/configs/ti_preempt.config

meta-ti-bsp/recipes-linux/linux/linux-ti-staging-6.1/dra7x/defconfig
--------------------------------------------------------------------
use-kernel-config=multi_v7_defconfig
config-fragment=kernel/configs/ti_multi_v7_prune.config 
kernel/configs/ti_preempt.config
Denys Dmytriyenko Sept. 14, 2023, 7:36 p.m. UTC | #3
On Thu, Sep 14, 2023 at 10:40:26PM +0530, Anand Balagopalakrishnan via lists.yoctoproject.org wrote:
> SGX needs a preemptible kernel. CONFIG_PREEMPT has always been enabled
> on TI Linux kernels upto K5.1.
> 
> This is enabled on AM65x by default but missed out AM335x and AM437x.
> Add a kernel config fragment to enable config preempt.

Hi, Anand,

Is this only needed for am335x and am437x, as the subject suggests? If so, why 
the code adds the config fragment to all platforms?

Second question - historically this has been enabled in the TI kernel itself. 
Why not do it like that again, why add the fragment to the OE metadata instead 
of keeping it in-tree? How the distro-agnostic approach would be handled?


> Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
> ---
>  .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
>  .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
>  2 files changed, 13 insertions(+)
>  create mode 100644 meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> 
> diff --git a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> new file mode 100644
> index 00000000..c1e5ad7d
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg

This is not the right location for the file. You want to add to the 
linux-ti-staging-rt-6.1/ directory, since you are only using it from 
the corresponding linux-ti-staging_6.1.bb recipe.


> @@ -0,0 +1,12 @@
> +CONFIG_PREEMPT_BUILD=y
> +# CONFIG_PREEMPT_NONE is not set
> +CONFIG_PREEMPT=y
> +CONFIG_PREEMPT_COUNT=y
> +CONFIG_PREEMPTION=y
> +CONFIG_PREEMPT_RCU=y
> +CONFIG_TASKS_RCU_GENERIC=y
> +CONFIG_TASKS_RCU=y
> +CONFIG_UNINLINE_SPIN_UNLOCK=y
> +# CONFIG_CEC_GPIO is not set
> +CONFIG_DEBUG_PREEMPT=y
> +# CONFIG_PREEMPT_TRACER is not set
> diff --git a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> index 8a883878..0ee63358 100644
> --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
>  
>  KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
>  KERNEL_GIT_PROTOCOL = "https"
> +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"

Since this file is out-of-tree and in the OE metadata, it would also require 
listing it in SRC_URI.


>  SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
>              file://defconfig"
>  
> -- 
> 2.34.1
Denys Dmytriyenko Sept. 14, 2023, 7:55 p.m. UTC | #4
On Thu, Sep 14, 2023 at 03:36:18PM -0400, Denys Dmytriyenko wrote:
> On Thu, Sep 14, 2023 at 10:40:26PM +0530, Anand Balagopalakrishnan via lists.yoctoproject.org wrote:
> > SGX needs a preemptible kernel. CONFIG_PREEMPT has always been enabled
> > on TI Linux kernels upto K5.1.
> > 
> > This is enabled on AM65x by default but missed out AM335x and AM437x.
> > Add a kernel config fragment to enable config preempt.
> 
> Hi, Anand,
> 
> Is this only needed for am335x and am437x, as the subject suggests? If so, why 
> the code adds the config fragment to all platforms?
> 
> Second question - historically this has been enabled in the TI kernel itself. 
> Why not do it like that again, why add the fragment to the OE metadata instead 
> of keeping it in-tree? How the distro-agnostic approach would be handled?
> 
> 
> > Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
> > ---
> >  .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
> >  .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
> >  2 files changed, 13 insertions(+)
> >  create mode 100644 meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> > 
> > diff --git a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> > new file mode 100644
> > index 00000000..c1e5ad7d
> > --- /dev/null
> > +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> 
> This is not the right location for the file. You want to add to the 
> linux-ti-staging-rt-6.1/ directory, since you are only using it from 
> the corresponding linux-ti-staging_6.1.bb recipe.

Sorry, typo here - linux-ti-staging-6.1/ directory, if it's not RT-specific.

> 
> > @@ -0,0 +1,12 @@
> > +CONFIG_PREEMPT_BUILD=y
> > +# CONFIG_PREEMPT_NONE is not set
> > +CONFIG_PREEMPT=y
> > +CONFIG_PREEMPT_COUNT=y
> > +CONFIG_PREEMPTION=y
> > +CONFIG_PREEMPT_RCU=y
> > +CONFIG_TASKS_RCU_GENERIC=y
> > +CONFIG_TASKS_RCU=y
> > +CONFIG_UNINLINE_SPIN_UNLOCK=y
> > +# CONFIG_CEC_GPIO is not set
> > +CONFIG_DEBUG_PREEMPT=y
> > +# CONFIG_PREEMPT_TRACER is not set
> > diff --git a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> > index 8a883878..0ee63358 100644
> > --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> > +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> > @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
> >  
> >  KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
> >  KERNEL_GIT_PROTOCOL = "https"
> > +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
> 
> Since this file is out-of-tree and in the OE metadata, it would also require 
> listing it in SRC_URI.
> 
> 
> >  SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
> >              file://defconfig"
> >  
> > -- 
> > 2.34.1
Bajjuri, Praneeth Sept. 14, 2023, 7:57 p.m. UTC | #5
On 9/14/2023 2:36 PM, Denys Dmytriyenko wrote:
> On Thu, Sep 14, 2023 at 10:40:26PM +0530, Anand Balagopalakrishnan via lists.yoctoproject.org wrote:
>> SGX needs a preemptible kernel. CONFIG_PREEMPT has always been enabled
>> on TI Linux kernels upto K5.1.
>>
>> This is enabled on AM65x by default but missed out AM335x and AM437x.
>> Add a kernel config fragment to enable config preempt.
> 
> Hi, Anand,
> 
> Is this only needed for am335x and am437x, as the subject suggests? If so, why
> the code adds the config fragment to all platforms?
> 
> Second question - historically this has been enabled in the TI kernel itself.
> Why not do it like that again, why add the fragment to the OE metadata instead
> of keeping it in-tree? How the distro-agnostic approach would be handled?

Anand,

We use arm default defconfig
for v8 platforms: 
https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.1.y&id=dab7ea360967f26337be1f26f56b12771da8c731 
This enables CONFIG_PREEMPT

For v7 platforms like am335x , am437x , dra7xx and am57xx:
we use multi_v7_defconfig
https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/configs/multi_v7_defconfig?h=ti-linux-6.1.y 


This would be the right place to enable the config.(so that all 
platforms gets this fix)

More than the what part, would like to understand "why".
Can you provide more details on why SGX IP needs preemptible kernel ?


> 
> 
>> Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
>> ---
>>   .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
>>   .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
>>   2 files changed, 13 insertions(+)
>>   create mode 100644 meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>>
>> diff --git a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>> new file mode 100644
>> index 00000000..c1e5ad7d
>> --- /dev/null
>> +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> 
> This is not the right location for the file. You want to add to the
> linux-ti-staging-rt-6.1/ directory, since you are only using it from
> the corresponding linux-ti-staging_6.1.bb recipe.
> 
> 
>> @@ -0,0 +1,12 @@
>> +CONFIG_PREEMPT_BUILD=y
>> +# CONFIG_PREEMPT_NONE is not set
>> +CONFIG_PREEMPT=y
>> +CONFIG_PREEMPT_COUNT=y
>> +CONFIG_PREEMPTION=y
>> +CONFIG_PREEMPT_RCU=y
>> +CONFIG_TASKS_RCU_GENERIC=y
>> +CONFIG_TASKS_RCU=y
>> +CONFIG_UNINLINE_SPIN_UNLOCK=y
>> +# CONFIG_CEC_GPIO is not set
>> +CONFIG_DEBUG_PREEMPT=y
>> +# CONFIG_PREEMPT_TRACER is not set
>> diff --git a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>> index 8a883878..0ee63358 100644
>> --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>> +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>> @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
>>   
>>   KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
>>   KERNEL_GIT_PROTOCOL = "https"
>> +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
> 
> Since this file is out-of-tree and in the OE metadata, it would also require
> listing it in SRC_URI.
> 
> 
>>   SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
>>               file://defconfig"
>>   
>> -- 
>> 2.34.1
Anand Balagopalakrishnan Sept. 15, 2023, 1:47 a.m. UTC | #6
Hi Denys,

This is only needed for v7 platforms like AM3 / AM4 and possibly AM57x also. CONFIG_PREEMPT is enabled by default on arm64 platforms like AM65x.

Praneeth will send a kernel patch for TI kernel. This meta-ti patch is meant to unblock anyone who wants to enable SGX drive in the meanwhile. 

Regards,
Anand

-----Original Message-----
From: Denys Dmytriyenko <denis@denix.org> 
Sent: Friday, September 15, 2023 1:25 AM
To: Balagopalakrishnan, Anand <anandb@ti.com>
Cc: meta-ti@lists.yoctoproject.org; Eatmon, Ryan <reatmon@ti.com>; Adivi, Sai Sree Kartheek <s-adivi@ti.com>; Gupta, Gyan <g-gupta@ti.com>; Khasim, Syed Mohammed <khasim@ti.com>; Pothukuchi, Vijay <vijayp@ti.com>; Bajjuri, Praneeth <praneeth@ti.com>
Subject: [EXTERNAL] Re: [meta-ti] [RFC|kirkstone] linux-ti-staging: add config preempt for am335x and am437x

On Thu, Sep 14, 2023 at 03:36:18PM -0400, Denys Dmytriyenko wrote:
> On Thu, Sep 14, 2023 at 10:40:26PM +0530, Anand Balagopalakrishnan via lists.yoctoproject.org wrote:
> > SGX needs a preemptible kernel. CONFIG_PREEMPT has always been 
> > enabled on TI Linux kernels upto K5.1.
> > 
> > This is enabled on AM65x by default but missed out AM335x and AM437x.
> > Add a kernel config fragment to enable config preempt.
> 
> Hi, Anand,
> 
> Is this only needed for am335x and am437x, as the subject suggests? If 
> so, why the code adds the config fragment to all platforms?
> 
> Second question - historically this has been enabled in the TI kernel itself. 
> Why not do it like that again, why add the fragment to the OE metadata 
> instead of keeping it in-tree? How the distro-agnostic approach would be handled?
> 
> 
> > Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
> > ---
> >  .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
> >  .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
> >  2 files changed, 13 insertions(+)
> >  create mode 100644 
> > meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> > 
> > diff --git 
> > a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg 
> > b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
> > new file mode 100644
> > index 00000000..c1e5ad7d
> > --- /dev/null
> > +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.
> > +++ cfg
> 
> This is not the right location for the file. You want to add to the 
> linux-ti-staging-rt-6.1/ directory, since you are only using it from 
> the corresponding linux-ti-staging_6.1.bb recipe.

Sorry, typo here - linux-ti-staging-6.1/ directory, if it's not RT-specific.

> 
> > @@ -0,0 +1,12 @@
> > +CONFIG_PREEMPT_BUILD=y
> > +# CONFIG_PREEMPT_NONE is not set
> > +CONFIG_PREEMPT=y
> > +CONFIG_PREEMPT_COUNT=y
> > +CONFIG_PREEMPTION=y
> > +CONFIG_PREEMPT_RCU=y
> > +CONFIG_TASKS_RCU_GENERIC=y
> > +CONFIG_TASKS_RCU=y
> > +CONFIG_UNINLINE_SPIN_UNLOCK=y
> > +# CONFIG_CEC_GPIO is not set
> > +CONFIG_DEBUG_PREEMPT=y
> > +# CONFIG_PREEMPT_TRACER is not set
> > diff --git 
> > a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb 
> > b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> > index 8a883878..0ee63358 100644
> > --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> > +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
> > @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
> >  
> >  KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
> >  KERNEL_GIT_PROTOCOL = "https"
> > +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
> 
> Since this file is out-of-tree and in the OE metadata, it would also 
> require listing it in SRC_URI.
> 
> 
> >  SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
> >              file://defconfig"
> >  
> > --
> > 2.34.1
Bajjuri, Praneeth Sept. 15, 2023, 4:17 p.m. UTC | #7
On 9/14/2023 8:47 PM, Balagopalakrishnan, Anand wrote:
> Hi Denys,
> 
> This is only needed for v7 platforms like AM3 / AM4 and possibly AM57x also. CONFIG_PREEMPT is enabled by default on arm64 platforms like AM65x.
> 
> Praneeth will send a kernel patch for TI kernel. This meta-ti patch is meant to unblock anyone who wants to enable SGX drive in the meanwhile.


This patch can be abandoned .
https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.1.y-cicd&id=e025e31126fff01ded59d901af916abe87646ca6 
enables CONFIG_PREEMPT


> 
> Regards,
> Anand
> 
> -----Original Message-----
> From: Denys Dmytriyenko <denis@denix.org>
> Sent: Friday, September 15, 2023 1:25 AM
> To: Balagopalakrishnan, Anand <anandb@ti.com>
> Cc: meta-ti@lists.yoctoproject.org; Eatmon, Ryan <reatmon@ti.com>; Adivi, Sai Sree Kartheek <s-adivi@ti.com>; Gupta, Gyan <g-gupta@ti.com>; Khasim, Syed Mohammed <khasim@ti.com>; Pothukuchi, Vijay <vijayp@ti.com>; Bajjuri, Praneeth <praneeth@ti.com>
> Subject: [EXTERNAL] Re: [meta-ti] [RFC|kirkstone] linux-ti-staging: add config preempt for am335x and am437x
> 
> On Thu, Sep 14, 2023 at 03:36:18PM -0400, Denys Dmytriyenko wrote:
>> On Thu, Sep 14, 2023 at 10:40:26PM +0530, Anand Balagopalakrishnan via lists.yoctoproject.org wrote:
>>> SGX needs a preemptible kernel. CONFIG_PREEMPT has always been
>>> enabled on TI Linux kernels upto K5.1.
>>>
>>> This is enabled on AM65x by default but missed out AM335x and AM437x.
>>> Add a kernel config fragment to enable config preempt.
>>
>> Hi, Anand,
>>
>> Is this only needed for am335x and am437x, as the subject suggests? If
>> so, why the code adds the config fragment to all platforms?
>>
>> Second question - historically this has been enabled in the TI kernel itself.
>> Why not do it like that again, why add the fragment to the OE metadata
>> instead of keeping it in-tree? How the distro-agnostic approach would be handled?
>>
>>
>>> Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
>>> ---
>>>   .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
>>>   .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
>>>   2 files changed, 13 insertions(+)
>>>   create mode 100644
>>> meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>>>
>>> diff --git
>>> a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>>> b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>>> new file mode 100644
>>> index 00000000..c1e5ad7d
>>> --- /dev/null
>>> +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.
>>> +++ cfg
>>
>> This is not the right location for the file. You want to add to the
>> linux-ti-staging-rt-6.1/ directory, since you are only using it from
>> the corresponding linux-ti-staging_6.1.bb recipe.
> 
> Sorry, typo here - linux-ti-staging-6.1/ directory, if it's not RT-specific.
> 
>>
>>> @@ -0,0 +1,12 @@
>>> +CONFIG_PREEMPT_BUILD=y
>>> +# CONFIG_PREEMPT_NONE is not set
>>> +CONFIG_PREEMPT=y
>>> +CONFIG_PREEMPT_COUNT=y
>>> +CONFIG_PREEMPTION=y
>>> +CONFIG_PREEMPT_RCU=y
>>> +CONFIG_TASKS_RCU_GENERIC=y
>>> +CONFIG_TASKS_RCU=y
>>> +CONFIG_UNINLINE_SPIN_UNLOCK=y
>>> +# CONFIG_CEC_GPIO is not set
>>> +CONFIG_DEBUG_PREEMPT=y
>>> +# CONFIG_PREEMPT_TRACER is not set
>>> diff --git
>>> a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> index 8a883878..0ee63358 100644
>>> --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
>>>   
>>>   KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
>>>   KERNEL_GIT_PROTOCOL = "https"
>>> +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
>>
>> Since this file is out-of-tree and in the OE metadata, it would also
>> require listing it in SRC_URI.
>>
>>
>>>   SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
>>>               file://defconfig"
>>>   
>>> --
>>> 2.34.1
Denys Dmytriyenko Sept. 15, 2023, 4:42 p.m. UTC | #8
On Fri, Sep 15, 2023 at 11:17:11AM -0500, Bajjuri, Praneeth wrote:
> 
> 
> On 9/14/2023 8:47 PM, Balagopalakrishnan, Anand wrote:
> >Hi Denys,
> >
> >This is only needed for v7 platforms like AM3 / AM4 and possibly AM57x also. CONFIG_PREEMPT is enabled by default on arm64 platforms like AM65x.
> >
> >Praneeth will send a kernel patch for TI kernel. This meta-ti patch is meant to unblock anyone who wants to enable SGX drive in the meanwhile.
> 
> 
> This patch can be abandoned .
> https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.1.y-cicd&id=e025e31126fff01ded59d901af916abe87646ca6
> enables CONFIG_PREEMPT

Praneeth,

Slight offtopic, but I was wondering what are the rules now for changes like 
this modifying upstream multi_v7_defconfig directly, vs. going into one of the  
config fragments in kernel/configs/?
Anand Balagopalakrishnan Sept. 19, 2023, 4:35 a.m. UTC | #9
Praneeth,

srcrev in kernel recipe for kirkstone branch needs to be bumped. The last CICD build was 6-Sep - also a good idea to trigger another full build.

Regards,
Anand

-----Original Message-----
From: Bajjuri, Praneeth <praneeth@ti.com> 
Sent: Friday, September 15, 2023 9:47 PM
To: Balagopalakrishnan, Anand <anandb@ti.com>; Denys Dmytriyenko <denis@denix.org>
Cc: meta-ti@lists.yoctoproject.org; Eatmon, Ryan <reatmon@ti.com>; Adivi, Sai Sree Kartheek <s-adivi@ti.com>; Gupta, Gyan <g-gupta@ti.com>; Khasim, Syed Mohammed <khasim@ti.com>; Pothukuchi, Vijay <vijayp@ti.com>
Subject: Re: [EXTERNAL] Re: [meta-ti] [RFC|kirkstone] linux-ti-staging: add config preempt for am335x and am437x



On 9/14/2023 8:47 PM, Balagopalakrishnan, Anand wrote:
> Hi Denys,
> 
> This is only needed for v7 platforms like AM3 / AM4 and possibly AM57x also. CONFIG_PREEMPT is enabled by default on arm64 platforms like AM65x.
> 
> Praneeth will send a kernel patch for TI kernel. This meta-ti patch is meant to unblock anyone who wants to enable SGX drive in the meanwhile.


This patch can be abandoned .
https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.1.y-cicd&id=e025e31126fff01ded59d901af916abe87646ca6 
enables CONFIG_PREEMPT


> 
> Regards,
> Anand
> 
> -----Original Message-----
> From: Denys Dmytriyenko <denis@denix.org>
> Sent: Friday, September 15, 2023 1:25 AM
> To: Balagopalakrishnan, Anand <anandb@ti.com>
> Cc: meta-ti@lists.yoctoproject.org; Eatmon, Ryan <reatmon@ti.com>; Adivi, Sai Sree Kartheek <s-adivi@ti.com>; Gupta, Gyan <g-gupta@ti.com>; Khasim, Syed Mohammed <khasim@ti.com>; Pothukuchi, Vijay <vijayp@ti.com>; Bajjuri, Praneeth <praneeth@ti.com>
> Subject: [EXTERNAL] Re: [meta-ti] [RFC|kirkstone] linux-ti-staging: add config preempt for am335x and am437x
> 
> On Thu, Sep 14, 2023 at 03:36:18PM -0400, Denys Dmytriyenko wrote:
>> On Thu, Sep 14, 2023 at 10:40:26PM +0530, Anand Balagopalakrishnan via lists.yoctoproject.org wrote:
>>> SGX needs a preemptible kernel. CONFIG_PREEMPT has always been
>>> enabled on TI Linux kernels upto K5.1.
>>>
>>> This is enabled on AM65x by default but missed out AM335x and AM437x.
>>> Add a kernel config fragment to enable config preempt.
>>
>> Hi, Anand,
>>
>> Is this only needed for am335x and am437x, as the subject suggests? If
>> so, why the code adds the config fragment to all platforms?
>>
>> Second question - historically this has been enabled in the TI kernel itself.
>> Why not do it like that again, why add the fragment to the OE metadata
>> instead of keeping it in-tree? How the distro-agnostic approach would be handled?
>>
>>
>>> Signed-off-by: Anand Balagopalakrishnan <anandb@ti.com>
>>> ---
>>>   .../linux/files/configs/config-preempt.cfg           | 12 ++++++++++++
>>>   .../recipes-kernel/linux/linux-ti-staging_6.1.bb     |  1 +
>>>   2 files changed, 13 insertions(+)
>>>   create mode 100644
>>> meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>>>
>>> diff --git
>>> a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>>> b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
>>> new file mode 100644
>>> index 00000000..c1e5ad7d
>>> --- /dev/null
>>> +++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.
>>> +++ cfg
>>
>> This is not the right location for the file. You want to add to the
>> linux-ti-staging-rt-6.1/ directory, since you are only using it from
>> the corresponding linux-ti-staging_6.1.bb recipe.
> 
> Sorry, typo here - linux-ti-staging-6.1/ directory, if it's not RT-specific.
> 
>>
>>> @@ -0,0 +1,12 @@
>>> +CONFIG_PREEMPT_BUILD=y
>>> +# CONFIG_PREEMPT_NONE is not set
>>> +CONFIG_PREEMPT=y
>>> +CONFIG_PREEMPT_COUNT=y
>>> +CONFIG_PREEMPTION=y
>>> +CONFIG_PREEMPT_RCU=y
>>> +CONFIG_TASKS_RCU_GENERIC=y
>>> +CONFIG_TASKS_RCU=y
>>> +CONFIG_UNINLINE_SPIN_UNLOCK=y
>>> +# CONFIG_CEC_GPIO is not set
>>> +CONFIG_DEBUG_PREEMPT=y
>>> +# CONFIG_PREEMPT_TRACER is not set
>>> diff --git
>>> a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> index 8a883878..0ee63358 100644
>>> --- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> +++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
>>> @@ -33,6 +33,7 @@ PR = "${MACHINE_KERNEL_PR}"
>>>   
>>>   KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
>>>   KERNEL_GIT_PROTOCOL = "https"
>>> +KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
>>
>> Since this file is out-of-tree and in the OE metadata, it would also
>> require listing it in SRC_URI.
>>
>>
>>>   SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
>>>               file://defconfig"
>>>   
>>> --
>>> 2.34.1
Denys Dmytriyenko Sept. 19, 2023, 6:13 p.m. UTC | #10
Anand,

Please check corresponding -next branches (master/kirkstone) - CICD automerges 
and SRCREV bumps are queued up there and I'm guessing they are going through 
the build and boot-test cycles now. If everything's green, they should be 
merged back to main kirkstone and master branches automatically. Ryan can 
definitely explain the entire CICD process in more detail.
Anand Balagopalakrishnan Sept. 20, 2023, 10:04 a.m. UTC | #11
On 14:13-20230919, Denys Dmytriyenko wrote:
> Anand,
> 
> Please check corresponding -next branches (master/kirkstone) - CICD automerges 
> and SRCREV bumps are queued up there and I'm guessing they are going through 
> the build and boot-test cycles now. If everything's green, they should be 
> merged back to main kirkstone and master branches automatically. Ryan can 
> definitely explain the entire CICD process in more detail.
> 
Denys,
Thanks. I am following up with Ryan and other SDK folks on enabling the
kernel patch on kirkstone branch.

Regards,
Anand
Bajjuri, Praneeth Sept. 21, 2023, 12:31 a.m. UTC | #12
On 9/15/2023 11:42 AM, Denys Dmytriyenko wrote:
> On Fri, Sep 15, 2023 at 11:17:11AM -0500, Bajjuri, Praneeth wrote:
>>
>>
>> On 9/14/2023 8:47 PM, Balagopalakrishnan, Anand wrote:
>>> Hi Denys,
>>>
>>> This is only needed for v7 platforms like AM3 / AM4 and possibly AM57x also. CONFIG_PREEMPT is enabled by default on arm64 platforms like AM65x.
>>>
>>> Praneeth will send a kernel patch for TI kernel. This meta-ti patch is meant to unblock anyone who wants to enable SGX drive in the meanwhile.
>>
>>
>> This patch can be abandoned .
>> https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.1.y-cicd&id=e025e31126fff01ded59d901af916abe87646ca6
>> enables CONFIG_PREEMPT
> 
> Praneeth,
> 
> Slight offtopic, but I was wondering what are the rules now for changes like
> this modifying upstream multi_v7_defconfig directly, vs. going into one of the
> config fragments in kernel/configs/?

Sorry for the delayed reply.

As you can see here:
https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/arch/arm/configs/multi_v7_defconfig?h=ti-linux-6.1.y

we have recently added few more configurations.
I Plan to send all of these configurations to mainline
(Since these are drivers already in upstream and preference is to have 
the config as well)

Similar to plan for drivers that are upstream complete for v8 platforms thru
arch/arm64/configs/defconfig

The general direction for kernel/configs/* fragments is for placeholder 
prune configurations for faster builds and debug configurations and for 
certain configurations which are certain that cannot be in mainline 
default configuration yet.

Hope it clarifies.


>
diff mbox series

Patch

diff --git a/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
new file mode 100644
index 00000000..c1e5ad7d
--- /dev/null
+++ b/meta-ti-bsp/recipes-kernel/linux/files/configs/config-preempt.cfg
@@ -0,0 +1,12 @@ 
+CONFIG_PREEMPT_BUILD=y
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
+CONFIG_PREEMPTION=y
+CONFIG_PREEMPT_RCU=y
+CONFIG_TASKS_RCU_GENERIC=y
+CONFIG_TASKS_RCU=y
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+# CONFIG_CEC_GPIO is not set
+CONFIG_DEBUG_PREEMPT=y
+# CONFIG_PREEMPT_TRACER is not set
diff --git a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
index 8a883878..0ee63358 100644
--- a/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
+++ b/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging_6.1.bb
@@ -33,6 +33,7 @@  PR = "${MACHINE_KERNEL_PR}"
 
 KERNEL_GIT_URI ?= "git://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git"
 KERNEL_GIT_PROTOCOL = "https"
+KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/config-preempt.cfg"
 SRC_URI += "${KERNEL_GIT_URI};protocol=${KERNEL_GIT_PROTOCOL};branch=${BRANCH} \
             file://defconfig"