From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1032582AbeBOCBp (ORCPT ); Wed, 14 Feb 2018 21:01:45 -0500 Received: from mga06.intel.com ([134.134.136.31]:9131 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1032245AbeBOCBn (ORCPT ); Wed, 14 Feb 2018 21:01:43 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,515,1511856000"; d="scan'208";a="204327441" Subject: Re: [tip:x86/pti] x86/speculation: Use IBRS if available before calling into firmware To: Ingo Molnar Cc: Peter Zijlstra , Dave Hansen , hpa@zytor.com, tglx@linutronix.de, torvalds@linux-foundation.org, linux-kernel@vger.kernel.org, dwmw@amazon.co.uk, linux-tip-commits@vger.kernel.org, Borislav Petkov , Arjan van de Ven References: <1518362359-1005-1-git-send-email-dwmw@amazon.co.uk> <20180212102211.cdrrqqd4hdw7xu5y@gmail.com> <20180212165835.GO25181@hirez.programming.kicks-ass.net> <20180213075540.3lkikkpgjoe6ocjk@gmail.com> <5c3ba123-abbe-f153-7b75-a89d31d25c72@linux.intel.com> <20180214085614.GT25181@hirez.programming.kicks-ass.net> <1fd7c8ef-a50c-53d8-7159-d992e669c2f2@linux.intel.com> <20180214231904.ww46gjnytbx3jqef@gmail.com> From: Tim Chen Message-ID: <97bc2ca2-7d5b-c206-5c23-902ed3586256@linux.intel.com> Date: Wed, 14 Feb 2018 18:01:41 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 MIME-Version: 1.0 In-Reply-To: <20180214231904.ww46gjnytbx3jqef@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/14/2018 03:19 PM, Ingo Molnar wrote: > > * Tim Chen 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 >>> >>> this_cpu_inc_return() // 1->2 >>> call_broken_arse_firmware() >>> this_cpu_dec_return() // 2->1 >>> >>> 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