From: Cornelia Huck <cohuck@redhat.com>
To: Pierre Morel <pmorel@linux.ibm.com>
Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org,
frankja@linux.ibm.com, david@redhat.com, thuth@redhat.com
Subject: Re: [kvm-unit-tests PATCH v4 7/9] s390x: css: msch, enable test
Date: Thu, 12 Dec 2019 15:10:02 +0100 [thread overview]
Message-ID: <20191212151002.1c7ca4eb.cohuck@redhat.com> (raw)
In-Reply-To: <83d45c31-30c3-36e1-1d68-51b88448f4af@linux.ibm.com>
On Thu, 12 Dec 2019 15:01:07 +0100
Pierre Morel <pmorel@linux.ibm.com> wrote:
> On 2019-12-12 13:01, Cornelia Huck wrote:
> > On Wed, 11 Dec 2019 16:46:08 +0100
> > Pierre Morel <pmorel@linux.ibm.com> wrote:
> >
> >> A second step when testing the channel subsystem is to prepare a channel
> >> for use.
> >> This includes:
> >> - Get the current SubCHannel Information Block (SCHIB) using STSCH
> >> - Update it in memory to set the ENABLE bit
> >> - Tell the CSS that the SCHIB has been modified using MSCH
> >> - Get the SCHIB from the CSS again to verify that the subchannel is
> >> enabled.
> >>
> >> This tests the success of the MSCH instruction by enabling a channel.
> >>
> >> Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> >> ---
> >> s390x/css.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> >> 1 file changed, 65 insertions(+)
> >> + /* Read the SCHIB for this subchannel */
> >> + cc = stsch(test_device_sid, &schib);
> >> + if (cc) {
> >> + report(0, "stsch cc=%d", cc);
> >> + return;
> >> + }
> >> +
> >> + /* Update the SCHIB to enable the channel */
> >> + pmcw->flags |= PMCW_ENABLE;
> >> +
> >> + /* Tell the CSS we want to modify the subchannel */
> >> + cc = msch(test_device_sid, &schib);
> >> + if (cc) {
> >> + /*
> >> + * If the subchannel is status pending or
> >> + * if a function is in progress,
> >> + * we consider both cases as errors.
> >> + */
> >> + report(0, "msch cc=%d", cc);
> >> + return;
> >> + }
> >> +
> >> + /*
> >> + * Read the SCHIB again to verify the enablement
> >> + * insert a little delay and try 5 times.
> >> + */
> >> + do {
> >> + cc = stsch(test_device_sid, &schib);
> >> + if (cc) {
> >> + report(0, "stsch cc=%d", cc);
> >> + return;
> >> + }
> >> + delay(10);
> >
> > That's just a short delay to avoid a busy loop, right? msch should be
> > immediate,
>
> Thought you told to me that it may not be immediate in zVM did I
> misunderstand?
Maybe I have been confusing... what I'm referring to is this
programming note for msch:
"It is recommended that the program inspect the
contents of the subchannel by subsequently
issuing STORE SUBCHANNEL when MODIFY
SUBCHANNEL sets condition code 0. Use of
STORE SUBCHANNEL is a method for deter-
mining if the designated subchannel was
changed or not. Failure to inspect the subchan-
nel following the setting of condition code 0 by
MODIFY SUBCHANNEL may result in conditions
that the program does not expect to occur."
That's exactly what we had to do under z/VM back then: do the msch,
check via stsch, redo the msch if needed, check again via stsch. It
usually worked with the second msch the latest.
>
> > and you probably should not delay on success?
>
> yes, it is not optimized, I can test PMCW_ENABLE in the loop this way we
> can see if, in the zVM case we need to do retries or not.
>
>
> >
> >> + } while (!(pmcw->flags & PMCW_ENABLE) && count++ < 5);
> >
> > How is this supposed to work? Doesn't the stsch overwrite the control
> > block again, so you need to re-set the enable bit before you retry?
>
> I do not think so, there is no msch() in the loop.
> Do I miss something?
Well, _I_ missed that the msch() was missing :) You need it (see above);
just waiting and re-doing the stsch is useless, as msch is a
synchronous instruction which has finished its processing after the cc
has been set.
next prev parent reply other threads:[~2019-12-12 14:10 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-11 15:46 [kvm-unit-tests PATCH v4 0/9] s390x: Testing the Channel Subsystem I/O Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 1/9] s390x: saving regs for interrupts Pierre Morel
2019-12-12 9:24 ` Janosch Frank
2019-12-12 13:32 ` Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 2/9] s390x: Use PSW bits definitions in cstart Pierre Morel
2019-12-12 9:31 ` Janosch Frank
2019-12-12 13:34 ` Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 3/9] s390x: interrupt registration Pierre Morel
2019-12-12 9:39 ` Janosch Frank
2019-12-12 13:35 ` Pierre Morel
2019-12-12 9:41 ` Janosch Frank
2019-12-12 13:35 ` Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 4/9] s390x: export the clock get_clock_ms() utility Pierre Morel
2019-12-12 9:40 ` Janosch Frank
2019-12-12 13:36 ` Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 5/9] s390x: Library resources for CSS tests Pierre Morel
2019-12-12 9:51 ` Janosch Frank
2019-12-12 13:43 ` Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 6/9] s390x: css: stsch, enumeration test Pierre Morel
2019-12-12 10:18 ` Cornelia Huck
2019-12-12 13:50 ` Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 7/9] s390x: css: msch, enable test Pierre Morel
2019-12-12 12:01 ` Cornelia Huck
2019-12-12 14:01 ` Pierre Morel
2019-12-12 14:10 ` Cornelia Huck [this message]
2019-12-12 14:21 ` Pierre Morel
2019-12-12 14:33 ` Cornelia Huck
2019-12-12 16:05 ` Pierre Morel
2019-12-12 17:33 ` Pierre Morel
2019-12-13 9:33 ` Cornelia Huck
2019-12-13 14:40 ` Pierre Morel
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 8/9] s390x: css: ssch/tsch with sense and interrupt Pierre Morel
2019-12-12 12:26 ` Cornelia Huck
2019-12-12 14:10 ` Pierre Morel
2019-12-12 18:20 ` Pierre Morel
2019-12-13 9:43 ` Cornelia Huck
2019-12-13 15:24 ` Pierre Morel
2019-12-13 15:53 ` Cornelia Huck
2019-12-11 15:46 ` [kvm-unit-tests PATCH v4 9/9] s390x: css: ping pong Pierre Morel
2019-12-13 9:50 ` Cornelia Huck
2019-12-13 16:50 ` Pierre Morel
2019-12-16 10:54 ` Cornelia Huck
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=20191212151002.1c7ca4eb.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=pmorel@linux.ibm.com \
--cc=thuth@redhat.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.