Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Fenghua Yu
On Wed, Jun 20, 2018 at 12:34:32AM +0200, Thomas Gleixner wrote:
> On Tue, 19 Jun 2018, Fenghua Yu wrote:
> > On Tue, Jun 19, 2018 at 11:12:05AM +0200, Thomas Gleixner wrote:
> > > On Fri, 15 Jun 2018, Fenghua Yu wrote:
> > > 
> > > > A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> > > > published in the latest Intel Instruction Set Extensions document.
> > > > 
> > > > Define the APIs for user or kernel to use the instructions.
> > > 
> > > You're not defining APIs. You're adding a pile of misdesigned helper
> > > functions which again add static storage per compilation unit and CPUID
> > > fiddling.
> > > 
> > > If you want to add proper APIs then add the stuff to the VDSO and be done
> > > with it.
> > 
> > The user wait instructions are mainly called by user apps; but they can
> > be used in kernel as well.
> > 
> > I'm planning to provide five APIs to user:
> > 1. If user wait feature is supported
> > 2. nsec to tsc translation
> > 3. umonitor function that exectes UMONITOR instruction
> > 4. umwait function that executes UMWAIT instruction
> > 5. tpause function that executes TPAUSE instruction
> > 
> > Seems 1-2 can be implemented in VDSO. But should I implement 3-5 in
> > VDSO/kernel as well?
> 
> If you want a real API, then yes. If not, then an UAPI header is definitely
> not the place for this.

Sure. I will implement the APIs in VDSO.

Thanks.

-Fenghua


Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Fenghua Yu
On Wed, Jun 20, 2018 at 12:34:32AM +0200, Thomas Gleixner wrote:
> On Tue, 19 Jun 2018, Fenghua Yu wrote:
> > On Tue, Jun 19, 2018 at 11:12:05AM +0200, Thomas Gleixner wrote:
> > > On Fri, 15 Jun 2018, Fenghua Yu wrote:
> > > 
> > > > A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> > > > published in the latest Intel Instruction Set Extensions document.
> > > > 
> > > > Define the APIs for user or kernel to use the instructions.
> > > 
> > > You're not defining APIs. You're adding a pile of misdesigned helper
> > > functions which again add static storage per compilation unit and CPUID
> > > fiddling.
> > > 
> > > If you want to add proper APIs then add the stuff to the VDSO and be done
> > > with it.
> > 
> > The user wait instructions are mainly called by user apps; but they can
> > be used in kernel as well.
> > 
> > I'm planning to provide five APIs to user:
> > 1. If user wait feature is supported
> > 2. nsec to tsc translation
> > 3. umonitor function that exectes UMONITOR instruction
> > 4. umwait function that executes UMWAIT instruction
> > 5. tpause function that executes TPAUSE instruction
> > 
> > Seems 1-2 can be implemented in VDSO. But should I implement 3-5 in
> > VDSO/kernel as well?
> 
> If you want a real API, then yes. If not, then an UAPI header is definitely
> not the place for this.

Sure. I will implement the APIs in VDSO.

Thanks.

-Fenghua


Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Thomas Gleixner
On Tue, 19 Jun 2018, Fenghua Yu wrote:
> On Tue, Jun 19, 2018 at 11:12:05AM +0200, Thomas Gleixner wrote:
> > On Fri, 15 Jun 2018, Fenghua Yu wrote:
> > 
> > > A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> > > published in the latest Intel Instruction Set Extensions document.
> > > 
> > > Define the APIs for user or kernel to use the instructions.
> > 
> > You're not defining APIs. You're adding a pile of misdesigned helper
> > functions which again add static storage per compilation unit and CPUID
> > fiddling.
> > 
> > If you want to add proper APIs then add the stuff to the VDSO and be done
> > with it.
> 
> The user wait instructions are mainly called by user apps; but they can
> be used in kernel as well.
> 
> I'm planning to provide five APIs to user:
> 1. If user wait feature is supported
> 2. nsec to tsc translation
> 3. umonitor function that exectes UMONITOR instruction
> 4. umwait function that executes UMWAIT instruction
> 5. tpause function that executes TPAUSE instruction
> 
> Seems 1-2 can be implemented in VDSO. But should I implement 3-5 in
> VDSO/kernel as well?

If you want a real API, then yes. If not, then an UAPI header is definitely
not the place for this.

Thanks

tglx


Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Thomas Gleixner
On Tue, 19 Jun 2018, Fenghua Yu wrote:
> On Tue, Jun 19, 2018 at 11:12:05AM +0200, Thomas Gleixner wrote:
> > On Fri, 15 Jun 2018, Fenghua Yu wrote:
> > 
> > > A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> > > published in the latest Intel Instruction Set Extensions document.
> > > 
> > > Define the APIs for user or kernel to use the instructions.
> > 
> > You're not defining APIs. You're adding a pile of misdesigned helper
> > functions which again add static storage per compilation unit and CPUID
> > fiddling.
> > 
> > If you want to add proper APIs then add the stuff to the VDSO and be done
> > with it.
> 
> The user wait instructions are mainly called by user apps; but they can
> be used in kernel as well.
> 
> I'm planning to provide five APIs to user:
> 1. If user wait feature is supported
> 2. nsec to tsc translation
> 3. umonitor function that exectes UMONITOR instruction
> 4. umwait function that executes UMWAIT instruction
> 5. tpause function that executes TPAUSE instruction
> 
> Seems 1-2 can be implemented in VDSO. But should I implement 3-5 in
> VDSO/kernel as well?

If you want a real API, then yes. If not, then an UAPI header is definitely
not the place for this.

Thanks

tglx


Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Fenghua Yu
On Tue, Jun 19, 2018 at 11:12:05AM +0200, Thomas Gleixner wrote:
> On Fri, 15 Jun 2018, Fenghua Yu wrote:
> 
> > A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> > published in the latest Intel Instruction Set Extensions document.
> > 
> > Define the APIs for user or kernel to use the instructions.
> 
> You're not defining APIs. You're adding a pile of misdesigned helper
> functions which again add static storage per compilation unit and CPUID
> fiddling.
> 
> If you want to add proper APIs then add the stuff to the VDSO and be done
> with it.

The user wait instructions are mainly called by user apps; but they can
be used in kernel as well.

I'm planning to provide five APIs to user:
1. If user wait feature is supported
2. nsec to tsc translation
3. umonitor function that exectes UMONITOR instruction
4. umwait function that executes UMWAIT instruction
5. tpause function that executes TPAUSE instruction

Seems 1-2 can be implemented in VDSO. But should I implement 3-5 in
VDSO/kernel as well?

Thanks.

-Fenghua


Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Fenghua Yu
On Tue, Jun 19, 2018 at 11:12:05AM +0200, Thomas Gleixner wrote:
> On Fri, 15 Jun 2018, Fenghua Yu wrote:
> 
> > A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> > published in the latest Intel Instruction Set Extensions document.
> > 
> > Define the APIs for user or kernel to use the instructions.
> 
> You're not defining APIs. You're adding a pile of misdesigned helper
> functions which again add static storage per compilation unit and CPUID
> fiddling.
> 
> If you want to add proper APIs then add the stuff to the VDSO and be done
> with it.

The user wait instructions are mainly called by user apps; but they can
be used in kernel as well.

I'm planning to provide five APIs to user:
1. If user wait feature is supported
2. nsec to tsc translation
3. umonitor function that exectes UMONITOR instruction
4. umwait function that executes UMWAIT instruction
5. tpause function that executes TPAUSE instruction

Seems 1-2 can be implemented in VDSO. But should I implement 3-5 in
VDSO/kernel as well?

Thanks.

-Fenghua


Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Thomas Gleixner
On Fri, 15 Jun 2018, Fenghua Yu wrote:

> A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> published in the latest Intel Instruction Set Extensions document.
> 
> Define the APIs for user or kernel to use the instructions.

You're not defining APIs. You're adding a pile of misdesigned helper
functions which again add static storage per compilation unit and CPUID
fiddling.

If you want to add proper APIs then add the stuff to the VDSO and be done
with it.

Thanks,

tglx


Re: [RFC PATCH 7/8] x86/lib_user_wait.h: Add APIs for user wait instructions

2018-06-19 Thread Thomas Gleixner
On Fri, 15 Jun 2018, Fenghua Yu wrote:

> A few new user wait instructions UMONITOR, UMWAIT, and TPAUSE are
> published in the latest Intel Instruction Set Extensions document.
> 
> Define the APIs for user or kernel to use the instructions.

You're not defining APIs. You're adding a pile of misdesigned helper
functions which again add static storage per compilation unit and CPUID
fiddling.

If you want to add proper APIs then add the stuff to the VDSO and be done
with it.

Thanks,

tglx