* [PATCH] powerpc: enable 64-bit mode
@ 2016-03-15 13:15 Laurent Vivier
2016-03-15 13:43 ` Laurent Vivier
2016-03-15 18:43 ` Thomas Huth
0 siblings, 2 replies; 7+ messages in thread
From: Laurent Vivier @ 2016-03-15 13:15 UTC (permalink / raw)
To: kvm, kvm-ppc; +Cc: drjones, thuth, dgibson, pbonzini, Laurent Vivier
When they are started, processors are in 32-bit mode,
as we are testing ppc64 processors, enable the 64bit mode
on starting.
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
powerpc/cstart64.S | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
index c87e3d6..634b854 100644
--- a/powerpc/cstart64.S
+++ b/powerpc/cstart64.S
@@ -18,6 +18,15 @@
.globl start
start:
FIXUP_ENDIAN
+
+ /* enable 64-bit mode */
+ mfmsr r11
+ li r12,-1
+ rldicr r12,r12,0,0
+ or r11,r11,r12
+ mtmsrd r11
+ isync
+
/*
* We were loaded at QEMU's kernel load address, but we're not
* allowed to link there due to how QEMU deals with linker VMAs,
--
2.5.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: enable 64-bit mode
2016-03-15 13:15 [PATCH] powerpc: enable 64-bit mode Laurent Vivier
@ 2016-03-15 13:43 ` Laurent Vivier
2016-03-15 18:43 ` Thomas Huth
1 sibling, 0 replies; 7+ messages in thread
From: Laurent Vivier @ 2016-03-15 13:43 UTC (permalink / raw)
To: kvm, kvm-ppc; +Cc: drjones, thuth, dgibson, pbonzini
Missing in the subject: it's a kvm-unit-tests patch.
Laurent
On 15/03/2016 14:15, Laurent Vivier wrote:
> When they are started, processors are in 32-bit mode,
> as we are testing ppc64 processors, enable the 64bit mode
> on starting.
>
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---
> powerpc/cstart64.S | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
> index c87e3d6..634b854 100644
> --- a/powerpc/cstart64.S
> +++ b/powerpc/cstart64.S
> @@ -18,6 +18,15 @@
> .globl start
> start:
> FIXUP_ENDIAN
> +
> + /* enable 64-bit mode */
> + mfmsr r11
> + li r12,-1
> + rldicr r12,r12,0,0
> + or r11,r11,r12
> + mtmsrd r11
> + isync
> +
> /*
> * We were loaded at QEMU's kernel load address, but we're not
> * allowed to link there due to how QEMU deals with linker VMAs,
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: enable 64-bit mode
2016-03-15 13:15 [PATCH] powerpc: enable 64-bit mode Laurent Vivier
2016-03-15 13:43 ` Laurent Vivier
@ 2016-03-15 18:43 ` Thomas Huth
2016-03-15 18:44 ` Alexander Graf
1 sibling, 1 reply; 7+ messages in thread
From: Thomas Huth @ 2016-03-15 18:43 UTC (permalink / raw)
To: Laurent Vivier, kvm, kvm-ppc; +Cc: drjones, dgibson, pbonzini
On 15.03.2016 14:15, Laurent Vivier wrote:
> When they are started, processors are in 32-bit mode,
> as we are testing ppc64 processors, enable the 64bit mode
> on starting.
>
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---
> powerpc/cstart64.S | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
> index c87e3d6..634b854 100644
> --- a/powerpc/cstart64.S
> +++ b/powerpc/cstart64.S
> @@ -18,6 +18,15 @@
> .globl start
> start:
> FIXUP_ENDIAN
> +
> + /* enable 64-bit mode */
> + mfmsr r11
> + li r12,-1
> + rldicr r12,r12,0,0
Nice idea to set the highest bit, I didn't know that one yet :-)
> + or r11,r11,r12
> + mtmsrd r11
> + isync
Looks good!
Reviewed-by: Thomas Huth <thuth@redhat.com>
PS: As far as I can see, the C code has already been compiled for 64
bits ... how did that work if it has been run in 32-bit mode so far??
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: enable 64-bit mode
2016-03-15 18:43 ` Thomas Huth
@ 2016-03-15 18:44 ` Alexander Graf
2016-03-15 19:10 ` Thomas Huth
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Alexander Graf @ 2016-03-15 18:44 UTC (permalink / raw)
To: Thomas Huth, Laurent Vivier, kvm, kvm-ppc; +Cc: drjones, dgibson, pbonzini
On 15.03.16 19:43, Thomas Huth wrote:
> On 15.03.2016 14:15, Laurent Vivier wrote:
>> When they are started, processors are in 32-bit mode,
>> as we are testing ppc64 processors, enable the 64bit mode
>> on starting.
>>
>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>> ---
>> powerpc/cstart64.S | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
>> index c87e3d6..634b854 100644
>> --- a/powerpc/cstart64.S
>> +++ b/powerpc/cstart64.S
>> @@ -18,6 +18,15 @@
>> .globl start
>> start:
>> FIXUP_ENDIAN
>> +
>> + /* enable 64-bit mode */
>> + mfmsr r11
>> + li r12,-1
>> + rldicr r12,r12,0,0
>
> Nice idea to set the highest bit, I didn't know that one yet :-)
>
>> + or r11,r11,r12
>> + mtmsrd r11
>> + isync
>
> Looks good!
>
> Reviewed-by: Thomas Huth <thuth@redhat.com>
>
>
> PS: As far as I can see, the C code has already been compiled for 64
> bits ... how did that work if it has been run in 32-bit mode so far??
And why would we enter a 64bit CPU without MSR_SF set?
Alex
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: enable 64-bit mode
2016-03-15 18:44 ` Alexander Graf
@ 2016-03-15 19:10 ` Thomas Huth
2016-03-15 20:12 ` Laurent Vivier
2016-03-16 9:45 ` Laurent Vivier
2 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2016-03-15 19:10 UTC (permalink / raw)
To: Alexander Graf, Laurent Vivier, kvm, kvm-ppc; +Cc: drjones, dgibson, pbonzini
On 15.03.2016 19:44, Alexander Graf wrote:
>
>
> On 15.03.16 19:43, Thomas Huth wrote:
>> On 15.03.2016 14:15, Laurent Vivier wrote:
>>> When they are started, processors are in 32-bit mode,
>>> as we are testing ppc64 processors, enable the 64bit mode
>>> on starting.
>>>
>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>> ---
>>> powerpc/cstart64.S | 9 +++++++++
>>> 1 file changed, 9 insertions(+)
>>>
>>> diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
>>> index c87e3d6..634b854 100644
>>> --- a/powerpc/cstart64.S
>>> +++ b/powerpc/cstart64.S
>>> @@ -18,6 +18,15 @@
>>> .globl start
>>> start:
>>> FIXUP_ENDIAN
>>> +
>>> + /* enable 64-bit mode */
>>> + mfmsr r11
>>> + li r12,-1
>>> + rldicr r12,r12,0,0
>>
>> Nice idea to set the highest bit, I didn't know that one yet :-)
>>
>>> + or r11,r11,r12
>>> + mtmsrd r11
>>> + isync
>>
>> Looks good!
>>
>> Reviewed-by: Thomas Huth <thuth@redhat.com>
>>
>>
>> PS: As far as I can see, the C code has already been compiled for 64
>> bits ... how did that work if it has been run in 32-bit mode so far??
>
> And why would we enter a 64bit CPU without MSR_SF set?
Ah, I see, 64-bit mode is already enabled in translate_init.c for 64-bit
CPUs! I somehow thought that 64-bit PPCs would start in 32-bit mode (for
backwards compatibility), and thus I expected that the VMs would also be
started in 32-bit mode. But seems like this is not the case... and I
learned again a new detail about PPCs :-)
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: enable 64-bit mode
2016-03-15 18:44 ` Alexander Graf
2016-03-15 19:10 ` Thomas Huth
@ 2016-03-15 20:12 ` Laurent Vivier
2016-03-16 9:45 ` Laurent Vivier
2 siblings, 0 replies; 7+ messages in thread
From: Laurent Vivier @ 2016-03-15 20:12 UTC (permalink / raw)
To: Alexander Graf, Thomas Huth, kvm, kvm-ppc; +Cc: drjones, dgibson, pbonzini
On 15/03/2016 19:44, Alexander Graf wrote:
>
>
> On 15.03.16 19:43, Thomas Huth wrote:
>> On 15.03.2016 14:15, Laurent Vivier wrote:
>>> When they are started, processors are in 32-bit mode,
>>> as we are testing ppc64 processors, enable the 64bit mode
>>> on starting.
>>>
>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>> ---
>>> powerpc/cstart64.S | 9 +++++++++
>>> 1 file changed, 9 insertions(+)
>>>
>>> diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
>>> index c87e3d6..634b854 100644
>>> --- a/powerpc/cstart64.S
>>> +++ b/powerpc/cstart64.S
>>> @@ -18,6 +18,15 @@
>>> .globl start
>>> start:
>>> FIXUP_ENDIAN
>>> +
>>> + /* enable 64-bit mode */
>>> + mfmsr r11
>>> + li r12,-1
>>> + rldicr r12,r12,0,0
>>
>> Nice idea to set the highest bit, I didn't know that one yet :-)
>>
>>> + or r11,r11,r12
>>> + mtmsrd r11
>>> + isync
>>
>> Looks good!
>>
>> Reviewed-by: Thomas Huth <thuth@redhat.com>
>>
>>
>> PS: As far as I can see, the C code has already been compiled for 64
>> bits ... how did that work if it has been run in 32-bit mode so far??
>
> And why would we enter a 64bit CPU without MSR_SF set?
I don't know, but:
When I start "qemu-system-ppc64 -machine pseries -s -S" and check the
MSR with gdb, the MSR is always set to 0 (or "info registers" in
monitor). It's why I've added this initialization.
So, perhaps there is a bug in QEMU?
[Perhaps "env->msr |= (1ULL << MSR_SF)" is overwritten by the following
hreg_store_msr(env, msr, 1);"?]
Laurent
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] powerpc: enable 64-bit mode
2016-03-15 18:44 ` Alexander Graf
2016-03-15 19:10 ` Thomas Huth
2016-03-15 20:12 ` Laurent Vivier
@ 2016-03-16 9:45 ` Laurent Vivier
2 siblings, 0 replies; 7+ messages in thread
From: Laurent Vivier @ 2016-03-16 9:45 UTC (permalink / raw)
To: Alexander Graf, Thomas Huth, kvm, kvm-ppc; +Cc: drjones, dgibson, pbonzini
On 15/03/2016 19:44, Alexander Graf wrote:
>
>
> On 15.03.16 19:43, Thomas Huth wrote:
>> On 15.03.2016 14:15, Laurent Vivier wrote:
>>> When they are started, processors are in 32-bit mode,
>>> as we are testing ppc64 processors, enable the 64bit mode
>>> on starting.
>>>
>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>> ---
>>> powerpc/cstart64.S | 9 +++++++++
>>> 1 file changed, 9 insertions(+)
>>>
>>> diff --git a/powerpc/cstart64.S b/powerpc/cstart64.S
>>> index c87e3d6..634b854 100644
>>> --- a/powerpc/cstart64.S
>>> +++ b/powerpc/cstart64.S
>>> @@ -18,6 +18,15 @@
>>> .globl start
>>> start:
>>> FIXUP_ENDIAN
>>> +
>>> + /* enable 64-bit mode */
>>> + mfmsr r11
>>> + li r12,-1
>>> + rldicr r12,r12,0,0
>>
>> Nice idea to set the highest bit, I didn't know that one yet :-)
>>
>>> + or r11,r11,r12
>>> + mtmsrd r11
>>> + isync
>>
>> Looks good!
>>
>> Reviewed-by: Thomas Huth <thuth@redhat.com>
>>
>>
>> PS: As far as I can see, the C code has already been compiled for 64
>> bits ... how did that work if it has been run in 32-bit mode so far??
>
> And why would we enter a 64bit CPU without MSR_SF set?
OK, it seems to be a bug in QEMU. I've sent a patch to QEMU ML trying to
fix that.
Laurent
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-03-16 9:45 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-15 13:15 [PATCH] powerpc: enable 64-bit mode Laurent Vivier
2016-03-15 13:43 ` Laurent Vivier
2016-03-15 18:43 ` Thomas Huth
2016-03-15 18:44 ` Alexander Graf
2016-03-15 19:10 ` Thomas Huth
2016-03-15 20:12 ` Laurent Vivier
2016-03-16 9:45 ` Laurent Vivier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).