All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: Pierre Morel <pmorel@linux.ibm.com>, kvm@vger.kernel.org
Cc: linux-s390@vger.kernel.org, frankja@linux.ibm.com,
	david@redhat.com, cohuck@redhat.com, imbrenda@linux.ibm.com,
	drjones@redhat.com, pbonzini@redhat.com
Subject: Re: [kvm-unit-tests PATCH v3 3/3] s390x: css: pv: css test adaptation for PV
Date: Wed, 20 Jan 2021 13:03:39 +0100	[thread overview]
Message-ID: <b4656e81-1492-d902-73cf-5a08a0a6247d@redhat.com> (raw)
In-Reply-To: <1611085944-21609-4-git-send-email-pmorel@linux.ibm.com>

On 19/01/2021 20.52, Pierre Morel wrote:
> We want the tests to automatically work with or without protected
> virtualisation.
> To do this we need to share the I/O memory with the host.
> 
> Let's replace all static allocations with dynamic allocations
> to clearly separate shared and private memory.
> 
> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> ---
[...]
> diff --git a/s390x/css.c b/s390x/css.c
> index ee3bc83..4b0b6b1 100644
> --- a/s390x/css.c
> +++ b/s390x/css.c
> @@ -17,13 +17,15 @@
>   #include <interrupt.h>
>   #include <asm/arch_def.h>
>   
> +#include <malloc_io.h>
>   #include <css.h>
> +#include <asm/barrier.h>
>   
>   #define DEFAULT_CU_TYPE		0x3832 /* virtio-ccw */
>   static unsigned long cu_type = DEFAULT_CU_TYPE;
>   
>   static int test_device_sid;
> -static struct senseid senseid;
> +static struct senseid *senseid;
>   
>   static void test_enumerate(void)
>   {
> @@ -57,6 +59,7 @@ static void test_enable(void)
>    */
>   static void test_sense(void)
>   {
> +	struct ccw1 *ccw;
>   	int ret;
>   	int len;
>   
> @@ -80,9 +83,15 @@ static void test_sense(void)
>   
>   	lowcore_ptr->io_int_param = 0;
>   
> -	memset(&senseid, 0, sizeof(senseid));
> -	ret = start_single_ccw(test_device_sid, CCW_CMD_SENSE_ID,
> -			       &senseid, sizeof(senseid), CCW_F_SLI);
> +	senseid = alloc_io_page(sizeof(*senseid));

Would it make sense to move the above alloc_io_page into the ccw_alloc() 
function, too?

> +	if (!senseid)
> +		goto error_senseid;
> +
> +	ccw = ccw_alloc(CCW_CMD_SENSE_ID, senseid, sizeof(*senseid), CCW_F_SLI);
> +	if (!ccw)
> +		goto error_ccw;
> +
> +	ret = start_ccw1_chain(test_device_sid, ccw);
>   	if (ret)
>   		goto error;

I think you should add a "report(0, ...)" or report_abort() in front of all 
three gotos above - otherwise the problems might go unnoticed.

> @@ -97,7 +106,7 @@ static void test_sense(void)
>   	if (ret < 0) {
>   		report_info("no valid residual count");
>   	} else if (ret != 0) {
> -		len = sizeof(senseid) - ret;
> +		len = sizeof(*senseid) - ret;
>   		if (ret && len < CSS_SENSEID_COMMON_LEN) {
>   			report(0, "transferred a too short length: %d", ret);
>   			goto error;
> @@ -105,21 +114,25 @@ static void test_sense(void)
>   			report_info("transferred a shorter length: %d", len);
>   	}
>   
> -	if (senseid.reserved != 0xff) {
> -		report(0, "transferred garbage: 0x%02x", senseid.reserved);
> +	if (senseid->reserved != 0xff) {
> +		report(0, "transferred garbage: 0x%02x", senseid->reserved);
>   		goto error;
>   	}
>   
>   	report_prefix_pop();
>   
>   	report_info("reserved 0x%02x cu_type 0x%04x cu_model 0x%02x dev_type 0x%04x dev_model 0x%02x",
> -		    senseid.reserved, senseid.cu_type, senseid.cu_model,
> -		    senseid.dev_type, senseid.dev_model);
> +		    senseid->reserved, senseid->cu_type, senseid->cu_model,
> +		    senseid->dev_type, senseid->dev_model);
>   
> -	report(senseid.cu_type == cu_type, "cu_type expected 0x%04x got 0x%04x",
> -	       (uint16_t) cu_type, senseid.cu_type);
> +	report(senseid->cu_type == cu_type, "cu_type expected 0x%04x got 0x%04x",
> +	       (uint16_t) cu_type, senseid->cu_type);
>   
>   error:
> +	free_io_page(ccw);
> +error_ccw:
> +	free_io_page(senseid);
> +error_senseid:
>   	unregister_io_int_func(css_irq_io);
>   }
>   
> 

  Thomas

  reply	other threads:[~2021-01-20 12:08 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-19 19:52 [kvm-unit-tests PATCH v3 0/3] s390x: css: pv: css test adaptation for PV Pierre Morel
2021-01-19 19:52 ` [kvm-unit-tests PATCH v3 1/3] s390x: pv: implement routine to share/unshare memory Pierre Morel
2021-01-20 10:48   ` Thomas Huth
2021-01-20 12:16     ` Pierre Morel
2021-01-20 16:48     ` Claudio Imbrenda
2021-01-19 19:52 ` [kvm-unit-tests PATCH v3 2/3] s390x: define UV compatible I/O allocation Pierre Morel
2021-01-20 11:01   ` Thomas Huth
2021-01-20 12:39     ` Pierre Morel
2021-01-20 12:25   ` Claudio Imbrenda
2021-01-20 12:41     ` Pierre Morel
2021-01-19 19:52 ` [kvm-unit-tests PATCH v3 3/3] s390x: css: pv: css test adaptation for PV Pierre Morel
2021-01-20 12:03   ` Thomas Huth [this message]
2021-01-21  9:07     ` Pierre Morel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b4656e81-1492-d902-73cf-5a08a0a6247d@redhat.com \
    --to=thuth@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=drjones@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=imbrenda@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=pmorel@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.