qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PULL 12/62] target/ppc/spapr: Enable mitigations by de


From: Laurent Vivier
Subject: Re: [Qemu-devel] [PULL 12/62] target/ppc/spapr: Enable mitigations by default for pseries-4.0 machine type
Date: Fri, 28 Jun 2019 16:48:04 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0

On 28/06/2019 16:28, Philippe Mathieu-Daudé wrote:
> On 6/28/19 4:14 PM, Laurent Vivier wrote:
>> On 28/06/2019 13:27, Philippe Mathieu-Daudé wrote:
>>> Hi,
>>>
>>> On 3/12/19 9:54 AM, David Gibson wrote:
>>>> From: Suraj Jitindar Singh <address@hidden>
>>>>
>>>> There are currently 3 mitigations the availability of which is controlled
>>>> by the spapr-caps mechanism, cap-cfpc, cap-sbbc, and cap-ibs. Enable these
>>>> mitigations by default for the pseries-4.0 machine type.
>>>>
>>>> By now machine firmware should have been upgraded to allow these
>>>> settings.
>>>>
>>>> Signed-off-by: Suraj Jitindar Singh <address@hidden>
>>>> Message-Id: <address@hidden>
>>>> Signed-off-by: David Gibson <address@hidden>
>>>> ---
>>>>  hw/ppc/spapr.c | 9 ++++++---
>>>>  1 file changed, 6 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
>>>> index 37fd7a1411..946bbcf9ee 100644
>>>> --- a/hw/ppc/spapr.c
>>>> +++ b/hw/ppc/spapr.c
>>>> @@ -4307,9 +4307,9 @@ static void spapr_machine_class_init(ObjectClass 
>>>> *oc, void *data)
>>>>      smc->default_caps.caps[SPAPR_CAP_HTM] = SPAPR_CAP_OFF;
>>>>      smc->default_caps.caps[SPAPR_CAP_VSX] = SPAPR_CAP_ON;
>>>>      smc->default_caps.caps[SPAPR_CAP_DFP] = SPAPR_CAP_ON;
>>>> -    smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_BROKEN;
>>>> -    smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_BROKEN;
>>>> -    smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_BROKEN;
>>>> +    smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_WORKAROUND;
>>>> +    smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_WORKAROUND;
>>>> +    smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_WORKAROUND;
>>>>      smc->default_caps.caps[SPAPR_CAP_HPT_MAXPAGESIZE] = 16; /* 64kiB */
>>>>      smc->default_caps.caps[SPAPR_CAP_NESTED_KVM_HV] = SPAPR_CAP_OFF;
>>>>      smc->default_caps.caps[SPAPR_CAP_LARGE_DECREMENTER] = SPAPR_CAP_ON;
>>>> @@ -4389,6 +4389,9 @@ static void 
>>>> spapr_machine_3_1_class_options(MachineClass *mc)
>>>>      mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power8_v2.0");
>>>>      smc->update_dt_enabled = false;
>>>>      smc->dr_phb_enabled = false;
>>>> +    smc->default_caps.caps[SPAPR_CAP_CFPC] = SPAPR_CAP_BROKEN;
>>>> +    smc->default_caps.caps[SPAPR_CAP_SBBC] = SPAPR_CAP_BROKEN;
>>>> +    smc->default_caps.caps[SPAPR_CAP_IBS] = SPAPR_CAP_BROKEN;
>>>>      smc->default_caps.caps[SPAPR_CAP_LARGE_DECREMENTER] = SPAPR_CAP_OFF;
>>>>  }
>>>
>>> While trying auto-bisection for LP#1834613 [*] I found this commit break
>>> clean bisection.
>>>
>>> ./configure --enable-debug
>>>
>>> $ qemu-system-ppc64 \
>>>  -kernel vmlinuz-vanilla \
>>>  -nographic -serial null
>>> qemu-system-ppc64: warning: TCG doesn't support requested feature,
>>> cap-cfpc=workaround
>>> qemu-system-ppc64: warning: TCG doesn't support requested feature,
>>> cap-sbbc=workaround
>>> qemu-system-ppc64: warning: TCG doesn't support requested feature,
>>> cap-ibs=workaround
>>> Opcode 13 10 10 00 (4c400420) leaked temporaries
>>>
>>> More verbose log:
>>>
>>> $ qemu-system-ppc64 \
>>>  -kernel vmlinuz-vanilla \
>>>  -nographic -append "console=hvc0" \
>>>  -d guest_errors,in_asm
>>> qemu-system-ppc64: warning: TCG doesn't support requested feature,
>>> cap-cfpc=workaround
>>> qemu-system-ppc64: warning: TCG doesn't support requested feature,
>>> cap-sbbc=workaround
>>> qemu-system-ppc64: warning: TCG doesn't support requested feature,
>>> cap-ibs=workaround
>>>
>>>
>>> SLOF **********************************************************************
>>> QEMU Starting
>>>  Build Date = Jan 14 2019 18:00:39
>>>  FW Version = git-a5b428e1c1eae703
>>>  Press "s" to enter Open Firmware.
>>> [...]
>>> --------------
>>> IN: __switch_to
>>> 0xc00000000001aac0:  60000000  nop
>>> 0xc00000000001aac4:  7f44d378  mr       r4, r26
>>> 0xc00000000001aac8:  7f23cb78  mr       r3, r25
>>> 0xc00000000001aacc:  4bff3235  bl       0xdd00
>>
>> The kernel logs are:
>>
>> [    0.044473] Oops: Exception in kernel mode, sig: 4 [#1]
>> [    0.044899] BE PAGE_SIZE=64K MMU=Radix MMU=Hash SMP NR_CPUS=2048 NUMA 
>> pSeries
>> [    0.045191] Modules linked in:
>> [    0.045504] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 
>> 5.1.0-rc4-00058-g582549e3fbe1-dirty #11
>> [    0.045646] NIP:  c00000000000be00 LR: c00000000000e168 CTR: 
>> 0000000000007fff
>> [    0.045747] REGS: c0000000011bb770 TRAP: 0700   Not tainted  
>> (5.1.0-rc4-00058-g582549e3fbe1-dirty)
>> [    0.045808] MSR:  8000000002089032 <SF,VEC,EE,ME,IR,DR,RI>  CR: 24028822  
>> XER: 00000000
>> [    0.045971] CFAR: c00000000000bde4 IRQMASK: 1 
>> [    0.045971] GPR00: c00000000001f390 c0000000011bba00 c0000000011bf800 
>> c0000000010db830 
>> [    0.045971] GPR04: c00000001e4041b0 0000000000000000 0000000000000000 
>> 00000000028a5d7a 
>> [    0.045971] GPR08: 0000000000000000 0000000000007fff 0000000000000000 
>> fffffffffffffffd 
>> [    0.045971] GPR12: 0000000024028828 c0000000013b0000 000000001dc5ff00 
>> 00000000011d8e18 
>> [    0.045971] GPR16: 00000000011d89e0 fffffffffffffffd 000000001dc5ff00 
>> 0000000000000014 
>> [    0.045971] GPR20: 000000001daf0000 c0000000010da4e0 000000001eef0000 
>> 0000000024028822 
>> [    0.045971] GPR24: c0000000010db830 c00000001e4041b0 000000001eef0000 
>> c000000000ff5598 
>> [    0.045971] GPR28: c0000000010db830 c0000000010d9d00 c00000001e402680 
>> c0000000010d9d00 
>> [    0.046505] NIP [c00000000000be00] flush_count_cache+0x120/0x2420
>> [    0.046561] LR [c00000000000e168] ._switch+0x68/0x180
>> [    0.046696] Call Trace:
>> [    0.046865] [c0000000011bba00] [c0000000011bba90] 
>> init_stack+0x3a90/0x4000 (unreliable)
>> [    0.046970] [c0000000011bbbe0] [c00000000001f390] .__switch_to+0x280/0x490
>> [    0.047031] [c0000000011bbc90] [c000000000b62b5c] .__schedule+0x2bc/0xae0
>> [    0.047075] [c0000000011bbd80] [c000000000b633c8] .schedule+0x48/0xb0
>> [    0.047140] [c0000000011bbdf0] [c000000000b63918] 
>> .schedule_preempt_disabled+0x18/0x30
>> [    0.047187] [c0000000011bbe60] [c00000000001065c] .rest_init+0xcc/0xf0
>> [    0.047233] [c0000000011bbee0] [c000000000f04584] 
>> .start_kernel+0x604/0x648
>> [    0.047276] [c0000000011bbf90] [c00000000000b260] 
>> start_here_common+0x1c/0x53c
>> [    0.047409] Instruction dump:
>> [    0.047647] 48000005 48000005 48000005 48000005 48000005 4800001c 
>> 60000000 60000000 
>> [    0.047744] 60000000 60000000 60000000 60000000 <7d2803a6> 39207fff 
>> 7d2903a6 4c400420 
>> [    0.048410] ---[ end trace 523b05d3a02887f6 ]---
>> [    0.048523] 
> 
> How do you got the klogs?

To have the klogs on the serial output you have to disable vga:

 ... -vga none -nographic ...

or to set the default console:

 ... -serial stdout -prom-env "output-device=/vdevice/vty@71000000" ...

Thanks,
Laurent




reply via email to

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