On 02/14/2018 03:19 PM, Ingo Molnar wrote: > > * Tim Chen <tim.c.c...@linux.intel.com> wrote: > >> On 02/14/2018 12:56 AM, Peter Zijlstra wrote: >> >>> >>> At the very least this must disable and re-enable preemption, such that >>> we guarantee we inc/dec the same counter. ISTR some firmware calls (EFI) >>> actually are preemptible so that wouldn't work. >>> >>> Further, consider: >>> >>> this_cpu_inc_return() // 0->1 >>> <NMI> >>> this_cpu_inc_return() // 1->2 >>> call_broken_arse_firmware() >>> this_cpu_dec_return() // 2->1 >>> </NMI> >>> wrmsr(SPEC_CTRL, IBRS); >>> >>> /* from dodgy firmware crap */ >>> >>> this_cpu_dec_return() // 1->0 >>> wrmsr(SPEC_CTRL, 0); >>> >> >> How about the following patch. > > These fragile complications of the interface should now be unnecessary, as > the > only driver that called firmware from NMI callbacks (hpwdt.c) is going to > remove > those firmware callbacks in the near future - solving the problem at the > source. > > Thanks, > > Ingo >
Sounds good. I sent this out before seeing the other mails on removing NMI callbacks from hpwdt.c Tim