diff mbox series

[kvm-unit-tests,v2,2/4] s390x: lib: Add QUI getter

Message ID 20220203091935.2716-3-seiden@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series s390x: Attestation tests | expand

Commit Message

Steffen Eiden Feb. 3, 2022, 9:19 a.m. UTC
Some tests need the information provided by the QUI UVC and lib/s390x/uv.c
already has cached the qui result. Let's add a function to avoid
unnecessary QUI UVCs.

Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
---
 lib/s390x/uv.c | 8 ++++++++
 lib/s390x/uv.h | 1 +
 2 files changed, 9 insertions(+)

Comments

Claudio Imbrenda Feb. 3, 2022, 4:12 p.m. UTC | #1
On Thu,  3 Feb 2022 09:19:33 +0000
Steffen Eiden <seiden@linux.ibm.com> wrote:

> Some tests need the information provided by the QUI UVC and lib/s390x/uv.c
> already has cached the qui result. Let's add a function to avoid
> unnecessary QUI UVCs.

I'm not against this approach, but I wonder if it's not easier to just
make the QUI buffer public?

> 
> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
> ---
>  lib/s390x/uv.c | 8 ++++++++
>  lib/s390x/uv.h | 1 +
>  2 files changed, 9 insertions(+)
> 
> diff --git a/lib/s390x/uv.c b/lib/s390x/uv.c
> index 6fe11dff..602cbbfc 100644
> --- a/lib/s390x/uv.c
> +++ b/lib/s390x/uv.c
> @@ -47,6 +47,14 @@ bool uv_query_test_call(unsigned int nr)
>  	return test_bit_inv(nr, uvcb_qui.inst_calls_list);
>  }
>  
> +const struct uv_cb_qui *uv_get_query_data(void)
> +{
> +	/* Query needs to be called first */
> +	assert(uvcb_qui.header.rc);
> +
> +	return &uvcb_qui;
> +}
> +
>  int uv_setup(void)
>  {
>  	if (!test_facility(158))
> diff --git a/lib/s390x/uv.h b/lib/s390x/uv.h
> index 8175d9c6..44264861 100644
> --- a/lib/s390x/uv.h
> +++ b/lib/s390x/uv.h
> @@ -8,6 +8,7 @@
>  bool uv_os_is_guest(void);
>  bool uv_os_is_host(void);
>  bool uv_query_test_call(unsigned int nr);
> +const struct uv_cb_qui *uv_get_query_data(void);
>  void uv_init(void);
>  int uv_setup(void);
>  void uv_create_guest(struct vm *vm);
Janosch Frank Feb. 4, 2022, 8:18 a.m. UTC | #2
On 2/3/22 17:12, Claudio Imbrenda wrote:
> On Thu,  3 Feb 2022 09:19:33 +0000
> Steffen Eiden <seiden@linux.ibm.com> wrote:
> 
>> Some tests need the information provided by the QUI UVC and lib/s390x/uv.c
>> already has cached the qui result. Let's add a function to avoid
>> unnecessary QUI UVCs.
> 
> I'm not against this approach, but I wonder if it's not easier to just
> make the QUI buffer public?

The introduction of that function is on me and I'm not a big fan of 
global variables.


> 
>>
>> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
>> ---
>>   lib/s390x/uv.c | 8 ++++++++
>>   lib/s390x/uv.h | 1 +
>>   2 files changed, 9 insertions(+)
>>
>> diff --git a/lib/s390x/uv.c b/lib/s390x/uv.c
>> index 6fe11dff..602cbbfc 100644
>> --- a/lib/s390x/uv.c
>> +++ b/lib/s390x/uv.c
>> @@ -47,6 +47,14 @@ bool uv_query_test_call(unsigned int nr)
>>   	return test_bit_inv(nr, uvcb_qui.inst_calls_list);
>>   }
>>   
>> +const struct uv_cb_qui *uv_get_query_data(void)
>> +{
>> +	/* Query needs to be called first */
>> +	assert(uvcb_qui.header.rc);
>> +
>> +	return &uvcb_qui;
>> +}
>> +
>>   int uv_setup(void)
>>   {
>>   	if (!test_facility(158))
>> diff --git a/lib/s390x/uv.h b/lib/s390x/uv.h
>> index 8175d9c6..44264861 100644
>> --- a/lib/s390x/uv.h
>> +++ b/lib/s390x/uv.h
>> @@ -8,6 +8,7 @@
>>   bool uv_os_is_guest(void);
>>   bool uv_os_is_host(void);
>>   bool uv_query_test_call(unsigned int nr);
>> +const struct uv_cb_qui *uv_get_query_data(void);
>>   void uv_init(void);
>>   int uv_setup(void);
>>   void uv_create_guest(struct vm *vm);
>
diff mbox series

Patch

diff --git a/lib/s390x/uv.c b/lib/s390x/uv.c
index 6fe11dff..602cbbfc 100644
--- a/lib/s390x/uv.c
+++ b/lib/s390x/uv.c
@@ -47,6 +47,14 @@  bool uv_query_test_call(unsigned int nr)
 	return test_bit_inv(nr, uvcb_qui.inst_calls_list);
 }
 
+const struct uv_cb_qui *uv_get_query_data(void)
+{
+	/* Query needs to be called first */
+	assert(uvcb_qui.header.rc);
+
+	return &uvcb_qui;
+}
+
 int uv_setup(void)
 {
 	if (!test_facility(158))
diff --git a/lib/s390x/uv.h b/lib/s390x/uv.h
index 8175d9c6..44264861 100644
--- a/lib/s390x/uv.h
+++ b/lib/s390x/uv.h
@@ -8,6 +8,7 @@ 
 bool uv_os_is_guest(void);
 bool uv_os_is_host(void);
 bool uv_query_test_call(unsigned int nr);
+const struct uv_cb_qui *uv_get_query_data(void);
 void uv_init(void);
 int uv_setup(void);
 void uv_create_guest(struct vm *vm);