All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cornelia.huck@de.ibm.com>
To: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	qemu-devel@nongnu.org, renxiaof@linux.vnet.ibm.com,
	borntraeger@de.ibm.com, agraf@suse.com,
	alex.williamson@redhat.com, pmorel@linux.vnet.ibm.com,
	pasic@linux.vnet.ibm.com, wkywang@linux.vnet.ibm.com
Subject: Re: [PATCH RFC v3 15/15] vfio: ccw: introduce support for ccw0
Date: Tue, 21 Feb 2017 16:47:33 +0100	[thread overview]
Message-ID: <20170221164733.105ed0f7.cornelia.huck@de.ibm.com> (raw)
In-Reply-To: <20170221085824.GN562@bjsdjshi@linux.vnet.ibm.com>

On Tue, 21 Feb 2017 16:58:24 +0800
Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> wrote:

> * Cornelia Huck <cornelia.huck@de.ibm.com> [2017-02-20 19:59:01 +0100]:
> 
> > On Fri, 17 Feb 2017 09:29:39 +0100
> > Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> wrote:
> > 
> > > Although Linux does not use format-0 channel command words (CCW0)
> > > these are a non-optional part of the platform spec, and for the sake
> > > of platform compliance, and possibly some non-Linux guests, we have
> > > to support CCW0.
> > > 
> > > Making the kernel execute a format 0 channel program is too much hassle
> > > because we would need to allocate and use memory which can be addressed
> > > by 24 bit physical addresses (because of CCW0.cda). So we implement CCW0
> > > support by translating the channel program into an equivalent CCW1
> > > program instead.
> > > 
> > > Signed-off-by: Kai Yue Wang <wkywang@linux.vnet.ibm.com>
> > > Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
> > > ---
> > >  arch/s390/Kconfig              |  7 +++++
> > >  drivers/s390/cio/vfio_ccw_cp.c | 58 ++++++++++++++++++++++++++++++++++++++++--
> > >  2 files changed, 63 insertions(+), 2 deletions(-)

> > > +#ifdef CONFIG_VFIO_CCW_CCW0
> > > +static long copy_ccw_from_iova(struct channel_program *cp,
> > > +			       struct ccw1 *to, u64 iova,
> > > +			       unsigned long len)
> > > +{
> > > +	struct ccw0 ccw0;
> > > +	struct ccw1 *pccw1;
> > > +	int ret;
> > > +	int i;
> > > +
> > > +	ret = copy_from_iova(cp->mdev, to, iova, len * sizeof(struct ccw1));
> > > +	if (ret)
> > > +		return ret;
> > > +
> > > +	if (!cp->orb.cmd.fmt) {
> > > +		pccw1 = to;
> > > +		for (i = 0; i < len; i++) {
> > > +			ccw0 = *(struct ccw0 *)pccw1;
> > > +			pccw1->cmd_code = ccw0.cmd_code;
> > > +			pccw1->flags = ccw0.flags;
> > > +			pccw1->count = ccw0.count;
> > > +			pccw1->cda = ccw0.cda;
> > > +			pccw1++;
> > > +		}
> > 
> > IIRC there are one or two very subtle differences between what format-0
> > and what format-1 ccws allow (see the ccw interpretation in qemu --
> > probably easier than combing through the PoP). We should either check
> > this or add a comment why we don't.
> > 
> Cool! Thanks for pointing out this!
> 
> Transfer in Channel, 15-73, PoP:
> --------------------8<-----------------------------
> The contents of the second half of the format-0 CCW,
> bit positions 32-63, are ignored. Similarly, the con-
> tents of bit positions 0-3 of the format-0 CCW are
> ignored.
> 
> Bit positions 0-3 and 8-32 of the format-1 CCW must
> contain zeros; otherwise, a program-check condition
> is generated.
> -------------------->8-----------------------------
> 
> I will fix according to the above description.

Yes. It's a bit unfortunate that we have to inspect the ccws, but it
probably can't be helped if we want to be architecture compliant.

> 
> I also checked the code in qemu. It seems that it is not compliant with
> the second paragraph above. Could I send out a separated patch to fix
> that?

Please do, bugfixes are welcome :)

> 
> > > +	}
> > > +
> > > +	return ret;
> > > +}

WARNING: multiple messages have this Message-ID (diff)
From: Cornelia Huck <cornelia.huck@de.ibm.com>
To: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org,
	qemu-devel@nongnu.org, renxiaof@linux.vnet.ibm.com,
	borntraeger@de.ibm.com, agraf@suse.com,
	alex.williamson@redhat.com, pmorel@linux.vnet.ibm.com,
	pasic@linux.vnet.ibm.com, wkywang@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH RFC v3 15/15] vfio: ccw: introduce support for ccw0
Date: Tue, 21 Feb 2017 16:47:33 +0100	[thread overview]
Message-ID: <20170221164733.105ed0f7.cornelia.huck@de.ibm.com> (raw)
In-Reply-To: <20170221085824.GN562@bjsdjshi@linux.vnet.ibm.com>

On Tue, 21 Feb 2017 16:58:24 +0800
Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> wrote:

> * Cornelia Huck <cornelia.huck@de.ibm.com> [2017-02-20 19:59:01 +0100]:
> 
> > On Fri, 17 Feb 2017 09:29:39 +0100
> > Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> wrote:
> > 
> > > Although Linux does not use format-0 channel command words (CCW0)
> > > these are a non-optional part of the platform spec, and for the sake
> > > of platform compliance, and possibly some non-Linux guests, we have
> > > to support CCW0.
> > > 
> > > Making the kernel execute a format 0 channel program is too much hassle
> > > because we would need to allocate and use memory which can be addressed
> > > by 24 bit physical addresses (because of CCW0.cda). So we implement CCW0
> > > support by translating the channel program into an equivalent CCW1
> > > program instead.
> > > 
> > > Signed-off-by: Kai Yue Wang <wkywang@linux.vnet.ibm.com>
> > > Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
> > > ---
> > >  arch/s390/Kconfig              |  7 +++++
> > >  drivers/s390/cio/vfio_ccw_cp.c | 58 ++++++++++++++++++++++++++++++++++++++++--
> > >  2 files changed, 63 insertions(+), 2 deletions(-)

> > > +#ifdef CONFIG_VFIO_CCW_CCW0
> > > +static long copy_ccw_from_iova(struct channel_program *cp,
> > > +			       struct ccw1 *to, u64 iova,
> > > +			       unsigned long len)
> > > +{
> > > +	struct ccw0 ccw0;
> > > +	struct ccw1 *pccw1;
> > > +	int ret;
> > > +	int i;
> > > +
> > > +	ret = copy_from_iova(cp->mdev, to, iova, len * sizeof(struct ccw1));
> > > +	if (ret)
> > > +		return ret;
> > > +
> > > +	if (!cp->orb.cmd.fmt) {
> > > +		pccw1 = to;
> > > +		for (i = 0; i < len; i++) {
> > > +			ccw0 = *(struct ccw0 *)pccw1;
> > > +			pccw1->cmd_code = ccw0.cmd_code;
> > > +			pccw1->flags = ccw0.flags;
> > > +			pccw1->count = ccw0.count;
> > > +			pccw1->cda = ccw0.cda;
> > > +			pccw1++;
> > > +		}
> > 
> > IIRC there are one or two very subtle differences between what format-0
> > and what format-1 ccws allow (see the ccw interpretation in qemu --
> > probably easier than combing through the PoP). We should either check
> > this or add a comment why we don't.
> > 
> Cool! Thanks for pointing out this!
> 
> Transfer in Channel, 15-73, PoP:
> --------------------8<-----------------------------
> The contents of the second half of the format-0 CCW,
> bit positions 32-63, are ignored. Similarly, the con-
> tents of bit positions 0-3 of the format-0 CCW are
> ignored.
> 
> Bit positions 0-3 and 8-32 of the format-1 CCW must
> contain zeros; otherwise, a program-check condition
> is generated.
> -------------------->8-----------------------------
> 
> I will fix according to the above description.

Yes. It's a bit unfortunate that we have to inspect the ccws, but it
probably can't be helped if we want to be architecture compliant.

> 
> I also checked the code in qemu. It seems that it is not compliant with
> the second paragraph above. Could I send out a separated patch to fix
> that?

Please do, bugfixes are welcome :)

> 
> > > +	}
> > > +
> > > +	return ret;
> > > +}

  reply	other threads:[~2017-02-21 15:47 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-17  8:29 [PATCH RFC v3 00/15] basic vfio-ccw infrastructure Dong Jia Shi
2017-02-17  8:29 ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 01/15] s390: cio: introduce cio_cancel_halt_clear Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 02/15] s390: cio: export more interfaces Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 03/15] vfio: ccw: define device_api strings Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 04/15] vfio: ccw: basic implementation for vfio_ccw driver Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-20 18:31   ` Cornelia Huck
2017-02-20 18:31     ` [Qemu-devel] " Cornelia Huck
2017-02-21  7:36     ` Dong Jia Shi
2017-02-21  7:36     ` [Qemu-devel] " Dong Jia Shi
2017-02-21  7:43       ` Dong Jia Shi
2017-02-21  7:43       ` [Qemu-devel] " Dong Jia Shi
2017-02-21 15:43       ` Cornelia Huck
2017-02-21 15:43         ` [Qemu-devel] " Cornelia Huck
2017-02-22  3:05         ` Dong Jia Shi
2017-02-22  3:05         ` Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 05/15] vfio: ccw: introduce channel program interfaces Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 06/15] vfio: ccw: register vfio_ccw to the mediated device framework Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 07/15] vfio: ccw: introduce ccw_io_region Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-24 23:13   ` Alex Williamson
2017-02-24 23:13     ` [Qemu-devel] " Alex Williamson
2017-02-17  8:29 ` [PATCH RFC v3 08/15] vfio: ccw: handle ccw command request Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 09/15] vfio: ccw: realize VFIO_DEVICE_GET_REGION_INFO ioctl Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 10/15] vfio: ccw: realize VFIO_DEVICE_RESET ioctl Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 11/15] vfio: ccw: realize VFIO_DEVICE_G(S)ET_IRQ_INFO ioctls Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-24 23:27   ` Alex Williamson
2017-02-24 23:27     ` [Qemu-devel] " Alex Williamson
2017-02-27  1:44     ` Dong Jia Shi
2017-02-27  1:44     ` Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 12/15] vfio: ccw: return I/O results asynchronously Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 13/15] vfio: ccw: introduce a finite state machine Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 14/15] docs: add documentation for vfio-ccw Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-17  8:29 ` [PATCH RFC v3 15/15] vfio: ccw: introduce support for ccw0 Dong Jia Shi
2017-02-17  8:29   ` [Qemu-devel] " Dong Jia Shi
2017-02-20 18:59   ` Cornelia Huck
2017-02-20 18:59     ` [Qemu-devel] " Cornelia Huck
2017-02-21  8:58     ` Dong Jia Shi
2017-02-21  8:58     ` [Qemu-devel] " Dong Jia Shi
2017-02-21 15:47       ` Cornelia Huck [this message]
2017-02-21 15:47         ` Cornelia Huck
2017-03-09  9:25 ` [Qemu-devel] [PATCH RFC v3 00/15] basic vfio-ccw infrastructure Dong Jia Shi
2017-03-10 10:46   ` Cornelia Huck
2017-03-10 10:46     ` [Qemu-devel] " Cornelia Huck
2017-03-13  7:16     ` Dong Jia Shi
2017-03-16  9:25       ` Cornelia Huck
2017-03-16  9:25         ` [Qemu-devel] " Cornelia Huck
2017-03-16  9:28         ` Dong Jia Shi

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=20170221164733.105ed0f7.cornelia.huck@de.ibm.com \
    --to=cornelia.huck@de.ibm.com \
    --cc=agraf@suse.com \
    --cc=alex.williamson@redhat.com \
    --cc=bjsdjshi@linux.vnet.ibm.com \
    --cc=borntraeger@de.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=pasic@linux.vnet.ibm.com \
    --cc=pmorel@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=renxiaof@linux.vnet.ibm.com \
    --cc=wkywang@linux.vnet.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.