Patchwork powerpc/pseries: Use new defines when calling h_set_mode

login
register
mail settings
Submitter Michael Neuling
Date May 29, 2014, 7:45 a.m.
Message ID <1401349547.4116.19.camel@ale.ozlabs.ibm.com>
Download mbox | patch
Permalink /patch/353694/
State New
Headers show

Comments

Michael Neuling - May 29, 2014, 7:45 a.m.
> > +/* Values for 2nd argument to H_SET_MODE */
> > +#define H_SET_MODE_RESOURCE_SET_CIABR        1
> > +#define H_SET_MODE_RESOURCE_SET_DAWR        2
> > +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE    3
> > +#define H_SET_MODE_RESOURCE_LE            4
> 
> 
> Much better, but I think you want to make use of these in non-kvm code too,
> no? At least the LE one is definitely already implemented as call :)

Sure but that's a different patch.... below.

Mikey


powerpc/pseries: Use new defines when calling h_set_mode

Now that we define these in the KVM code, use these defines when we call
h_set_mode.  No functional change.

Signed-off-by: Michael Neuling <mikey@neuling.org>
--
This depends on the KVM h_set_mode patches.
Alexander Graf - May 29, 2014, 9:27 p.m.
On 29.05.14 09:45, Michael Neuling wrote:
>>> +/* Values for 2nd argument to H_SET_MODE */
>>> +#define H_SET_MODE_RESOURCE_SET_CIABR        1
>>> +#define H_SET_MODE_RESOURCE_SET_DAWR        2
>>> +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE    3
>>> +#define H_SET_MODE_RESOURCE_LE            4
>>
>> Much better, but I think you want to make use of these in non-kvm code too,
>> no? At least the LE one is definitely already implemented as call :)
> Sure but that's a different patch.... below.

Ben, how would you like to handle these 2 patches? If you give me an ack 
I can just put this patch into my kvm queue. Alternatively we could both 
carry a patch that adds the H_SET_MODE header bits only and whoever hits 
Linus' tree first wins ;).


Alex

>
> Mikey
>
>
> powerpc/pseries: Use new defines when calling h_set_mode
>
> Now that we define these in the KVM code, use these defines when we call
> h_set_mode.  No functional change.
>
> Signed-off-by: Michael Neuling <mikey@neuling.org>
> --
> This depends on the KVM h_set_mode patches.
>
> diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
> index 12c32c5..67859ed 100644
> --- a/arch/powerpc/include/asm/plpar_wrappers.h
> +++ b/arch/powerpc/include/asm/plpar_wrappers.h
> @@ -273,7 +273,7 @@ static inline long plpar_set_mode(unsigned long mflags, unsigned long resource,
>   static inline long enable_reloc_on_exceptions(void)
>   {
>   	/* mflags = 3: Exceptions at 0xC000000000004000 */
> -	return plpar_set_mode(3, 3, 0, 0);
> +	return plpar_set_mode(3, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
>   }
>   
>   /*
> @@ -284,7 +284,7 @@ static inline long enable_reloc_on_exceptions(void)
>    * returns H_SUCCESS.
>    */
>   static inline long disable_reloc_on_exceptions(void) {
> -	return plpar_set_mode(0, 3, 0, 0);
> +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
>   }
>   
>   /*
> @@ -297,7 +297,7 @@ static inline long disable_reloc_on_exceptions(void) {
>   static inline long enable_big_endian_exceptions(void)
>   {
>   	/* mflags = 0: big endian exceptions */
> -	return plpar_set_mode(0, 4, 0, 0);
> +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_LE, 0, 0);
>   }
>   
>   /*
> @@ -310,17 +310,17 @@ static inline long enable_big_endian_exceptions(void)
>   static inline long enable_little_endian_exceptions(void)
>   {
>   	/* mflags = 1: little endian exceptions */
> -	return plpar_set_mode(1, 4, 0, 0);
> +	return plpar_set_mode(1, H_SET_MODE_RESOURCE_LE, 0, 0);
>   }
>   
>   static inline long plapr_set_ciabr(unsigned long ciabr)
>   {
> -	return plpar_set_mode(0, 1, ciabr, 0);
> +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_SET_CIABR, ciabr, 0);
>   }
>   
>   static inline long plapr_set_watchpoint0(unsigned long dawr0, unsigned long dawrx0)
>   {
> -	return plpar_set_mode(0, 2, dawr0, dawrx0);
> +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_SET_DAWR, dawr0, dawrx0);
>   }
>   
>   #endif /* _ASM_POWERPC_PLPAR_WRAPPERS_H */
>
Benjamin Herrenschmidt - May 29, 2014, 9:52 p.m.
On Thu, 2014-05-29 at 23:27 +0200, Alexander Graf wrote:
> On 29.05.14 09:45, Michael Neuling wrote:
> >>> +/* Values for 2nd argument to H_SET_MODE */
> >>> +#define H_SET_MODE_RESOURCE_SET_CIABR        1
> >>> +#define H_SET_MODE_RESOURCE_SET_DAWR        2
> >>> +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE    3
> >>> +#define H_SET_MODE_RESOURCE_LE            4
> >>
> >> Much better, but I think you want to make use of these in non-kvm code too,
> >> no? At least the LE one is definitely already implemented as call :)
> > Sure but that's a different patch.... below.
> 
> Ben, how would you like to handle these 2 patches? If you give me an ack 
> I can just put this patch into my kvm queue. Alternatively we could both 
> carry a patch that adds the H_SET_MODE header bits only and whoever hits 
> Linus' tree first wins ;).

No biggie. Worst case it's a trivial conflict.

Cheers,
Ben.

> 
> Alex
> 
> >
> > Mikey
> >
> >
> > powerpc/pseries: Use new defines when calling h_set_mode
> >
> > Now that we define these in the KVM code, use these defines when we call
> > h_set_mode.  No functional change.
> >
> > Signed-off-by: Michael Neuling <mikey@neuling.org>
> > --
> > This depends on the KVM h_set_mode patches.
> >
> > diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
> > index 12c32c5..67859ed 100644
> > --- a/arch/powerpc/include/asm/plpar_wrappers.h
> > +++ b/arch/powerpc/include/asm/plpar_wrappers.h
> > @@ -273,7 +273,7 @@ static inline long plpar_set_mode(unsigned long mflags, unsigned long resource,
> >   static inline long enable_reloc_on_exceptions(void)
> >   {
> >   	/* mflags = 3: Exceptions at 0xC000000000004000 */
> > -	return plpar_set_mode(3, 3, 0, 0);
> > +	return plpar_set_mode(3, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
> >   }
> >   
> >   /*
> > @@ -284,7 +284,7 @@ static inline long enable_reloc_on_exceptions(void)
> >    * returns H_SUCCESS.
> >    */
> >   static inline long disable_reloc_on_exceptions(void) {
> > -	return plpar_set_mode(0, 3, 0, 0);
> > +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
> >   }
> >   
> >   /*
> > @@ -297,7 +297,7 @@ static inline long disable_reloc_on_exceptions(void) {
> >   static inline long enable_big_endian_exceptions(void)
> >   {
> >   	/* mflags = 0: big endian exceptions */
> > -	return plpar_set_mode(0, 4, 0, 0);
> > +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_LE, 0, 0);
> >   }
> >   
> >   /*
> > @@ -310,17 +310,17 @@ static inline long enable_big_endian_exceptions(void)
> >   static inline long enable_little_endian_exceptions(void)
> >   {
> >   	/* mflags = 1: little endian exceptions */
> > -	return plpar_set_mode(1, 4, 0, 0);
> > +	return plpar_set_mode(1, H_SET_MODE_RESOURCE_LE, 0, 0);
> >   }
> >   
> >   static inline long plapr_set_ciabr(unsigned long ciabr)
> >   {
> > -	return plpar_set_mode(0, 1, ciabr, 0);
> > +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_SET_CIABR, ciabr, 0);
> >   }
> >   
> >   static inline long plapr_set_watchpoint0(unsigned long dawr0, unsigned long dawrx0)
> >   {
> > -	return plpar_set_mode(0, 2, dawr0, dawrx0);
> > +	return plpar_set_mode(0, H_SET_MODE_RESOURCE_SET_DAWR, dawr0, dawrx0);
> >   }
> >   
> >   #endif /* _ASM_POWERPC_PLPAR_WRAPPERS_H */
> >
Alexander Graf - May 30, 2014, 7:44 a.m.
On 29.05.14 23:52, Benjamin Herrenschmidt wrote:
> On Thu, 2014-05-29 at 23:27 +0200, Alexander Graf wrote:
>> On 29.05.14 09:45, Michael Neuling wrote:
>>>>> +/* Values for 2nd argument to H_SET_MODE */
>>>>> +#define H_SET_MODE_RESOURCE_SET_CIABR        1
>>>>> +#define H_SET_MODE_RESOURCE_SET_DAWR        2
>>>>> +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE    3
>>>>> +#define H_SET_MODE_RESOURCE_LE            4
>>>> Much better, but I think you want to make use of these in non-kvm code too,
>>>> no? At least the LE one is definitely already implemented as call :)
>>> Sure but that's a different patch.... below.
>> Ben, how would you like to handle these 2 patches? If you give me an ack
>> I can just put this patch into my kvm queue. Alternatively we could both
>> carry a patch that adds the H_SET_MODE header bits only and whoever hits
>> Linus' tree first wins ;).
> No biggie. Worst case it's a trivial conflict.

Well, the way the patches are split right now it won't be a conflict, 
but a build failure on either side.


Alex
Michael Ellerman - May 30, 2014, 8:56 a.m.
On Thu, 2014-05-29 at 17:45 +1000, Michael Neuling wrote:
> > > +/* Values for 2nd argument to H_SET_MODE */
> > > +#define H_SET_MODE_RESOURCE_SET_CIABR        1
> > > +#define H_SET_MODE_RESOURCE_SET_DAWR        2
> > > +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE    3
> > > +#define H_SET_MODE_RESOURCE_LE            4
> > 
> > Much better, but I think you want to make use of these in non-kvm code too,
> > no? At least the LE one is definitely already implemented as call :)
> 
> powerpc/pseries: Use new defines when calling h_set_mode
> 
> Now that we define these in the KVM code, use these defines when we call
> h_set_mode.  No functional change.
> 
> Signed-off-by: Michael Neuling <mikey@neuling.org>
> --
> This depends on the KVM h_set_mode patches.
> 
> diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
> index 12c32c5..67859ed 100644
> --- a/arch/powerpc/include/asm/plpar_wrappers.h
> +++ b/arch/powerpc/include/asm/plpar_wrappers.h
> @@ -273,7 +273,7 @@ static inline long plpar_set_mode(unsigned long mflags, unsigned long resource,
>  static inline long enable_reloc_on_exceptions(void)
>  {
>  	/* mflags = 3: Exceptions at 0xC000000000004000 */
> -	return plpar_set_mode(3, 3, 0, 0);
> +	return plpar_set_mode(3, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
>  }

Which header are these coming from, and why aren't we including it? And is it
going to still build with CONFIG_KVM=n?

cheers
Michael Neuling - May 30, 2014, 9:10 a.m.
On Fri, 2014-05-30 at 18:56 +1000, Michael Ellerman wrote:
> On Thu, 2014-05-29 at 17:45 +1000, Michael Neuling wrote:
> > > > +/* Values for 2nd argument to H_SET_MODE */
> > > > +#define H_SET_MODE_RESOURCE_SET_CIABR        1
> > > > +#define H_SET_MODE_RESOURCE_SET_DAWR        2
> > > > +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE    3
> > > > +#define H_SET_MODE_RESOURCE_LE            4
> > > 
> > > Much better, but I think you want to make use of these in non-kvm code too,
> > > no? At least the LE one is definitely already implemented as call :)
> > 
> > powerpc/pseries: Use new defines when calling h_set_mode
> > 
> > Now that we define these in the KVM code, use these defines when we call
> > h_set_mode.  No functional change.
> > 
> > Signed-off-by: Michael Neuling <mikey@neuling.org>
> > --
> > This depends on the KVM h_set_mode patches.
> > 
> > diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
> > index 12c32c5..67859ed 100644
> > --- a/arch/powerpc/include/asm/plpar_wrappers.h
> > +++ b/arch/powerpc/include/asm/plpar_wrappers.h
> > @@ -273,7 +273,7 @@ static inline long plpar_set_mode(unsigned long mflags, unsigned long resource,
> >  static inline long enable_reloc_on_exceptions(void)
> >  {
> >  	/* mflags = 3: Exceptions at 0xC000000000004000 */
> > -	return plpar_set_mode(3, 3, 0, 0);
> > +	return plpar_set_mode(3, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
> >  }
> 
> Which header are these coming from, and why aren't we including it? And is it
> going to still build with CONFIG_KVM=n?

From include/asm/hvcall.h in the h_set_mode patch set I sent before.

And yes it compiles with CONFIG_KVM=n fine.

Mikey
Alexander Graf - May 30, 2014, 9:13 a.m.
On 30.05.14 11:10, Michael Neuling wrote:
> On Fri, 2014-05-30 at 18:56 +1000, Michael Ellerman wrote:
>> On Thu, 2014-05-29 at 17:45 +1000, Michael Neuling wrote:
>>>>> +/* Values for 2nd argument to H_SET_MODE */
>>>>> +#define H_SET_MODE_RESOURCE_SET_CIABR        1
>>>>> +#define H_SET_MODE_RESOURCE_SET_DAWR        2
>>>>> +#define H_SET_MODE_RESOURCE_ADDR_TRANS_MODE    3
>>>>> +#define H_SET_MODE_RESOURCE_LE            4
>>>> Much better, but I think you want to make use of these in non-kvm code too,
>>>> no? At least the LE one is definitely already implemented as call :)
>>> powerpc/pseries: Use new defines when calling h_set_mode
>>>
>>> Now that we define these in the KVM code, use these defines when we call
>>> h_set_mode.  No functional change.
>>>
>>> Signed-off-by: Michael Neuling <mikey@neuling.org>
>>> --
>>> This depends on the KVM h_set_mode patches.
>>>
>>> diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
>>> index 12c32c5..67859ed 100644
>>> --- a/arch/powerpc/include/asm/plpar_wrappers.h
>>> +++ b/arch/powerpc/include/asm/plpar_wrappers.h
>>> @@ -273,7 +273,7 @@ static inline long plpar_set_mode(unsigned long mflags, unsigned long resource,
>>>   static inline long enable_reloc_on_exceptions(void)
>>>   {
>>>   	/* mflags = 3: Exceptions at 0xC000000000004000 */
>>> -	return plpar_set_mode(3, 3, 0, 0);
>>> +	return plpar_set_mode(3, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
>>>   }
>> Which header are these coming from, and why aren't we including it? And is it
>> going to still build with CONFIG_KVM=n?
>  From include/asm/hvcall.h in the h_set_mode patch set I sent before.
>
> And yes it compiles with CONFIG_KVM=n fine.

Please split that patch into one that adds the definitions and one that 
changes the KVM code to use those definitions. Both Ben and me can then 
apply the definition patch and our respective tree patch.


Alex
Michael Neuling - May 30, 2014, 9:44 a.m.
>>>
>>> Which header are these coming from, and why aren't we including it? And
is it
>>> going to still build with CONFIG_KVM=n?
>>
>>  From include/asm/hvcall.h in the h_set_mode patch set I sent before.
>>
>> And yes it compiles with CONFIG_KVM=n fine.
>
>
> Please split that patch into one that adds the definitions and one that
changes the KVM code to use those definitions. Both Ben and me can then
apply the definition patch and our respective tree patch.
>

Why don't you just take the original h_set_mode patch and I'll repost this
cleanup later to ben when yours is upstream.  This cleanup patch is not
critical to anything and it avoid more churn.

Mikey
Alexander Graf - May 30, 2014, 9:44 a.m.
On 30.05.14 11:44, Michael Neuling wrote:
>
>
> >>>
> >>> Which header are these coming from, and why aren't we including 
> it? And is it
> >>> going to still build with CONFIG_KVM=n?
> >>
> >>  From include/asm/hvcall.h in the h_set_mode patch set I sent before.
> >>
> >> And yes it compiles with CONFIG_KVM=n fine.
> >
> >
> > Please split that patch into one that adds the definitions and one 
> that changes the KVM code to use those definitions. Both Ben and me 
> can then apply the definition patch and our respective tree patch.
> >
>
> Why don't you just take the original h_set_mode patch and I'll repost 
> this cleanup later to ben when yours is upstream.  This cleanup patch 
> is not critical to anything and it avoid more churn.
>

That works too, but please keep in mind that my path to upstream is much 
longer than what you're used to ;).


Alex

Patch

diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
index 12c32c5..67859ed 100644
--- a/arch/powerpc/include/asm/plpar_wrappers.h
+++ b/arch/powerpc/include/asm/plpar_wrappers.h
@@ -273,7 +273,7 @@  static inline long plpar_set_mode(unsigned long mflags, unsigned long resource,
 static inline long enable_reloc_on_exceptions(void)
 {
 	/* mflags = 3: Exceptions at 0xC000000000004000 */
-	return plpar_set_mode(3, 3, 0, 0);
+	return plpar_set_mode(3, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
 }
 
 /*
@@ -284,7 +284,7 @@  static inline long enable_reloc_on_exceptions(void)
  * returns H_SUCCESS.
  */
 static inline long disable_reloc_on_exceptions(void) {
-	return plpar_set_mode(0, 3, 0, 0);
+	return plpar_set_mode(0, H_SET_MODE_RESOURCE_ADDR_TRANS_MODE, 0, 0);
 }
 
 /*
@@ -297,7 +297,7 @@  static inline long disable_reloc_on_exceptions(void) {
 static inline long enable_big_endian_exceptions(void)
 {
 	/* mflags = 0: big endian exceptions */
-	return plpar_set_mode(0, 4, 0, 0);
+	return plpar_set_mode(0, H_SET_MODE_RESOURCE_LE, 0, 0);
 }
 
 /*
@@ -310,17 +310,17 @@  static inline long enable_big_endian_exceptions(void)
 static inline long enable_little_endian_exceptions(void)
 {
 	/* mflags = 1: little endian exceptions */
-	return plpar_set_mode(1, 4, 0, 0);
+	return plpar_set_mode(1, H_SET_MODE_RESOURCE_LE, 0, 0);
 }
 
 static inline long plapr_set_ciabr(unsigned long ciabr)
 {
-	return plpar_set_mode(0, 1, ciabr, 0);
+	return plpar_set_mode(0, H_SET_MODE_RESOURCE_SET_CIABR, ciabr, 0);
 }
 
 static inline long plapr_set_watchpoint0(unsigned long dawr0, unsigned long dawrx0)
 {
-	return plpar_set_mode(0, 2, dawr0, dawrx0);
+	return plpar_set_mode(0, H_SET_MODE_RESOURCE_SET_DAWR, dawr0, dawrx0);
 }
 
 #endif /* _ASM_POWERPC_PLPAR_WRAPPERS_H */