Re: [PATCH 2/6] s390: implement nospec_[load|ptr]

From: Christian Borntraeger
Date: Wed Jan 17 2018 - 09:04:31 EST




On 01/17/2018 02:58 PM, David Hildenbrand wrote:
> On 17.01.2018 10:48, Martin Schwidefsky wrote:
>> Implement nospec_load() and nospec_ptr() for s390 with the new
>> gmb() barrier between the boundary condition and the load that
>> may not be done speculatively.
>>
>> Acked-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>
>> Signed-off-by: Martin Schwidefsky <schwidefsky@xxxxxxxxxx>
>> ---
>> arch/s390/include/asm/barrier.h | 38 ++++++++++++++++++++++++++++++++++++++
>> arch/s390/kernel/alternative.c | 7 +++++++
>> 2 files changed, 45 insertions(+)
>>
>> diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
>> index 1043260..b8836a6 100644
>> --- a/arch/s390/include/asm/barrier.h
>> +++ b/arch/s390/include/asm/barrier.h
>> @@ -8,6 +8,8 @@
>> #ifndef __ASM_BARRIER_H
>> #define __ASM_BARRIER_H
>>
>> +#include <asm/alternative.h>
>> +
>> /*
>> * Force strict CPU ordering.
>> * And yes, this is required on UP too when we're talking
>> @@ -23,6 +25,42 @@
>>
>> #define mb() do { asm volatile(__ASM_BARRIER : : : "memory"); } while (0)
>>
>> +static inline void gmb(void)
>> +{
>> + asm volatile(
>> + ALTERNATIVE("", ".long 0xb2e8f000", 81)
>> + : : : "memory");
>> +}
>
> Just to be sure:
>
> There are now 2 new facilities:
>
> 81 and 82.
>
> Is 82 just the virtualization (SIE) support for 81?

81 is for ppa15 (see this patch) and 82 is for ppa12 and 13 (see patch 3).
In KVM we want to provide both (and let the guest decide what to do).