All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@amacapital.net>
To: Ingo Molnar <mingo@kernel.org>
Cc: "Thomas Gleixner" <tglx@linutronix.de>,
	"Ingo Molnar" <mingo@redhat.com>, "Jeff Dike" <jdike@addtoit.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"open list:KERNEL SELFTEST FRAMEWORK"
	<linux-kselftest@vger.kernel.org>,
	"Dmitry Safonov" <dsafonov@virtuozzo.com>,
	"Nadav Amit" <nadav.amit@gmail.com>,
	"Alexander Viro" <viro@zeniv.linux.org.uk>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	"Linux FS Devel" <linux-fsdevel@vger.kernel.org>,
	"kvm list" <kvm@vger.kernel.org>,
	"user-mode-linux-devel@lists.sourceforge.net"
	<user-mode-linux-devel@lists.sourceforge.net>,
	"X86 ML" <x86@kernel.org>,
	"open list:USER-MODE LINUX (UML)"
	<user-mode-linux-user@lists.sourceforge.net>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Kyle Huey" <me@kylehuey.com>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	"Robert O'Callahan" <robert@ocallahan.org>,
	"Boris Ostrovsky" <boris.ostrovsky@oracle.com>,
	"Shuah Khan" <shuah@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"David Matlack" <dmatlack@google.com>,
	"Borislav Petkov" <bp@suse.de>, "Len Brown" <len.brown@intel.com>,
	"Richard Weinberger" <richard@nod.at>,
	"H. Peter Anvin" <hpa@zytor.com>,
	"Peter Zijlstra" <peterz@infradead.org>
Subject: Re: [PATCH v12 6/7] x86/arch_prctl: Add ARCH_[GET|SET]_CPUID
Date: Tue, 22 Nov 2016 09:26:11 -0800	[thread overview]
Message-ID: <CALCETrVayvjbnF_ancsnUKqaMPiPduAhrykU7McU6VpouLZDnA@mail.gmail.com> (raw)
In-Reply-To: <20161121082721.GA22520@gmail.com>

On Nov 21, 2016 12:27 AM, "Ingo Molnar" <mingo@kernel.org> wrote:
>
>
> * Thomas Gleixner <tglx@linutronix.de> wrote:
>
> > On Fri, 18 Nov 2016, Ingo Molnar wrote:
> > > * Kyle Huey <me@kylehuey.com> wrote:
> > > > + if (test_tsk_thread_flag(prev_p, TIF_NOCPUID) ^
> > > > +     test_tsk_thread_flag(next_p, TIF_NOCPUID)) {
> > > > +         set_cpuid_faulting(test_tsk_thread_flag(next_p, TIF_NOCPUID));
> > > > + }
> > > > +
> > >
> > > Why not cache the required MSR value in the task struct instead?
> > >
> > > That would allow something much more obvious and much faster, like:
> > >
> > >     if (prev_p->thread.misc_features_val != next_p->thread.misc_features_val)
> > >             wrmsrl(MSR_MISC_FEATURES_ENABLES, next_p->thread.misc_features_val);
> > >
> > > (The TIF flag maintenance is still required to get into __switch_to_xtra().)
> > >
> > > It would also be easy to extend without extra overhead, should any other feature
> > > bit be added to the MSR in the future.
> >
> > I doubt that. There are feature enable bits coming up which are not related to
> > tasks.
>
> Any inefficiencies resulting from such features should IMHO be carried by those
> features, not by per task features - but:
>
> > [...] So if we have switches enabling/disabling global features, then we would
> > be forced to chase all threads in order to update all misc_features thread
> > variables. Surely not what we want to do.
>
> What switches would those be? We generally don't twiddle global CPU features post
> bootup - we pick a model on bootup and go with that.

I don't see what problem we're trying to solve here.  If we end up
with a mix of global (and changeable!) features and per-task features,
we can just do:

wrmsrl(MSR_MISC_FEATURES_ENABLES, global_misc_features_val |
next_p->thread.misc_features_val);

This is *still* way faster than rdmsr.

WARNING: multiple messages have this Message-ID (diff)
From: Andy Lutomirski <luto@amacapital.net>
To: Ingo Molnar <mingo@kernel.org>
Cc: "Thomas Gleixner" <tglx@linutronix.de>,
	"Ingo Molnar" <mingo@redhat.com>, "Jeff Dike" <jdike@addtoit.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"open list:KERNEL SELFTEST FRAMEWORK"
	<linux-kselftest@vger.kernel.org>,
	"Dmitry Safonov" <dsafonov@virtuozzo.com>,
	"Nadav Amit" <nadav.amit@gmail.com>,
	"Alexander Viro" <viro@zeniv.linux.org.uk>,
	"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
	"Linux FS Devel" <linux-fsdevel@vger.kernel.org>,
	"kvm list" <kvm@vger.kernel.org>,
	"user-mode-linux-devel@lists.sourceforge.net"
	<user-mode-linux-devel@lists.sourceforge.net>,
	"X86 ML" <x86@kernel.org>,
	"open list:USER-MODE LINUX (UML)"
	<user-mode-linux-user@lists.sourceforge.net>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Kyle Huey" <me@kylehuey.com>
Subject: Re: [PATCH v12 6/7] x86/arch_prctl: Add ARCH_[GET|SET]_CPUID
Date: Tue, 22 Nov 2016 09:26:11 -0800	[thread overview]
Message-ID: <CALCETrVayvjbnF_ancsnUKqaMPiPduAhrykU7McU6VpouLZDnA@mail.gmail.com> (raw)
In-Reply-To: <20161121082721.GA22520@gmail.com>

On Nov 21, 2016 12:27 AM, "Ingo Molnar" <mingo@kernel.org> wrote:
>
>
> * Thomas Gleixner <tglx@linutronix.de> wrote:
>
> > On Fri, 18 Nov 2016, Ingo Molnar wrote:
> > > * Kyle Huey <me@kylehuey.com> wrote:
> > > > + if (test_tsk_thread_flag(prev_p, TIF_NOCPUID) ^
> > > > +     test_tsk_thread_flag(next_p, TIF_NOCPUID)) {
> > > > +         set_cpuid_faulting(test_tsk_thread_flag(next_p, TIF_NOCPUID));
> > > > + }
> > > > +
> > >
> > > Why not cache the required MSR value in the task struct instead?
> > >
> > > That would allow something much more obvious and much faster, like:
> > >
> > >     if (prev_p->thread.misc_features_val != next_p->thread.misc_features_val)
> > >             wrmsrl(MSR_MISC_FEATURES_ENABLES, next_p->thread.misc_features_val);
> > >
> > > (The TIF flag maintenance is still required to get into __switch_to_xtra().)
> > >
> > > It would also be easy to extend without extra overhead, should any other feature
> > > bit be added to the MSR in the future.
> >
> > I doubt that. There are feature enable bits coming up which are not related to
> > tasks.
>
> Any inefficiencies resulting from such features should IMHO be carried by those
> features, not by per task features - but:
>
> > [...] So if we have switches enabling/disabling global features, then we would
> > be forced to chase all threads in order to update all misc_features thread
> > variables. Surely not what we want to do.
>
> What switches would those be? We generally don't twiddle global CPU features post
> bootup - we pick a model on bootup and go with that.

I don't see what problem we're trying to solve here.  If we end up
with a mix of global (and changeable!) features and per-task features,
we can just do:

wrmsrl(MSR_MISC_FEATURES_ENABLES, global_misc_features_val |
next_p->thread.misc_features_val);

This is *still* way faster than rdmsr.

  reply	other threads:[~2016-11-22 17:26 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-17  2:06 [PATCH v12 0/7] x86/arch_prctl Add ARCH_[GET|SET]_CPUID for controlling the CPUID instruction Kyle Huey
2016-11-17  2:06 ` Kyle Huey
2016-11-17  2:06 ` [PATCH v12 1/7] x86/arch_prctl/64: Use SYSCALL_DEFINE2 to define sys_arch_prctl Kyle Huey
2016-11-17  2:06   ` Kyle Huey
2016-11-17  2:06 ` [PATCH v12 2/7] x86/arch_prctl/64: Rename do_arch_prctl to do_arch_prctl_64 Kyle Huey
2016-11-17  2:06   ` Kyle Huey
2016-11-18  7:27   ` Ingo Molnar
2016-11-18  7:27     ` Ingo Molnar
2016-11-18  7:28     ` Thomas Gleixner
2016-11-18  7:28       ` Thomas Gleixner
2016-11-18  8:16       ` Ingo Molnar
2016-11-18  8:16         ` Ingo Molnar
2016-11-18 16:39     ` Kyle Huey
2016-11-18 16:39       ` Kyle Huey
2016-11-29  9:26       ` Ingo Molnar
2016-11-29  9:26         ` Ingo Molnar
2016-11-17  2:06 ` [PATCH v12 3/7] x86/arch_prctl: Add do_arch_prctl_common Kyle Huey
2016-11-17  2:06   ` Kyle Huey
2016-11-17  2:06 ` [PATCH v12 4/7] x86/syscalls/32: Wire up arch_prctl on x86-32 Kyle Huey
2016-11-17  2:06   ` Kyle Huey
2016-11-18  7:30   ` Ingo Molnar
2016-11-18  7:30     ` Ingo Molnar
2016-11-17  2:06 ` [PATCH v12 5/7] x86/cpufeature: Detect CPUID faulting support Kyle Huey
2016-11-17  2:06   ` Kyle Huey
2016-11-17 16:51   ` Borislav Petkov
2016-11-17 16:51     ` Borislav Petkov
2016-11-17  2:06 ` [PATCH v12 6/7] x86/arch_prctl: Add ARCH_[GET|SET]_CPUID Kyle Huey
2016-11-17  2:06   ` Kyle Huey
2016-11-18  8:14   ` Ingo Molnar
2016-11-18  8:14     ` Ingo Molnar
2016-11-18  8:49     ` Thomas Gleixner
2016-11-18  8:49       ` Thomas Gleixner
2016-11-21  8:27       ` Ingo Molnar
2016-11-21  8:27         ` Ingo Molnar
2016-11-22 17:26         ` Andy Lutomirski [this message]
2016-11-22 17:26           ` Andy Lutomirski
2016-11-18 15:55     ` Kyle Huey
2016-11-18 15:55       ` Kyle Huey
2016-11-18 17:32     ` Andy Lutomirski
2016-11-18 17:32       ` Andy Lutomirski
2016-11-17  2:06 ` [PATCH v12 7/7] KVM: x86: virtualize cpuid faulting Kyle Huey
2016-11-17  2:06   ` Kyle Huey
2016-11-17 12:31   ` Paolo Bonzini
2016-11-17 12:31     ` Paolo Bonzini

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=CALCETrVayvjbnF_ancsnUKqaMPiPduAhrykU7McU6VpouLZDnA@mail.gmail.com \
    --to=luto@amacapital.net \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@suse.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=dmatlack@google.com \
    --cc=dsafonov@virtuozzo.com \
    --cc=hpa@zytor.com \
    --cc=jdike@addtoit.com \
    --cc=kvm@vger.kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=me@kylehuey.com \
    --cc=mingo@kernel.org \
    --cc=mingo@redhat.com \
    --cc=nadav.amit@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rafael.j.wysocki@intel.com \
    --cc=richard@nod.at \
    --cc=rkrcmar@redhat.com \
    --cc=robert@ocallahan.org \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=user-mode-linux-devel@lists.sourceforge.net \
    --cc=user-mode-linux-user@lists.sourceforge.net \
    --cc=viro@zeniv.linux.org.uk \
    --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.