Messages in this thread | | | From | Nick Desaulniers <> | Date | Tue, 15 Sep 2020 12:51:47 -0700 | Subject | Re: [PATCH] arch: x86: power: cpu: init %gs before __restore_processor_state (clang) |
| |
On Tue, Sep 15, 2020 at 11:25 AM Borislav Petkov <bp@alien8.de> wrote: > > On Tue, Sep 15, 2020 at 11:00:30AM -0700, Nick Desaulniers wrote: > > This is exactly the same code from __restore_processor_state. > > No, this patch is adding > > #ifdef __clang__ > > and I don't like the sprinkling around of those compiler-specific > workarounds which we have to carry forward forever or at least until > that compiler version is deprecated. We already carry fixes for broken > hardware, broken BIOSes, broken peripherals,... can you follow the > progression? :)
I agree; I also would not have sent the patch though. Until LTO has landed upstream, this is definitely somewhat self inflicted. This was only debugged last week; even with a compiler fix in hand today, it still takes time to ship that compiler and qualify it; for other folks on tighter timelines, I can understand why the patch was sent, and do genuinely appreciate the effort to participate more upstream which I'm trying to encourage more of throughout the company (we're in a lot of technical debt kernel-wise; and I'm not referring to Android...a story over beers perhaps, or ask Greg). It's just that this isn't really appropriate since it works around a bug in a non-upstream feature, and will go away once we fix the toolchain.
> > So your argument about testing unreleased compilers in the other thread > makes a lot of sense so that stuff like that can be fixed in time, and > in the compiler, where it belongs (that is, *if* it belongs there).
It would be much nicer if we had the flexibility to disable stack protectors per function, rather than per translation unit. I'm going to encourage you to encourage your favorite compile vendor ("write to your senator") to support the function attribute __attribute__((no_stack_protector)) so that one day, we can use that to stop shipping crap like a9a3ed1eff360 ("x86: Fix early boot crash on gcc-10, third try"). Having had that, we could have used a nicer workaround until the toolchain was fixed (and one day revert a9a3ed1eff360, and d0a8d9378d16, and probably more hacks in the kernel). And the case that's causing the compiler bug in question is something all compiler vendors will need to consider in their implementations. -- Thanks, ~Nick Desaulniers
| |