All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andy Lutomirski <luto@amacapital.net>,
	Paolo Bonzini <pbonzini@redhat.com>,
	xen-devel <Xen-devel@lists.xen.org>,
	Arjan van de Ven <arjan@linux.intel.com>,
	Borislav Petkov <bp@alien8.de>, X86 ML <x86@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	KVM list <kvm@vger.kernel.org>, Andy Lutomirski <luto@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH v4 2/5] x86/msr: Carry on after a non-"safe" MSR access fails without !panic_on_oops
Date: Tue, 15 Mar 2016 11:21:42 +0100	[thread overview]
Message-ID: <20160315102142.GA23406@gmail.com> (raw)
In-Reply-To: <CA+55aFwr80aZ3-1H4VPB5=jeU_Yt=hYFfFvZC5-cNXzgXxGf3A@mail.gmail.com>


* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> On Mon, Mar 14, 2016 at 10:17 AM, Andy Lutomirski <luto@amacapital.net> wrote:
> >
> > So yes, let's please warn.  I'm okay with removing the panic_on_oops
> > thing though.  (But if anyone suggests that we should stop OOPSing on
> > bad kernel page faults, I *will* fight back.)
> 
> Bad kernel page faults are something completely different. They would
> be actual bugs regardless.
> 
> The MSR thing has *often* been just silly "this CPU doesn't do that
> MSR". Generic bootup setup code etc that just didn't know or care
> about the particular badly documented rule for one particular random
> CPU version and stepping.
> 
> In fact, when I say "often", I suspect I should really just say
> "always". I don't think we've ever found a case where oopsing would
> have been the right thing. But it has definitely caused lots of
> problems, especially in the early paths where your code doesn't even
> work right now.
> 
> Now, when it comes to the warning, I guess I could live with it, but I
> think it's stupid to make this a low-level exception handler thing.
> 
> So what I think should be done:
> 
>  - make sure that wr/rdmsr_safe() actually works during very early
> init. At some point it didn't.
> 
>  - get rid of the current wrmsr/rdmsr *entirely*. It's shit.
> 
>  - Add this wrapper:
> 
>       #define wrmsr(msr, low, high) \
>         WARN_ON_ONCE(wrmsr_safe(msr, low, high))
> 
> and be done with it. We could even decide to make that WARN_ON_ONCE()
> be something we could configure out, because it's really a debugging
> thing and isn't like it should be all that fatal.
> 
> None of this insane complicated crap that buys us exactly *nothing*,
> and depends on fancy new exception handling support etc etc.
> 
> So what's the downside to just doing this simple thing?

This was my original suggestion as well.

The objection was that sometimes it's performance critical. To which I replied 
that 1) I highly doubt that a single extra branch of the check is measurable 2) 
and even if so, then _those_ performance critical cases should be done in some 
special way (rdmsr_nocheck() or whatever) - at which point the argument was that 
there's a lot of such cases.

Which final line of argument I still don't really buy, btw., but it became a me 
against everyone else argument and I cowardly punted.

Now that the 800 lb gorilla is on my side I of course stand my ground, principles 
are principles!

Thanks,

	Ingo

  parent reply	other threads:[~2016-03-15 10:21 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-12 18:08 [PATCH v4 0/5] [PATCH v3 0/5] Improve non-"safe" MSR access failure handling Andy Lutomirski
2016-03-12 18:08 ` [PATCH v4 1/5] x86/paravirt: Add _safe to the read_msr and write_msr PV hooks Andy Lutomirski
2016-03-14 11:57   ` Borislav Petkov
2016-03-14 17:07     ` Andy Lutomirski
2016-03-14 17:07     ` Andy Lutomirski
2016-03-14 11:57   ` Borislav Petkov
2016-03-12 18:08 ` Andy Lutomirski
2016-03-12 18:08 ` [PATCH v4 2/5] x86/msr: Carry on after a non-"safe" MSR access fails without !panic_on_oops Andy Lutomirski
2016-03-14 12:02   ` Borislav Petkov
2016-03-14 12:02   ` Borislav Petkov
2016-03-14 17:05     ` Andy Lutomirski
2016-03-14 17:11       ` Linus Torvalds
2016-03-14 17:17         ` Andy Lutomirski
2016-03-14 18:04           ` Linus Torvalds
2016-03-14 18:10             ` Andy Lutomirski
2016-03-14 18:15               ` Linus Torvalds
2016-03-14 18:15               ` Linus Torvalds
2016-03-14 18:24                 ` Andy Lutomirski
2016-03-14 18:24                 ` Andy Lutomirski
2016-03-14 18:40                   ` Linus Torvalds
2016-03-14 18:48                     ` Andy Lutomirski
2016-03-15 10:22                       ` Ingo Molnar
2016-03-15 10:26                         ` Ingo Molnar
2016-03-15 10:26                         ` Ingo Molnar
2016-03-15 10:22                       ` Ingo Molnar
2016-03-14 18:48                     ` Andy Lutomirski
2016-03-14 18:40                   ` Linus Torvalds
2016-03-14 20:18               ` Peter Zijlstra
2016-03-14 20:18               ` Peter Zijlstra
2016-03-14 18:10             ` Andy Lutomirski
2016-03-14 18:10             ` Linus Torvalds
2016-03-14 18:10             ` Linus Torvalds
2016-03-15 10:21             ` Ingo Molnar
2016-03-15 10:21             ` Ingo Molnar [this message]
2016-03-14 18:04           ` Linus Torvalds
2016-03-14 17:17         ` Andy Lutomirski
2016-03-14 17:05     ` Andy Lutomirski
2016-03-12 18:08 ` Andy Lutomirski
2016-03-12 18:08 ` [PATCH v4 3/5] x86/paravirt: Add paravirt_{read,write}_msr Andy Lutomirski
2016-03-12 18:08 ` [PATCH v4 3/5] x86/paravirt: Add paravirt_{read, write}_msr Andy Lutomirski
2016-03-12 18:08 ` [PATCH v4 4/5] x86/paravirt: Make "unsafe" MSR accesses unsafe even if PARAVIRT=y Andy Lutomirski
2016-03-12 18:08 ` Andy Lutomirski
2016-03-12 18:08 ` [PATCH v4 5/5] x86/msr: Set the return value to zero when native_rdmsr_safe fails Andy Lutomirski
2016-03-12 18:08   ` Andy Lutomirski
2016-03-14 14:32 ` [Xen-devel] [PATCH v4 0/5] [PATCH v3 0/5] Improve non-"safe" MSR access failure handling Boris Ostrovsky
2016-03-14 14:32 ` Boris Ostrovsky

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=20160315102142.GA23406@gmail.com \
    --to=mingo@kernel.org \
    --cc=Xen-devel@lists.xen.org \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=luto@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /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: link
Be 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.