From: Cornelia Huck <cohuck@redhat.com>
To: Halil Pasic <pasic@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>,
linux-s390@vger.kernel.org, Eric Farman <farman@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
kvm@vger.kernel.org, Sebastian Ott <sebott@linux.ibm.com>,
Farhan Ali <alifm@linux.ibm.com>,
virtualization@lists.linux-foundation.org,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Viktor Mihajlovski <mihajlov@linux.ibm.com>,
Janosch Frank <frankja@linux.ibm.com>
Subject: Re: [RFC PATCH 05/12] s390/cio: add protected virtualization support to cio
Date: Tue, 9 Apr 2019 19:55:48 +0200 [thread overview]
Message-ID: <20190409195548.6dea6e40.cohuck@redhat.com> (raw)
In-Reply-To: <20190404231622.52531-6-pasic@linux.ibm.com>
On Fri, 5 Apr 2019 01:16:15 +0200
Halil Pasic <pasic@linux.ibm.com> wrote:
> Virtio-ccw relies on cio mechanisms for bootstrapping the ccw device.
Well, a ccw device is, by definition, using cio mechanisms ;)
Better say: "As virtio-ccw devices are channel devices, we need to use
the dma area for any communication with the hypervisor."
Or something like that.
> Thus we need to make sure any memory that is used for communication with
> the hypervisor is shared.
In this context, does 'hypervisor' always mean 'QEMU/KVM'? If Other
Hypervisors implement protected virtualization, we probably need to
make sure that all common I/O layer control blocks are in the dma area
(including e.g. QDIO), not just what virtio-ccw devices use.
>
> Signed-off-by: Halil Pasic <pasic@linux.ibm.com>
> ---
> drivers/s390/cio/ccwreq.c | 8 +++----
> drivers/s390/cio/device.c | 46 +++++++++++++++++++++++++++++++---------
> drivers/s390/cio/device_fsm.c | 40 +++++++++++++++++-----------------
> drivers/s390/cio/device_id.c | 18 ++++++++--------
> drivers/s390/cio/device_ops.c | 4 ++--
> drivers/s390/cio/device_pgid.c | 20 ++++++++---------
> drivers/s390/cio/device_status.c | 24 ++++++++++-----------
> drivers/s390/cio/io_sch.h | 19 ++++++++++++-----
> 8 files changed, 107 insertions(+), 72 deletions(-)
>
(...)
(just looking at which fields are moved for now)
> diff --git a/drivers/s390/cio/io_sch.h b/drivers/s390/cio/io_sch.h
> index 90e4e3a7841b..fc3220fede0f 100644
> --- a/drivers/s390/cio/io_sch.h
> +++ b/drivers/s390/cio/io_sch.h
> @@ -9,15 +9,20 @@
> #include "css.h"
> #include "orb.h"
>
> +
> +struct io_subchannel_dma_area {
> + struct ccw1 sense_ccw; /* static ccw for sense command */
The ccw makes sense.
> +};
> +
> struct io_subchannel_private {
> union orb orb; /* operation request block */
> - struct ccw1 sense_ccw; /* static ccw for sense command */
> struct ccw_device *cdev;/* pointer to the child ccw device */
> struct {
> unsigned int suspend:1; /* allow suspend */
> unsigned int prefetch:1;/* deny prefetch */
> unsigned int inter:1; /* suppress intermediate interrupts */
> } __packed options;
> + struct io_subchannel_dma_area *dma_area;
> } __aligned(8);
>
> #define to_io_private(n) ((struct io_subchannel_private *) \
> @@ -115,6 +120,13 @@ enum cdev_todo {
> #define FAKE_CMD_IRB 1
> #define FAKE_TM_IRB 2
>
> +struct ccw_device_dma_area {
> + struct senseid senseid; /* SenseID info */
> + struct ccw1 iccws[2]; /* ccws for SNID/SID/SPGID commands */
> + struct irb irb; /* device status */
> + struct pgid pgid[8]; /* path group IDs per chpid*/
Again, ccws, and blocks that will be written by the hypervisor, which
makes sense as well.
> +};
> +
> struct ccw_device_private {
> struct ccw_device *cdev;
> struct subchannel *sch;
> @@ -156,11 +168,7 @@ struct ccw_device_private {
> } __attribute__((packed)) flags;
> unsigned long intparm; /* user interruption parameter */
> struct qdio_irq *qdio_data;
> - struct irb irb; /* device status */
> int async_kill_io_rc;
> - struct senseid senseid; /* SenseID info */
> - struct pgid pgid[8]; /* path group IDs per chpid*/
> - struct ccw1 iccws[2]; /* ccws for SNID/SID/SPGID commands */
> struct work_struct todo_work;
> enum cdev_todo todo;
> wait_queue_head_t wait_q;
> @@ -169,6 +177,7 @@ struct ccw_device_private {
> struct list_head cmb_list; /* list of measured devices */
> u64 cmb_start_time; /* clock value of cmb reset */
> void *cmb_wait; /* deferred cmb enable/disable */
> + struct ccw_device_dma_area *dma_area;
> enum interruption_class int_class;
> };
>
So, this leaves some things I'm not sure about, especially as I do not
know the architecture of this new feature.
- This applies only to asynchronously handled things, it seems? So
things like control blocks modified by stsch/msch/etc does not need
special treatment?
- What about channel measurements? Or are they not supported?
- What about CHSCs? Or would only asynchronous commands (which we
currently don't implement in QEMU) need special treatment?
next prev parent reply other threads:[~2019-04-09 17:55 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190404231622.52531-1-pasic@linux.ibm.com>
[not found] ` <20190404231622.52531-2-pasic@linux.ibm.com>
2019-04-08 11:01 ` [RFC PATCH 01/12] virtio/s390: use vring_create_virtqueue Cornelia Huck
2019-04-08 12:37 ` Michael S. Tsirkin
[not found] ` <20190404231622.52531-3-pasic@linux.ibm.com>
2019-04-09 9:57 ` [RFC PATCH 02/12] virtio/s390: DMA support for virtio-ccw Cornelia Huck
[not found] ` <20190409132927.5df3bc50@oc2783563651>
2019-04-09 13:01 ` Cornelia Huck
[not found] ` <20190409152313.0296e8f1@oc2783563651>
2019-04-09 15:47 ` Cornelia Huck
[not found] ` <20190404231622.52531-4-pasic@linux.ibm.com>
2019-04-09 10:16 ` [RFC PATCH 03/12] s390/mm: force swiotlb for protected virtualization Cornelia Huck
[not found] ` <20190409125416.73713f23@oc2783563651>
2019-04-09 17:18 ` Cornelia Huck
2019-04-09 12:22 ` Christoph Hellwig
[not found] ` <20190404231622.52531-8-pasic@linux.ibm.com>
2019-04-10 8:42 ` [RFC PATCH 07/12] virtio/s390: use DMA memory for ccw I/O Cornelia Huck
[not found] ` <20190410164245.53f8b26d@oc2783563651>
2019-04-10 16:21 ` Cornelia Huck
[not found] ` <20190404231622.52531-11-pasic@linux.ibm.com>
2019-04-10 8:46 ` [RFC PATCH 10/12] virtio/s390: consolidate DMA allocations Cornelia Huck
[not found] ` <20190410171254.71206015@oc2783563651>
2019-04-10 16:36 ` Cornelia Huck
[not found] ` <20190410194849.511ecc46@oc2783563651>
2019-04-11 9:24 ` Cornelia Huck
2019-04-10 9:20 ` [RFC PATCH 00/12] s390: virtio: support protected virtualization Cornelia Huck
[not found] ` <20190410175750.0ed0a454@oc2783563651>
2019-04-10 16:24 ` Cornelia Huck
[not found] ` <20190404231622.52531-6-pasic@linux.ibm.com>
2019-04-09 17:55 ` Cornelia Huck [this message]
[not found] ` <20190410021044.4da3e847@oc2783563651>
2019-04-10 8:25 ` [RFC PATCH 05/12] s390/cio: add protected virtualization support to cio Cornelia Huck
[not found] ` <20190410150225.61b86cd9@oc2783563651>
2019-04-10 16:16 ` Cornelia Huck
2019-04-11 14:15 ` Sebastian Ott
[not found] ` <20190404231622.52531-5-pasic@linux.ibm.com>
2019-04-09 10:44 ` [RFC PATCH 04/12] s390/cio: introduce cio DMA pool Cornelia Huck
[not found] ` <20190409141114.7dcce94a@oc2783563651>
2019-04-09 17:14 ` Cornelia Huck
[not found] ` <20190410173148.067555dc@oc2783563651>
2019-04-10 16:07 ` Cornelia Huck
2019-04-11 18:25 ` Sebastian Ott
[not found] ` <20190412132010.3c74cb63@oc2783563651>
2019-04-12 12:12 ` Sebastian Ott
[not found] ` <20190412173017.04b768bb@oc2783563651>
2019-04-16 12:50 ` Sebastian Ott
2019-04-12 13:47 ` [RFC PATCH 00/12] s390: virtio: support protected virtualization David Hildenbrand
[not found] ` <20190416131005.6f3e05eb@oc2783563651>
2019-04-16 11:50 ` David Hildenbrand
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=20190409195548.6dea6e40.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=alifm@linux.ibm.com \
--cc=farman@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mihajlov@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=schwidefsky@de.ibm.com \
--cc=sebott@linux.ibm.com \
--cc=virtualization@lists.linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).