From: Cornelia Huck <cohuck@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Eric Farman <farman@linux.ibm.com>,
qemu-s390x@nongnu.org, Cornelia Huck <cohuck@redhat.com>,
qemu-devel@nongnu.org
Subject: [PULL 5/7] s390x/css: Refactor the css_queue_crw() routine
Date: Thu, 18 Jun 2020 17:38:52 +0200 [thread overview]
Message-ID: <20200618153854.271723-6-cohuck@redhat.com> (raw)
In-Reply-To: <20200618153854.271723-1-cohuck@redhat.com>
From: Eric Farman <farman@linux.ibm.com>
We have a use case (vfio-ccw) where a CRW is already built and
ready to use. Rather than teasing out the components just to
reassemble it later, let's rework this code so we can queue a
fully-qualified CRW directly.
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20200505125757.98209-6-farman@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
hw/s390x/css.c | 44 ++++++++++++++++++++++++++++--------------
include/hw/s390x/css.h | 1 +
2 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/hw/s390x/css.c b/hw/s390x/css.c
index a44faa3549b4..d1e365e3e63b 100644
--- a/hw/s390x/css.c
+++ b/hw/s390x/css.c
@@ -2170,30 +2170,23 @@ void css_subch_assign(uint8_t cssid, uint8_t ssid, uint16_t schid,
}
}
-void css_queue_crw(uint8_t rsc, uint8_t erc, int solicited,
- int chain, uint16_t rsid)
+void css_crw_add_to_queue(CRW crw)
{
CrwContainer *crw_cont;
- trace_css_crw(rsc, erc, rsid, chain ? "(chained)" : "");
+ trace_css_crw((crw.flags & CRW_FLAGS_MASK_RSC) >> 8,
+ crw.flags & CRW_FLAGS_MASK_ERC,
+ crw.rsid,
+ (crw.flags & CRW_FLAGS_MASK_C) ? "(chained)" : "");
+
/* TODO: Maybe use a static crw pool? */
crw_cont = g_try_new0(CrwContainer, 1);
if (!crw_cont) {
channel_subsys.crws_lost = true;
return;
}
- crw_cont->crw.flags = (rsc << 8) | erc;
- if (solicited) {
- crw_cont->crw.flags |= CRW_FLAGS_MASK_S;
- }
- if (chain) {
- crw_cont->crw.flags |= CRW_FLAGS_MASK_C;
- }
- crw_cont->crw.rsid = rsid;
- if (channel_subsys.crws_lost) {
- crw_cont->crw.flags |= CRW_FLAGS_MASK_R;
- channel_subsys.crws_lost = false;
- }
+
+ crw_cont->crw = crw;
QTAILQ_INSERT_TAIL(&channel_subsys.pending_crws, crw_cont, sibling);
@@ -2204,6 +2197,27 @@ void css_queue_crw(uint8_t rsc, uint8_t erc, int solicited,
}
}
+void css_queue_crw(uint8_t rsc, uint8_t erc, int solicited,
+ int chain, uint16_t rsid)
+{
+ CRW crw;
+
+ crw.flags = (rsc << 8) | erc;
+ if (solicited) {
+ crw.flags |= CRW_FLAGS_MASK_S;
+ }
+ if (chain) {
+ crw.flags |= CRW_FLAGS_MASK_C;
+ }
+ crw.rsid = rsid;
+ if (channel_subsys.crws_lost) {
+ crw.flags |= CRW_FLAGS_MASK_R;
+ channel_subsys.crws_lost = false;
+ }
+
+ css_crw_add_to_queue(crw);
+}
+
void css_generate_sch_crws(uint8_t cssid, uint8_t ssid, uint16_t schid,
int hotplugged, int add)
{
diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h
index 7e3a5e743314..08c869ab0afc 100644
--- a/include/hw/s390x/css.h
+++ b/include/hw/s390x/css.h
@@ -205,6 +205,7 @@ void copy_scsw_to_guest(SCSW *dest, const SCSW *src);
void css_inject_io_interrupt(SubchDev *sch);
void css_reset(void);
void css_reset_sch(SubchDev *sch);
+void css_crw_add_to_queue(CRW crw);
void css_queue_crw(uint8_t rsc, uint8_t erc, int solicited,
int chain, uint16_t rsid);
void css_generate_sch_crws(uint8_t cssid, uint8_t ssid, uint16_t schid,
--
2.25.4
next prev parent reply other threads:[~2020-06-18 15:40 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-18 15:38 [PULL 0/7] s390x update Cornelia Huck
2020-06-18 15:38 ` [PULL 1/7] Linux headers: update Cornelia Huck
2020-06-18 15:38 ` [PULL 2/7] vfio-ccw: Refactor cleanup of regions Cornelia Huck
2020-06-18 15:38 ` [PULL 3/7] vfio-ccw: Add support for the schib region Cornelia Huck
2020-06-18 15:38 ` [PULL 4/7] vfio-ccw: Refactor ccw irq handler Cornelia Huck
2020-06-18 15:38 ` Cornelia Huck [this message]
2020-06-18 15:38 ` [PULL 6/7] vfio-ccw: Add support for the CRW region and IRQ Cornelia Huck
2020-06-18 15:38 ` [PULL 7/7] docs/s390x: fix vfio-ap device_del description Cornelia Huck
2020-06-18 16:29 ` [PULL 0/7] s390x update no-reply
2020-06-19 12:10 ` 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=20200618153854.271723-6-cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=farman@linux.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.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).