[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 17/40] s390x/css: use SubchDev.orb
From: |
Christian Borntraeger |
Subject: |
[Qemu-devel] [PULL 17/40] s390x/css: use SubchDev.orb |
Date: |
Fri, 14 Jul 2017 12:40:44 +0200 |
From: Halil Pasic <address@hidden>
Instead of passing around a pointer to ORB let us simplify some
function signatures by using the previously introduced ORB saved at the
subchannel (SubchDev).
Signed-off-by: Halil Pasic <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Christian Borntraeger <address@hidden>
---
hw/s390x/css.c | 30 +++++++++++++++---------------
include/hw/s390x/css.h | 6 +++---
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/hw/s390x/css.c b/hw/s390x/css.c
index 62db7f6..997815c 100644
--- a/hw/s390x/css.c
+++ b/hw/s390x/css.c
@@ -909,7 +909,7 @@ static int css_interpret_ccw(SubchDev *sch, hwaddr ccw_addr,
return ret;
}
-static void sch_handle_start_func_virtual(SubchDev *sch, ORB *orb)
+static void sch_handle_start_func_virtual(SubchDev *sch)
{
PMCW *p = &sch->curr_status.pmcw;
@@ -923,10 +923,10 @@ static void sch_handle_start_func_virtual(SubchDev *sch,
ORB *orb)
if (!(s->ctrl & SCSW_ACTL_SUSP)) {
/* Start Function triggered via ssch, i.e. we have an ORB */
+ ORB *orb = &sch->orb;
s->cstat = 0;
s->dstat = 0;
/* Look at the orb and try to execute the channel program. */
- assert(orb != NULL); /* resume does not pass an orb */
p->intparm = orb->intparm;
if (!(orb->lpm & path)) {
/* Generate a deferred cc 3 condition. */
@@ -940,8 +940,7 @@ static void sch_handle_start_func_virtual(SubchDev *sch,
ORB *orb)
sch->ccw_no_data_cnt = 0;
suspend_allowed = !!(orb->ctrl0 & ORB_CTRL0_MASK_SPND);
} else {
- /* Start Function resumed via rsch, i.e. we don't have an
- * ORB */
+ /* Start Function resumed via rsch */
s->ctrl &= ~(SCSW_ACTL_SUSP | SCSW_ACTL_RESUME_PEND);
/* The channel program had been suspended before. */
suspend_allowed = true;
@@ -1011,13 +1010,14 @@ static void sch_handle_start_func_virtual(SubchDev
*sch, ORB *orb)
}
-static int sch_handle_start_func_passthrough(SubchDev *sch, ORB *orb)
+static int sch_handle_start_func_passthrough(SubchDev *sch)
{
PMCW *p = &sch->curr_status.pmcw;
SCSW *s = &sch->curr_status.scsw;
int ret;
+ ORB *orb = &sch->orb;
if (!(s->ctrl & SCSW_ACTL_SUSP)) {
assert(orb != NULL);
p->intparm = orb->intparm;
@@ -1062,7 +1062,7 @@ static int sch_handle_start_func_passthrough(SubchDev
*sch, ORB *orb)
* read/writes) asynchronous later on if we start supporting more than
* our current very simple devices.
*/
-int do_subchannel_work_virtual(SubchDev *sch, ORB *orb)
+int do_subchannel_work_virtual(SubchDev *sch)
{
SCSW *s = &sch->curr_status.scsw;
@@ -1073,7 +1073,7 @@ int do_subchannel_work_virtual(SubchDev *sch, ORB *orb)
sch_handle_halt_func(sch);
} else if (s->ctrl & SCSW_FCTL_START_FUNC) {
/* Triggered by both ssch and rsch. */
- sch_handle_start_func_virtual(sch, orb);
+ sch_handle_start_func_virtual(sch);
} else {
/* Cannot happen. */
return 0;
@@ -1082,7 +1082,7 @@ int do_subchannel_work_virtual(SubchDev *sch, ORB *orb)
return 0;
}
-int do_subchannel_work_passthrough(SubchDev *sch, ORB *orb)
+int do_subchannel_work_passthrough(SubchDev *sch)
{
int ret;
SCSW *s = &sch->curr_status.scsw;
@@ -1096,7 +1096,7 @@ int do_subchannel_work_passthrough(SubchDev *sch, ORB
*orb)
sch_handle_halt_func(sch);
ret = 0;
} else if (s->ctrl & SCSW_FCTL_START_FUNC) {
- ret = sch_handle_start_func_passthrough(sch, orb);
+ ret = sch_handle_start_func_passthrough(sch);
} else {
/* Cannot happen. */
return -ENODEV;
@@ -1105,10 +1105,10 @@ int do_subchannel_work_passthrough(SubchDev *sch, ORB
*orb)
return ret;
}
-static int do_subchannel_work(SubchDev *sch, ORB *orb)
+static int do_subchannel_work(SubchDev *sch)
{
if (sch->do_subchannel_work) {
- return sch->do_subchannel_work(sch, orb);
+ return sch->do_subchannel_work(sch);
} else {
return -EINVAL;
}
@@ -1315,7 +1315,7 @@ int css_do_csch(SubchDev *sch)
s->ctrl &= ~(SCSW_CTRL_MASK_FCTL | SCSW_CTRL_MASK_ACTL);
s->ctrl |= SCSW_FCTL_CLEAR_FUNC | SCSW_ACTL_CLEAR_PEND;
- do_subchannel_work(sch, NULL);
+ do_subchannel_work(sch);
ret = 0;
out:
@@ -1356,7 +1356,7 @@ int css_do_hsch(SubchDev *sch)
}
s->ctrl |= SCSW_ACTL_HALT_PEND;
- do_subchannel_work(sch, NULL);
+ do_subchannel_work(sch);
ret = 0;
out:
@@ -1431,7 +1431,7 @@ int css_do_ssch(SubchDev *sch, ORB *orb)
s->ctrl |= (SCSW_FCTL_START_FUNC | SCSW_ACTL_START_PEND);
s->flags &= ~SCSW_FLAGS_MASK_PNO;
- ret = do_subchannel_work(sch, orb);
+ ret = do_subchannel_work(sch);
out:
return ret;
@@ -1710,7 +1710,7 @@ int css_do_rsch(SubchDev *sch)
}
s->ctrl |= SCSW_ACTL_RESUME_PEND;
- do_subchannel_work(sch, NULL);
+ do_subchannel_work(sch);
ret = 0;
out:
diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h
index 71076cb..c9edd07 100644
--- a/include/hw/s390x/css.h
+++ b/include/hw/s390x/css.h
@@ -94,7 +94,7 @@ struct SubchDev {
/* transport-provided data: */
int (*ccw_cb) (SubchDev *, CCW1);
void (*disable_cb)(SubchDev *);
- int (*do_subchannel_work) (SubchDev *, ORB *);
+ int (*do_subchannel_work) (SubchDev *);
SenseId id;
void *driver_data;
};
@@ -157,8 +157,8 @@ 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);
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);
+int do_subchannel_work_virtual(SubchDev *sub);
+int do_subchannel_work_passthrough(SubchDev *sub);
typedef enum {
CSS_IO_ADAPTER_VIRTIO = 0,
--
2.7.4
- [Qemu-devel] [PULL 00/40] s390x: fixes, enhancements for 2.10 softfreeze, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 02/40] linux-headers: update to 4.13-rc0, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 07/40] s390x: add flags field for registering I/O adapter, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 05/40] s390x/cpumodel: clean up spacing and comments, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 01/40] s390x/kvm: Rework cmma management, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 03/40] s390x/migration: Storage attributes device, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 17/40] s390x/css: use SubchDev.orb,
Christian Borntraeger <=
- [Qemu-devel] [PULL 18/40] pc-bios/s390-ccw: Move libc functions to separate header, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 20/40] pc-bios/s390-ccw: Move virtio-block related functions into a separate file, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 39/40] s390x/arch_dump: also dump guarded storage control block, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 35/40] s390x/cpumodel: we are always in zarchitecture mode, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 28/40] pc-bios/s390-ccw: Link libnet into the netboot image and do the TFTP load, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 38/40] s390x/kvm: enable guarded storage, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 40/40] s390x/gdb: add gs registers, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 27/40] pc-bios/s390-ccw: Add virtio-net driver code, Christian Borntraeger, 2017/07/14