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: Tue, 07 Sep 2021 08:24:36 -0700 [thread overview] Message-ID: <874kawcssr.fsf@keithp.com> (raw) In-Reply-To: <CAMj1kXFQHX-PDQXaRXGNjyJNn_frf9tYNFND06DAYC095JhDbw@mail.gmail.com> [-- Attachment #1: Type: text/plain, Size: 1505 bytes --] Ard Biesheuvel <ardb@kernel.org> writes: > Sure, so it is precisely for that reason that it is better to isolate > changes that can be isolated. I'll go ahead and split this apart then; that is how I did development, after all. > All the time. 'current' essentially never changes value from the POV > of code running in task context, so there is usually no reason to care > about preemption/migration when referring to it. Using per-CPU > variables is what creates the problem here. Thanks for helping me -- I just got the wrong model stuck in my head over the weekend somehow. If I do have this figured out, we should be able to stick the per_cpu_offset value in thread_info and use TPIDRPRW to hold 'current' as code using per_cpu_offset should already be disabling preemption. That should be an easier change than putting a kernel pointer in a user-visible register. > Given that we are already relying on the MP extensions for this > anyway, I personally think that using another thread ID register to > carry 'current' is a reasonable approach as well, since it would also > allow us to get per-task stack protector support into the compiler. > But I would like to hear from some other folks on cc as well. That would be awesome; I assume that doesn't require leaving per_cpu_offset in a thread ID register? In any case, I'll give my plan a try, and then see about trying your plan as well so I can compare the complexity of the two solutions. -- -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: Tue, 07 Sep 2021 08:24:36 -0700 [thread overview] Message-ID: <874kawcssr.fsf@keithp.com> (raw) In-Reply-To: <CAMj1kXFQHX-PDQXaRXGNjyJNn_frf9tYNFND06DAYC095JhDbw@mail.gmail.com> [-- Attachment #1.1: Type: text/plain, Size: 1505 bytes --] Ard Biesheuvel <ardb@kernel.org> writes: > Sure, so it is precisely for that reason that it is better to isolate > changes that can be isolated. I'll go ahead and split this apart then; that is how I did development, after all. > All the time. 'current' essentially never changes value from the POV > of code running in task context, so there is usually no reason to care > about preemption/migration when referring to it. Using per-CPU > variables is what creates the problem here. Thanks for helping me -- I just got the wrong model stuck in my head over the weekend somehow. If I do have this figured out, we should be able to stick the per_cpu_offset value in thread_info and use TPIDRPRW to hold 'current' as code using per_cpu_offset should already be disabling preemption. That should be an easier change than putting a kernel pointer in a user-visible register. > Given that we are already relying on the MP extensions for this > anyway, I personally think that using another thread ID register to > carry 'current' is a reasonable approach as well, since it would also > allow us to get per-task stack protector support into the compiler. > But I would like to hear from some other folks on cc as well. That would be awesome; I assume that doesn't require leaving per_cpu_offset in a thread ID register? In any case, I'll give my plan a try, and then see about trying your plan as well so I can compare the complexity of the two solutions. -- -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
next prev parent reply other threads:[~2021-09-07 15:24 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 [this message] 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 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=874kawcssr.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: linkBe 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.