From: Ard Biesheuvel <ardb@kernel.org> To: Keith Packard <keithp@keithp.com> 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, 7 Sep 2021 18:05:47 +0200 [thread overview] Message-ID: <CAMj1kXHA-GiAj2u4vRbEsnJ6O=cxiNOEgPHWHP+71dB-sp9Nww@mail.gmail.com> (raw) In-Reply-To: <874kawcssr.fsf@keithp.com> On Tue, 7 Sept 2021 at 17:24, Keith Packard <keithp@keithp.com> wrote: > > 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. > That is still a bit tricky, given that you now have to swap out the per-CPU offset when you migrate a task, and the generic code is not really set up for that. > > 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. > I had a stab at this myself today (long boring day with no Internet connection). https://android-kvm.googlesource.com/linux/+log/refs/heads/ardb/arm32-ti-in-task It resembles your code in some places - I suppose we went on the same journey in a sense :-) We'll fix up the credits before this gets resubmitted. Fixing the per-task stack protector plugin on top of these changes should be trivial but I need a coffee first.
WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org> To: Keith Packard <keithp@keithp.com> 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, 7 Sep 2021 18:05:47 +0200 [thread overview] Message-ID: <CAMj1kXHA-GiAj2u4vRbEsnJ6O=cxiNOEgPHWHP+71dB-sp9Nww@mail.gmail.com> (raw) In-Reply-To: <874kawcssr.fsf@keithp.com> On Tue, 7 Sept 2021 at 17:24, Keith Packard <keithp@keithp.com> wrote: > > 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. > That is still a bit tricky, given that you now have to swap out the per-CPU offset when you migrate a task, and the generic code is not really set up for that. > > 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. > I had a stab at this myself today (long boring day with no Internet connection). https://android-kvm.googlesource.com/linux/+log/refs/heads/ardb/arm32-ti-in-task It resembles your code in some places - I suppose we went on the same journey in a sense :-) We'll fix up the credits before this gets resubmitted. Fixing the per-task stack protector plugin on top of these changes should be trivial but I need a coffee first. _______________________________________________ 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 16:06 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 [this message] 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='CAMj1kXHA-GiAj2u4vRbEsnJ6O=cxiNOEgPHWHP+71dB-sp9Nww@mail.gmail.com' \ --to=ardb@kernel.org \ --cc=akpm@linux-foundation.org \ --cc=alexander.sverdlin@gmail.com \ --cc=anshuman.khandual@arm.com \ --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=keithp@keithp.com \ --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.