Re: [kvm-unit-tests PATCH v5 02/10] s390x: Use PSW bits definitions in cstart

Janosch Frank
2020-04-22T09:13:45Z

[-- Attachment #1.1: Type: text/plain, Size: 3077 bytes --]

On 4/22/20 11:06 AM, Pierre Morel wrote:
>
>
> On 2020-04-22 09:35, Janosch Frank wrote:
>> On 2/20/20 1:00 PM, Pierre Morel wrote:
>>> This patch defines the PSW bits EA/BA used to initialize the PSW masks
>>> for exceptions.
>>>
>>> Since some PSW mask definitions exist already in arch_def.h we add these
>>> definitions there.
>>> We move all PSW definitions together and protect assembler code against
>>> C syntax.
>>
>> Please fix the issue mentioned below and run *all* tests against your
>> new code to verify you didn't introduce regressions.
>>
>> The rest looks good to me.
>
> Thanks,
>
>>
>>>
>>> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
>>> ---
>>> lib/s390x/asm/arch_def.h | 15 +++++++++++----
>>> s390x/cstart64.S | 15 ++++++++-------
>>> 2 files changed, 19 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h
>>> index 15a4d49..69a8256 100644
>>> --- a/lib/s390x/asm/arch_def.h
>>> +++ b/lib/s390x/asm/arch_def.h
>>> @@ -10,15 +10,21 @@
>>> #ifndef _ASM_S390X_ARCH_DEF_H_
>>> #define _ASM_S390X_ARCH_DEF_H_
>>>
>>> +#define PSW_MASK_EXT 0x0100000000000000UL
>>> +#define PSW_MASK_DAT 0x0400000000000000UL
>>> +#define PSW_MASK_PSTATE 0x0001000000000000UL
>>> +#define PSW_MASK_BA 0x0000000080000000UL
>>> +#define PSW_MASK_EA 0x0000000100000000UL
>>> +
>>> +#define PSW_EXCEPTION_MASK (PSW_MASK_EA|PSW_MASK_BA)
>>
>> Could you add a space before and after the | ?
>>
>>> +
>>> +#ifndef __ASSEMBLER__
>>> +
>>> struct psw {
>>> uint64_t mask;
>>> uint64_t addr;
>>> };
>>>
>>> -#define PSW_MASK_EXT 0x0100000000000000UL
>>> -#define PSW_MASK_DAT 0x0400000000000000UL
>>> -#define PSW_MASK_PSTATE 0x0001000000000000UL
>>> -
>>> #define CR0_EXTM_SCLP 0X0000000000000200UL
>>> #define CR0_EXTM_EXTC 0X0000000000002000UL
>>> #define CR0_EXTM_EMGC 0X0000000000004000UL
>>> @@ -297,4 +303,5 @@ static inline uint32_t get_prefix(void)
>>> return current_prefix;
>>> }
>>>
>>> +#endif /* not __ASSEMBLER__ */
>>> #endif
>>> diff --git a/s390x/cstart64.S b/s390x/cstart64.S
>>> index 45da523..2885a36 100644
>>> --- a/s390x/cstart64.S
>>> +++ b/s390x/cstart64.S
>>> @@ -12,6 +12,7 @@
>>> */
>>> #include <asm/asm-offsets.h>
>>> #include <asm/sigp.h>
>>> +#include <asm/arch_def.h>
>>>
>>> .section .init
>>>
>>> @@ -214,19 +215,19 @@ svc_int:
>>>
>>> .align 8
>>> reset_psw:
>>> - .quad 0x0008000180000000
>>> + .quad PSW_EXCEPTION_MASK
>>
>> That won't work, this is a short PSW and you're removing the short
>> indication here. Notice the 0008 at the front.
>>
>
> Will change and define PSW_MASK_SHORT_PSW and PSW_RESET_MASK like:
>
> #define PSW_MASK_SHORT_PSW 0x0008000000000000UL
> ...
>
> #define PSW_EXCEPTION_MASK (PSW_MASK_EA | PSW_MASK_BA)
> #define PSW_RESET_MASK (PSW_EXCEPTION_MASK | PSW_MASK_SHORT_PSW)

Looks good to me, but please send out a new version.

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]