qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Qemu-ppc] KVM-PR is broken with current QEMU


From: Cédric Le Goater
Subject: Re: [Qemu-devel] [Qemu-ppc] KVM-PR is broken with current QEMU
Date: Tue, 20 Sep 2016 16:04:43 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0

On 09/20/2016 02:24 PM, Cédric Le Goater wrote:
> On 09/20/2016 01:44 PM, Thomas Huth wrote:
>>  Hi,
>>
>> when I try to run my guest in KVM-PR mode, current QEMU refuses to start:
>>
>>   $ sudo qemu-system-ppc64 -M pseries,accel=kvm,kvm-type=PR \
>>                            -nographic -vga none -cpu POWER8
>>   qemu: fatal: Unknown MMU model 851972
>>
>> ... followed by a useless register dump. I've bisected the issue, and it
>> seems like the problem has been introduced by this commit here:
>>
>>   commit 4322e8ced5aaac7191958f09622d199fe61e2d87
>>   ppc: Fix 64K pages support in full emulation
>>
>> Seems like KVM PR is using the "degraded" ISA variants (without the 1TB
>> segments), but the new POWERPC_MMU_64K flag has not been added to those.
>> Has this been done on purpose, or was this just by accident?
> 
> The "degraded" architecture support has some history behind it :
> 
>  commit 126a79300971 added it
>  commit aa4bb5875231 removed it.
>  commit ba3ecda05e93 readded it.
>  commit 4322e8ced5aa forgot about it again
> 
>> I can make KVM PR working again with the following patch:
> 
> I think this is correct. Let's wait for Ben to chime in :)

So I confirm the bug and the fix. 

There are other issues after in the guest (kernel crashing). But I think
these are related to TM which is not supported in KVM-PR. I am not sure
where we are on that point.

Thanks,

C. 

>> diff --git a/target-ppc/cpu-qom.h b/target-ppc/cpu-qom.h
>> index 2864105..36694cb 100644
>> --- a/target-ppc/cpu-qom.h
>> +++ b/target-ppc/cpu-qom.h
>> @@ -81,6 +81,7 @@ enum powerpc_mmu_t {
>>                               | POWERPC_MMU_AMR | 0x00000003,
>>      /* Architecture 2.06 "degraded" (no 1T segments)           */
>>      POWERPC_MMU_2_06a      = POWERPC_MMU_64 | POWERPC_MMU_AMR
>> +                             | POWERPC_MMU_64K
>>                               | 0x00000003,
>>      /* Architecture 2.07 variant                               */
>>      POWERPC_MMU_2_07       = POWERPC_MMU_64 | POWERPC_MMU_1TSEG
>> @@ -88,6 +89,7 @@ enum powerpc_mmu_t {
>>                               | POWERPC_MMU_AMR | 0x00000004,
>>      /* Architecture 2.07 "degraded" (no 1T segments)           */
>>      POWERPC_MMU_2_07a      = POWERPC_MMU_64 | POWERPC_MMU_AMR
>> +                             | POWERPC_MMU_64K
>>                               | 0x00000004,
>>  };
>>
>> However, not sure whether this is the right fix ... Cédric, Ben, any ideas?
> 
> 
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]