[kvm-unit-tests] s390x: Fix stsi unaligned test and add selector tests
diff mbox series

Message ID 20190920075020.1698-1-frankja@linux.ibm.com
State New
Headers show
Series
  • [kvm-unit-tests] s390x: Fix stsi unaligned test and add selector tests
Related show

Commit Message

Janosch Frank Sept. 20, 2019, 7:50 a.m. UTC
Alignment and selectors test order is not specified and so, if you
have an unaligned address and invalid selectors it's up to the
hypervisor to decide which error is presented.

Let's add valid selectors to the unalignmnet test and add selector
tests.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
---
 s390x/stsi.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Christian Borntraeger Sept. 20, 2019, 7:55 a.m. UTC | #1
On 20.09.19 09:50, Janosch Frank wrote:
> Alignment and selectors test order is not specified and so, if you
> have an unaligned address and invalid selectors it's up to the
> hypervisor to decide which error is presented.
> 
> Let's add valid selectors to the unalignmnet test and add selector
> tests.
> 
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>

> ---
>  s390x/stsi.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/s390x/stsi.c b/s390x/stsi.c
> index 7232cb0..c5bd0a2 100644
> --- a/s390x/stsi.c
> +++ b/s390x/stsi.c
> @@ -35,7 +35,7 @@ static void test_specs(void)
>  
>  	report_prefix_push("unaligned");
>  	expect_pgm_int();
> -	stsi(pagebuf + 42, 1, 0, 0);
> +	stsi(pagebuf + 42, 1, 1, 1);
>  	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
>  	report_prefix_pop();
>  
> @@ -71,6 +71,8 @@ static inline unsigned long stsi_get_fc(void *addr)
>  static void test_fc(void)
>  {
>  	report("invalid fc",  stsi(pagebuf, 7, 0, 0) == 3);
> +	report("invalid selector 1", stsi(pagebuf, 1, 0, 1) == 3);
> +	report("invalid selector 2", stsi(pagebuf, 1, 1, 0) == 3);
>  	report("query fc >= 2",  stsi_get_fc(pagebuf) >= 2);
>  }
>  
>
David Hildenbrand Sept. 20, 2019, 8:10 a.m. UTC | #2
On 20.09.19 09:50, Janosch Frank wrote:
> Alignment and selectors test order is not specified and so, if you
> have an unaligned address and invalid selectors it's up to the
> hypervisor to decide which error is presented.
> 
> Let's add valid selectors to the unalignmnet test and add selector
> tests.
> 
> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
> ---
>  s390x/stsi.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/s390x/stsi.c b/s390x/stsi.c
> index 7232cb0..c5bd0a2 100644
> --- a/s390x/stsi.c
> +++ b/s390x/stsi.c
> @@ -35,7 +35,7 @@ static void test_specs(void)
>  
>  	report_prefix_push("unaligned");
>  	expect_pgm_int();
> -	stsi(pagebuf + 42, 1, 0, 0);
> +	stsi(pagebuf + 42, 1, 1, 1);
>  	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
>  	report_prefix_pop();
>  
> @@ -71,6 +71,8 @@ static inline unsigned long stsi_get_fc(void *addr)
>  static void test_fc(void)
>  {
>  	report("invalid fc",  stsi(pagebuf, 7, 0, 0) == 3);
> +	report("invalid selector 1", stsi(pagebuf, 1, 0, 1) == 3);
> +	report("invalid selector 2", stsi(pagebuf, 1, 1, 0) == 3);
>  	report("query fc >= 2",  stsi_get_fc(pagebuf) >= 2);
>  }
>  
> 

Acked-by: David Hildenbrand <david@redhat.com>
Thomas Huth Sept. 23, 2019, 8:10 a.m. UTC | #3
On 20/09/2019 10.10, David Hildenbrand wrote:
> On 20.09.19 09:50, Janosch Frank wrote:
>> Alignment and selectors test order is not specified and so, if you
>> have an unaligned address and invalid selectors it's up to the
>> hypervisor to decide which error is presented.
>>
>> Let's add valid selectors to the unalignmnet test and add selector
>> tests.
>>
>> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
>> ---
>>  s390x/stsi.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/s390x/stsi.c b/s390x/stsi.c
>> index 7232cb0..c5bd0a2 100644
>> --- a/s390x/stsi.c
>> +++ b/s390x/stsi.c
>> @@ -35,7 +35,7 @@ static void test_specs(void)
>>  
>>  	report_prefix_push("unaligned");
>>  	expect_pgm_int();
>> -	stsi(pagebuf + 42, 1, 0, 0);
>> +	stsi(pagebuf + 42, 1, 1, 1);
>>  	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
>>  	report_prefix_pop();
>>  
>> @@ -71,6 +71,8 @@ static inline unsigned long stsi_get_fc(void *addr)
>>  static void test_fc(void)
>>  {
>>  	report("invalid fc",  stsi(pagebuf, 7, 0, 0) == 3);

While you're at it, wouldn't it be better to use "(pagebuf, 7, 1, 1)" here?

 Thomas


>> +	report("invalid selector 1", stsi(pagebuf, 1, 0, 1) == 3);
>> +	report("invalid selector 2", stsi(pagebuf, 1, 1, 0) == 3);
>>  	report("query fc >= 2",  stsi_get_fc(pagebuf) >= 2);
>>  }
>>  
>>
> 
> Acked-by: David Hildenbrand <david@redhat.com>
>
Janosch Frank Sept. 23, 2019, 9:48 a.m. UTC | #4
On 9/23/19 10:10 AM, Thomas Huth wrote:
> On 20/09/2019 10.10, David Hildenbrand wrote:
>> On 20.09.19 09:50, Janosch Frank wrote:
>>> Alignment and selectors test order is not specified and so, if you
>>> have an unaligned address and invalid selectors it's up to the
>>> hypervisor to decide which error is presented.
>>>
>>> Let's add valid selectors to the unaligned test and add selector
>>> tests.
>>>
>>> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
>>> ---
>>>  s390x/stsi.c | 4 +++-
>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/s390x/stsi.c b/s390x/stsi.c
>>> index 7232cb0..c5bd0a2 100644
>>> --- a/s390x/stsi.c
>>> +++ b/s390x/stsi.c
>>> @@ -35,7 +35,7 @@ static void test_specs(void)
>>>  
>>>  	report_prefix_push("unaligned");
>>>  	expect_pgm_int();
>>> -	stsi(pagebuf + 42, 1, 0, 0);
>>> +	stsi(pagebuf + 42, 1, 1, 1);
>>>  	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
>>>  	report_prefix_pop();
>>>  
>>> @@ -71,6 +71,8 @@ static inline unsigned long stsi_get_fc(void *addr)
>>>  static void test_fc(void)
>>>  {
>>>  	report("invalid fc",  stsi(pagebuf, 7, 0, 0) == 3);
> 
> While you're at it, wouldn't it be better to use "(pagebuf, 7, 1, 1)" here?

The selectors depend on the command, so they need to be checked after
the command. I don't think it would make much sense to change the zeroes
here.

> 
>  Thomas
> 
> 
>>> +	report("invalid selector 1", stsi(pagebuf, 1, 0, 1) == 3);
>>> +	report("invalid selector 2", stsi(pagebuf, 1, 1, 0) == 3);
>>>  	report("query fc >= 2",  stsi_get_fc(pagebuf) >= 2);
>>>  }
>>>  
>>>
>>
>> Acked-by: David Hildenbrand <david@redhat.com>
>>
>
Thomas Huth Sept. 23, 2019, 9:59 a.m. UTC | #5
On 23/09/2019 11.48, Janosch Frank wrote:
> On 9/23/19 10:10 AM, Thomas Huth wrote:
>> On 20/09/2019 10.10, David Hildenbrand wrote:
>>> On 20.09.19 09:50, Janosch Frank wrote:
>>>> Alignment and selectors test order is not specified and so, if you
>>>> have an unaligned address and invalid selectors it's up to the
>>>> hypervisor to decide which error is presented.
>>>>
>>>> Let's add valid selectors to the unaligned test and add selector
>>>> tests.
>>>>
>>>> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
>>>> ---
>>>>  s390x/stsi.c | 4 +++-
>>>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/s390x/stsi.c b/s390x/stsi.c
>>>> index 7232cb0..c5bd0a2 100644
>>>> --- a/s390x/stsi.c
>>>> +++ b/s390x/stsi.c
>>>> @@ -35,7 +35,7 @@ static void test_specs(void)
>>>>  
>>>>  	report_prefix_push("unaligned");
>>>>  	expect_pgm_int();
>>>> -	stsi(pagebuf + 42, 1, 0, 0);
>>>> +	stsi(pagebuf + 42, 1, 1, 1);
>>>>  	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
>>>>  	report_prefix_pop();
>>>>  
>>>> @@ -71,6 +71,8 @@ static inline unsigned long stsi_get_fc(void *addr)
>>>>  static void test_fc(void)
>>>>  {
>>>>  	report("invalid fc",  stsi(pagebuf, 7, 0, 0) == 3);
>>
>> While you're at it, wouldn't it be better to use "(pagebuf, 7, 1, 1)" here?
> 
> The selectors depend on the command, so they need to be checked after
> the command. I don't think it would make much sense to change the zeroes
> here.

OK, fair. Patche queued.

 Thomas

Patch
diff mbox series

diff --git a/s390x/stsi.c b/s390x/stsi.c
index 7232cb0..c5bd0a2 100644
--- a/s390x/stsi.c
+++ b/s390x/stsi.c
@@ -35,7 +35,7 @@  static void test_specs(void)
 
 	report_prefix_push("unaligned");
 	expect_pgm_int();
-	stsi(pagebuf + 42, 1, 0, 0);
+	stsi(pagebuf + 42, 1, 1, 1);
 	check_pgm_int_code(PGM_INT_CODE_SPECIFICATION);
 	report_prefix_pop();
 
@@ -71,6 +71,8 @@  static inline unsigned long stsi_get_fc(void *addr)
 static void test_fc(void)
 {
 	report("invalid fc",  stsi(pagebuf, 7, 0, 0) == 3);
+	report("invalid selector 1", stsi(pagebuf, 1, 0, 1) == 3);
+	report("invalid selector 2", stsi(pagebuf, 1, 1, 0) == 3);
 	report("query fc >= 2",  stsi_get_fc(pagebuf) >= 2);
 }