All of lore.kernel.org
 help / color / mirror / Atom feed
From: Keith Packard <keithp@keithp.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	"Abbott Liu" <liuwenliang@huawei.com>,
	"Alexander Sverdlin" <alexander.sverdlin@gmail.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Anshuman Khandual" <anshuman.khandual@arm.com>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Bjorn Andersson" <bjorn.andersson@linaro.org>,
	"Florian Fainelli" <f.fainelli@gmail.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Hartley Sweeten" <hsweeten@visionengravers.com>,
	"Jens Axboe" <axboe@kernel.dk>, "Jian Cai" <jiancai@google.com>,
	"Joe Perches" <joe@perches.com>,
	"Kees Cook" <keescook@chromium.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski@canonical.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Marc Zyngier" <maz@kernel.org>,
	"Masahiro Yamada" <masahiroy@kernel.org>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Mike Rapoport" <rppt@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nick Desaulniers" <ndesaulniers@google.com>,
	"Nicolas Pitre" <nico@fluxnic.net>,
	"Rob Herring" <robh@kernel.org>,
	"Russell King" <linux@armlinux.org.uk>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Valentin Schneider" <valentin.schneider@arm.com>,
	"Viresh Kumar" <viresh.kumar@linaro.org>,
	"Wolfram Sang (Renesas)" <wsa+renesas@sang-engineering.com>,
	"YiFei Zhu" <yifeifz2@illinois.edu>
Subject: Re: [PATCH 2/3] ARM: Move thread_info into task_struct (v7 only)
Date: Sun, 05 Sep 2021 23:20:49 -0700	[thread overview]
Message-ID: <87zgsqdy2m.fsf@keithp.com> (raw)
In-Reply-To: <CAMj1kXHHb_d4Exg7_5OdB-Ah=EQxVEUgEv1agUQZg-Rz8pLd5Q@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2119 bytes --]

Ard Biesheuvel <ardb@kernel.org> writes:

(sorry, missed a couple of comments, and also neglected to thank you for
your review!)

>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 24804f11302d..1c1ded500a2b 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -128,6 +128,7 @@ config ARM
>>         select RTC_LIB
>>         select SET_FS
>>         select SYS_SUPPORTS_APM_EMULATION
>> +       select THREAD_INFO_IN_TASK if CPU_V7
>
> CPU_V6K also supports this

I've only tested on V7; help getting testing for V6K so we could enable
that as well would be greatly appreciated.

>> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
>> index 415c3514573a..71a2ba4549d3 100644
>> --- a/arch/arm/Makefile
>> +++ b/arch/arm/Makefile
>> @@ -284,6 +284,14 @@ stack_protector_prepare: prepare0
>>         $(eval GCC_PLUGINS_CFLAGS += $(SSP_PLUGIN_CFLAGS))
>>  endif
>>
>> +ifdef CONFIG_SMP
>> +prepare: task_cpu_prepare
>> +
>> +PHONY += task_cpu_prepare
>> +task_cpu_prepare: prepare0
>> +       $(eval KBUILD_CFLAGS += -D_TSK_CPU=$(shell awk '{if ($$2 == "TSK_CPU") print $$3;}' include/generated/asm-offsets.h))
>> +endif
>> +
>>  all:   $(notdir $(KBUILD_IMAGE))
>>
>
> This is rather horrid, and removed again in the next patch. Can we
> omit it entirely?

Yeah, this did get rather ugly -- I wanted to use the task_struct in the
raw_smp_processor_id() macro, but discovered that I couldn't include
linux/sched.h in that file.

I found this lovely hack in the powerpc kernel code and just lifted it
from there. In terms of code changes, this one is "smaller" than
including the new per-cpu variable, "cpu_number", but in terms of
ugliness, it's hard to argue which is cleaner.

I was going for fewest logical changes in structure with this patch
instead of cleanest result to try and make it slightly easier to review.

Happy to squash these two patches together if you'd prefer; I initially
wrote the code with the cpu_number variable but then discovered that I
didn't need it if I used the cpu value in the task_struct...

-- 
-keith

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Keith Packard <keithp@keithp.com>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	"Abbott Liu" <liuwenliang@huawei.com>,
	"Alexander Sverdlin" <alexander.sverdlin@gmail.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Anshuman Khandual" <anshuman.khandual@arm.com>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Bjorn Andersson" <bjorn.andersson@linaro.org>,
	"Florian Fainelli" <f.fainelli@gmail.com>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Hartley Sweeten" <hsweeten@visionengravers.com>,
	"Jens Axboe" <axboe@kernel.dk>, "Jian Cai" <jiancai@google.com>,
	"Joe Perches" <joe@perches.com>,
	"Kees Cook" <keescook@chromium.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski@canonical.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Marc Zyngier" <maz@kernel.org>,
	"Masahiro Yamada" <masahiroy@kernel.org>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Mike Rapoport" <rppt@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nick Desaulniers" <ndesaulniers@google.com>,
	"Nicolas Pitre" <nico@fluxnic.net>,
	"Rob Herring" <robh@kernel.org>,
	"Russell King" <linux@armlinux.org.uk>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Valentin Schneider" <valentin.schneider@arm.com>,
	"Viresh Kumar" <viresh.kumar@linaro.org>,
	"Wolfram Sang (Renesas)" <wsa+renesas@sang-engineering.com>,
	"YiFei Zhu" <yifeifz2@illinois.edu>
Subject: Re: [PATCH 2/3] ARM: Move thread_info into task_struct (v7 only)
Date: Sun, 05 Sep 2021 23:20:49 -0700	[thread overview]
Message-ID: <87zgsqdy2m.fsf@keithp.com> (raw)
In-Reply-To: <CAMj1kXHHb_d4Exg7_5OdB-Ah=EQxVEUgEv1agUQZg-Rz8pLd5Q@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 2119 bytes --]

Ard Biesheuvel <ardb@kernel.org> writes:

(sorry, missed a couple of comments, and also neglected to thank you for
your review!)

>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 24804f11302d..1c1ded500a2b 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -128,6 +128,7 @@ config ARM
>>         select RTC_LIB
>>         select SET_FS
>>         select SYS_SUPPORTS_APM_EMULATION
>> +       select THREAD_INFO_IN_TASK if CPU_V7
>
> CPU_V6K also supports this

I've only tested on V7; help getting testing for V6K so we could enable
that as well would be greatly appreciated.

>> diff --git a/arch/arm/Makefile b/arch/arm/Makefile
>> index 415c3514573a..71a2ba4549d3 100644
>> --- a/arch/arm/Makefile
>> +++ b/arch/arm/Makefile
>> @@ -284,6 +284,14 @@ stack_protector_prepare: prepare0
>>         $(eval GCC_PLUGINS_CFLAGS += $(SSP_PLUGIN_CFLAGS))
>>  endif
>>
>> +ifdef CONFIG_SMP
>> +prepare: task_cpu_prepare
>> +
>> +PHONY += task_cpu_prepare
>> +task_cpu_prepare: prepare0
>> +       $(eval KBUILD_CFLAGS += -D_TSK_CPU=$(shell awk '{if ($$2 == "TSK_CPU") print $$3;}' include/generated/asm-offsets.h))
>> +endif
>> +
>>  all:   $(notdir $(KBUILD_IMAGE))
>>
>
> This is rather horrid, and removed again in the next patch. Can we
> omit it entirely?

Yeah, this did get rather ugly -- I wanted to use the task_struct in the
raw_smp_processor_id() macro, but discovered that I couldn't include
linux/sched.h in that file.

I found this lovely hack in the powerpc kernel code and just lifted it
from there. In terms of code changes, this one is "smaller" than
including the new per-cpu variable, "cpu_number", but in terms of
ugliness, it's hard to argue which is cleaner.

I was going for fewest logical changes in structure with this patch
instead of cleanest result to try and make it slightly easier to review.

Happy to squash these two patches together if you'd prefer; I initially
wrote the code with the cpu_number variable but then discovered that I
didn't need it if I used the cpu value in the task_struct...

-- 
-keith

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-09-06  6:20 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-02 15:54 [PATCH 0/2]: ARM: Enable THREAD_INFO_IN_TASK Keith Packard
2021-09-02 15:54 ` Keith Packard
2021-09-02 15:54 ` [PATCH 1/2] ARM: Add per-cpu variable holding cpu number Keith Packard
2021-09-02 15:54   ` Keith Packard
2021-09-02 15:54 ` [PATCH 2/2] ARM: Move thread_info into task_struct Keith Packard
2021-09-02 15:54   ` Keith Packard
2021-09-02 16:07 ` [PATCH 0/2]: ARM: Enable THREAD_INFO_IN_TASK Kees Cook
2021-09-02 16:07   ` Kees Cook
2021-09-02 16:18   ` Ard Biesheuvel
2021-09-02 16:18     ` Ard Biesheuvel
2021-09-02 17:37     ` Kees Cook
2021-09-02 17:37       ` Kees Cook
2021-09-02 16:54   ` Russell King (Oracle)
2021-09-02 16:54     ` Russell King (Oracle)
2021-09-02 16:53 ` Russell King (Oracle)
2021-09-02 16:53   ` Russell King (Oracle)
2021-09-02 17:35   ` Kees Cook
2021-09-02 17:35     ` Kees Cook
2021-09-02 17:58   ` Keith Packard
2021-09-02 17:58     ` Keith Packard
2021-09-04  6:09 ` [PATCH 0/2] ARM: support THREAD_INFO_IN_TASK (v7 only) (v2) Keith Packard
2021-09-04  6:09   ` Keith Packard
2021-09-04  6:09   ` [PATCH 1/3] ARM: Pass cpu number to secondary_start_kernel Keith Packard
2021-09-04  6:09     ` Keith Packard
2021-09-05 20:25     ` Ard Biesheuvel
2021-09-05 20:25       ` Ard Biesheuvel
2021-09-04  6:09   ` [PATCH 2/3] ARM: Move thread_info into task_struct (v7 only) Keith Packard
2021-09-04  6:09     ` Keith Packard
2021-09-05 20:56     ` Ard Biesheuvel
2021-09-05 20:56       ` Ard Biesheuvel
2021-09-06  6:14       ` Keith Packard
2021-09-06  6:14         ` Keith Packard
2021-09-06  7:49         ` Ard Biesheuvel
2021-09-06  7:49           ` Ard Biesheuvel
2021-09-07 15:24           ` Keith Packard
2021-09-07 15:24             ` Keith Packard
2021-09-07 16:05             ` Ard Biesheuvel
2021-09-07 16:05               ` Ard Biesheuvel
2021-09-07 22:17               ` Keith Packard
2021-09-07 22:17                 ` Keith Packard
2021-09-06  6:20       ` Keith Packard [this message]
2021-09-06  6:20         ` Keith Packard
2021-09-04  6:09   ` [PATCH 3/3] ARM: Add per-cpu variable cpu_number " Keith Packard
2021-09-04  6:09     ` Keith Packard
2021-09-07 22:00   ` [PATCH 0/7] ARM: support THREAD_INFO_IN_TASK (v3) Keith Packard
2021-09-07 22:00     ` Keith Packard
2021-09-07 22:00     ` [PATCH 1/7] ARM: Pass cpu number to secondary_start_kernel Keith Packard
2021-09-07 22:00       ` Keith Packard
2021-09-07 22:00     ` [PATCH 2/7] ARM: Pass task " Keith Packard
2021-09-07 22:00       ` Keith Packard
2021-09-07 22:00     ` [PATCH 3/7] ARM: Use smp_processor_id() in vfp_pm_suspend instead of ti->cpu Keith Packard
2021-09-07 22:00       ` Keith Packard
2021-09-07 22:00     ` [PATCH 4/7] ARM: Use hack from powerpc to get current cpu number Keith Packard
2021-09-07 22:00       ` Keith Packard
2021-09-08  7:45       ` Ard Biesheuvel
2021-09-08  7:45         ` Ard Biesheuvel
2021-09-07 22:00     ` [PATCH 5/7] ARM: Stop using TPIDRPRW to hold per_cpu_offset Keith Packard
2021-09-07 22:00       ` Keith Packard
2021-09-09 13:54       ` Ard Biesheuvel
2021-09-09 13:54         ` Ard Biesheuvel
2021-09-07 22:00     ` [PATCH 6/7] ARM: Use TPIDRPRW for current Keith Packard
2021-09-07 22:00       ` Keith Packard
2021-09-09 13:56       ` Ard Biesheuvel
2021-09-09 13:56         ` Ard Biesheuvel
2021-09-07 22:00     ` [PATCH 7/7] ARM: Move thread_info into task_struct (v7 only) Keith Packard
2021-09-07 22:00       ` Keith Packard
2021-09-08  7:01     ` [PATCH 0/7] ARM: support THREAD_INFO_IN_TASK (v3) Krzysztof Kozlowski
2021-09-08  7:01       ` Krzysztof Kozlowski
2021-09-08  7:47       ` Ard Biesheuvel
2021-09-08  7:47         ` Ard Biesheuvel
2021-09-08  7:50         ` Geert Uytterhoeven
2021-09-08  7:50           ` Geert Uytterhoeven

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=87zgsqdy2m.fsf@keithp.com \
    --to=keithp@keithp.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.sverdlin@gmail.com \
    --cc=anshuman.khandual@arm.com \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=axboe@kernel.dk \
    --cc=bjorn.andersson@linaro.org \
    --cc=f.fainelli@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=hsweeten@visionengravers.com \
    --cc=jiancai@google.com \
    --cc=joe@perches.com \
    --cc=keescook@chromium.org \
    --cc=krzysztof.kozlowski@canonical.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=liuwenliang@huawei.com \
    --cc=mani@kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=maz@kernel.org \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=nico@fluxnic.net \
    --cc=ojeda@kernel.org \
    --cc=robh@kernel.org \
    --cc=rppt@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=valentin.schneider@arm.com \
    --cc=viresh.kumar@linaro.org \
    --cc=wsa+renesas@sang-engineering.com \
    --cc=yifeifz2@illinois.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.