diff options
author | Xiao Feng Ren | 2017-05-17 02:48:11 +0200 |
---|---|---|
committer | Cornelia Huck | 2017-05-19 12:29:01 +0200 |
commit | bab482d7405f9fe3cac9c213d60f9ca9442c047b (patch) | |
tree | 7dc7df9f07152940bbfb2ee1034a982f44b66682 /include/hw | |
parent | s390x/css: introduce and realize ccw-request callback (diff) | |
download | qemu-bab482d7405f9fe3cac9c213d60f9ca9442c047b.tar.gz qemu-bab482d7405f9fe3cac9c213d60f9ca9442c047b.tar.xz qemu-bab482d7405f9fe3cac9c213d60f9ca9442c047b.zip |
s390x/css: ccw translation infrastructure
Implement a basic infrastructure of handling channel I/O instruction
interception for passed through subchannels:
1. Branch the code path of instruction interception handling by
SubChannel type.
2. For a passed-through subchannel, issue the ORB to kernel to do ccw
translation and perform an I/O operation.
3. Assign different condition code based on the I/O result, or
trigger a program check.
Signed-off-by: Xiao Feng Ren <renxiaof@linux.vnet.ibm.com>
Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Message-Id: <20170517004813.58227-12-bjsdjshi@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'include/hw')
-rw-r--r-- | include/hw/s390x/css.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h index a932f91edb..596a2f2ef3 100644 --- a/include/hw/s390x/css.h +++ b/include/hw/s390x/css.h @@ -91,6 +91,7 @@ struct SubchDev { /* transport-provided data: */ int (*ccw_cb) (SubchDev *, CCW1); void (*disable_cb)(SubchDev *); + int (*do_subchannel_work) (SubchDev *, ORB *); SenseId id; void *driver_data; }; @@ -148,6 +149,9 @@ void css_generate_chp_crws(uint8_t cssid, uint8_t chpid); void css_generate_css_crws(uint8_t cssid); void css_clear_sei_pending(void); void css_adapter_interrupt(uint8_t isc); +int s390_ccw_cmd_request(ORB *orb, SCSW *scsw, void *data); +int do_subchannel_work_virtual(SubchDev *sub, ORB *orb); +int do_subchannel_work_passthrough(SubchDev *sub, ORB *orb); typedef enum { CSS_IO_ADAPTER_VIRTIO = 0, |