Re: [kvm-unit-tests PATCH v2 6/7] s390x: smp: Test all CRs on initial reset

David Hildenbrand
2020-01-16T13:18:16Z

On 16.01.20 14:07, Janosch Frank wrote:
> On 1/16/20 1:24 PM, David Hildenbrand wrote:
>> On 16.01.20 13:05, Janosch Frank wrote:
>>> All CRs are set to 0 and CRs 0 and 14 are set to pre-defined values,
>>> so we also need to test 1-13 and 15 for 0.
>>>
>>> And while we're at it, let's also set some values to cr 1, 7 and 13, so
>>> we can actually be sure that they will be zeroed.
>>>
>>> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
>>> ---
>>> s390x/smp.c | 19 ++++++++++++++++++-
>>> 1 file changed, 18 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/s390x/smp.c b/s390x/smp.c
>>> index d430638..ce3215d 100644
>>> --- a/s390x/smp.c
>>> +++ b/s390x/smp.c
>>> @@ -176,16 +176,31 @@ static void test_emcall(void)
>>> report_prefix_pop();
>>> }
>>>
>>> +/* Used to dirty registers of cpu #1 before it is reset */
>>> +static void test_func_initial(void)
>>> +{
>>> + lctlg(1, 0x42000UL);
>>> + lctlg(7, 0x43000UL);
>>> + lctlg(13, 0x44000UL);
>>> + testflag = 1;
>>> + mb();
>>> + cpu_loop();
>>
>> Can we make cpu_loop() the default when this function returns? (IOW, an
>> endless loop whenever a cpu finished executing the function?)
>
> So adding it to cstart64.S after the br 14?

Yes I think so.

>
>>
>> Do we need the mb() here?
>
> Would the compiler reorder the lctlcg and testflag if it could?

lctlg() does not have a "memory" constraint, so I guess it would be
valid if it would reorder.

I assume the mb() would have to be moved in front of the testflag=1?

--
Thanks,

David / dhildenb