[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