diff mbox

powerpc/pseries: Use new defines when calling h_set_mode

Message ID 1401349547.4116.19.camel@ale.ozlabs.ibm.com
State New, archived
Headers show

Commit Message

Michael Neuling May 29, 2014, 7:45 a.m. UTC
> > +/* 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.


--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Alexander Graf May 29, 2014, 9:27 p.m. UTC | #1
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 */
>

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Benjamin Herrenschmidt May 29, 2014, 9:52 p.m. UTC | #2
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 */
> >


--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexander Graf May 30, 2014, 7:44 a.m. UTC | #3
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

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michael Ellerman May 30, 2014, 8:56 a.m. UTC | #4
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




--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michael Neuling May 30, 2014, 9:10 a.m. UTC | #5
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
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexander Graf May 30, 2014, 9:13 a.m. UTC | #6
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

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexander Graf May 30, 2014, 9:44 a.m. UTC | #7
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

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

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 */