From: "Andreas Färber" <afaerber@suse.de>
To: Christian Borntraeger <borntraeger@de.ibm.com>,
Peter Maydell <peter.maydell@linaro.org>,
Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: Jens Freimann <jfrei@linux.vnet.ibm.com>,
Richard Henderson <rth@twiddle.net>,
qemu-devel <qemu-devel@nongnu.org>,
Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PULL 2/3] s390x/css: support format-0 ccws
Date: Fri, 26 Sep 2014 12:41:51 +0200 [thread overview]
Message-ID: <542542EF.2040403@suse.de> (raw)
In-Reply-To: <1411474456-12226-3-git-send-email-borntraeger@de.ibm.com>
Am 23.09.2014 um 14:14 schrieb Christian Borntraeger:
> From: Cornelia Huck <cornelia.huck@de.ibm.com>
>
> Add support for format-0 ccws in channel programs. As a format-1 ccw
> contains the same information as format-0 ccws, only supporting larger
> addresses, simply convert every ccw to format-1 as we walk the chain.
>
> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
> ---
> hw/s390x/css.c | 30 +++++++++++++++++++++---------
> hw/s390x/css.h | 1 +
> target-s390x/ioinst.h | 10 ++++++++++
> 3 files changed, 32 insertions(+), 9 deletions(-)
>
> diff --git a/hw/s390x/css.c b/hw/s390x/css.c
> index 49c2aaf..34637cb 100644
> --- a/hw/s390x/css.c
> +++ b/hw/s390x/css.c
> @@ -243,17 +243,25 @@ static void copy_sense_id_to_guest(SenseId *dest, SenseId *src)
> }
> }
>
> -static CCW1 copy_ccw_from_guest(hwaddr addr)
> +static CCW1 copy_ccw_from_guest(hwaddr addr, bool fmt1)
> {
> - CCW1 tmp;
> + CCW0 tmp0;
> + CCW1 tmp1;
> CCW1 ret;
>
> - cpu_physical_memory_read(addr, &tmp, sizeof(tmp));
> - ret.cmd_code = tmp.cmd_code;
> - ret.flags = tmp.flags;
> - ret.count = be16_to_cpu(tmp.count);
> - ret.cda = be32_to_cpu(tmp.cda);
> -
> + if (fmt1) {
> + cpu_physical_memory_read(addr, &tmp1, sizeof(tmp1));
> + ret.cmd_code = tmp1.cmd_code;
> + ret.flags = tmp1.flags;
> + ret.count = be16_to_cpu(tmp1.count);
> + ret.cda = be32_to_cpu(tmp1.cda);
> + } else {
> + cpu_physical_memory_read(addr, &tmp0, sizeof(tmp0));
> + ret.cmd_code = tmp0.cmd_code;
> + ret.flags = tmp0.flags;
> + ret.count = be16_to_cpu(tmp0.count);
> + ret.cda = be16_to_cpu(tmp0.cda1) | (tmp0.cda0 << 16);
> + }
> return ret;
> }
>
> @@ -268,7 +276,8 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr)
> return -EIO;
> }
>
> - ccw = copy_ccw_from_guest(ccw_addr);
> + /* Translate everything to format-1 ccws - the information is the same. */
> + ccw = copy_ccw_from_guest(ccw_addr, sch->ccw_fmt_1);
>
> /* Check for invalid command codes. */
> if ((ccw.cmd_code & 0x0f) == 0) {
> @@ -386,6 +395,7 @@ static void sch_handle_start_func(SubchDev *sch, ORB *orb)
> s->ctrl |= (SCSW_STCTL_ALERT | SCSW_STCTL_STATUS_PEND);
> return;
> }
> + sch->ccw_fmt_1 = !!(orb->ctrl0 & ORB_CTRL0_MASK_FMT);
> } else {
> s->ctrl &= ~(SCSW_ACTL_SUSP | SCSW_ACTL_RESUME_PEND);
> }
> @@ -1347,6 +1357,7 @@ void subch_device_save(SubchDev *s, QEMUFile *f)
> qemu_put_byte(f, s->id.ciw[i].command);
> qemu_put_be16(f, s->id.ciw[i].count);
> }
> + qemu_put_byte(f, s->ccw_fmt_1);
> return;
> }
>
> @@ -1402,6 +1413,7 @@ int subch_device_load(SubchDev *s, QEMUFile *f)
> s->id.ciw[i].command = qemu_get_byte(f);
> s->id.ciw[i].count = qemu_get_be16(f);
> }
> + s->ccw_fmt_1 = qemu_get_byte(f);
> return 0;
> }
>
Same load/save issue here as in 3/3.
Regards,
Andreas
> diff --git a/hw/s390x/css.h b/hw/s390x/css.h
> index c864ea7..384a455 100644
> --- a/hw/s390x/css.h
> +++ b/hw/s390x/css.h
> @@ -76,6 +76,7 @@ struct SubchDev {
> hwaddr channel_prog;
> CCW1 last_cmd;
> bool last_cmd_valid;
> + bool ccw_fmt_1;
> bool thinint_active;
> /* transport-provided data: */
> int (*ccw_cb) (SubchDev *, CCW1);
> diff --git a/target-s390x/ioinst.h b/target-s390x/ioinst.h
> index 5bbc67d..29f6423 100644
> --- a/target-s390x/ioinst.h
> +++ b/target-s390x/ioinst.h
> @@ -156,6 +156,16 @@ typedef struct ORB {
> #define ORB_CTRL1_MASK_ORBX 0x01
> #define ORB_CTRL1_MASK_INVALID 0x3e
>
> +/* channel command word (type 0) */
> +typedef struct CCW0 {
> + uint8_t cmd_code;
> + uint8_t cda0;
> + uint16_t cda1;
> + uint8_t flags;
> + uint8_t reserved;
> + uint16_t count;
> +} QEMU_PACKED CCW0;
> +
> /* channel command word (type 1) */
> typedef struct CCW1 {
> uint8_t cmd_code;
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2014-09-26 10:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-23 12:14 [Qemu-devel] [PULL 0/3] s390x/kvm: some fixes and cleanups Christian Borntraeger
2014-09-23 12:14 ` [Qemu-devel] [PULL 1/3] s390x: remove duplicate defines in SCLP code Christian Borntraeger
2014-09-23 12:14 ` [Qemu-devel] [PULL 2/3] s390x/css: support format-0 ccws Christian Borntraeger
2014-09-26 10:41 ` Andreas Färber [this message]
2014-09-23 12:14 ` [Qemu-devel] [PULL 3/3] s390x/css: catch ccw sequence errors Christian Borntraeger
2014-09-26 10:36 ` Andreas Färber
2014-09-26 10:49 ` Christian Borntraeger
2014-09-26 11:18 ` Andreas Färber
2014-09-23 13:42 ` [Qemu-devel] [PULL 0/3] s390x/kvm: some fixes and cleanups Peter Maydell
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=542542EF.2040403@suse.de \
--to=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=jfrei@linux.vnet.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.