From: Cornelia Huck <cohuck@redhat.com>
To: Thomas Huth <thuth@redhat.com>
Cc: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>,
borntraeger@de.ibm.com, agraf@suse.de, rth@twiddle.net,
david@redhat.com, qemu-devel@nongnu.org, qemu-s390x@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 3/3] s390: Do not pass inofficial IPL type to the guest
Date: Fri, 6 Apr 2018 11:42:02 +0200 [thread overview]
Message-ID: <20180406114202.2cf34236.cohuck@redhat.com> (raw)
In-Reply-To: <8080442a-bd0b-6231-630c-39b48f910c7a@redhat.com>
On Fri, 6 Apr 2018 11:28:31 +0200
Thomas Huth <thuth@redhat.com> wrote:
> On 05.04.2018 17:07, Viktor Mihajlovski wrote:
> > IPL over a virtio-scsi device requires special handling not
> > available in the real architecture. For this purpose the IPL
> > type 0xFF has been chosen as means of communication between
> > QEMU and the pc-bios. However, a guest OS could be confused
> > by seeing an unknown IPL type.
> >
> > This change sets the IPL parameter type to 0x02 (CCW) to prevent
> > this. Pre-existing Linux has looked up the IPL parameters only in
> > the case of FCP IPL. This means that the behavior should stay
> > the same even if Linux checks for the IPL type unconditionally.
> >
> > Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
> > ---
> > pc-bios/s390-ccw/bootmap.c | 7 +++++++
> > pc-bios/s390-ccw/iplb.h | 15 +++++++++++++--
> > 2 files changed, 20 insertions(+), 2 deletions(-)
> >
> > diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
> > index fc2a9fe..9287b7a 100644
> > --- a/pc-bios/s390-ccw/bootmap.c
> > +++ b/pc-bios/s390-ccw/bootmap.c
> > @@ -70,6 +70,13 @@ static void jump_to_IPL_code(uint64_t address)
> > {
> > /* store the subsystem information _after_ the bootmap was loaded */
> > write_subsystem_identification();
> > +
> > + /* prevent unknown IPL types in the guest */
> > + if (iplb.pbt == S390_IPL_TYPE_QEMU_SCSI) {
> > + iplb.pbt = S390_IPL_TYPE_CCW;
> > + set_iplb(&iplb);
> > + }
> > +
> > /*
> > * The IPL PSW is at address 0. We also must not overwrite the
> > * content of non-BIOS memory after we loaded the guest, so we
> > diff --git a/pc-bios/s390-ccw/iplb.h b/pc-bios/s390-ccw/iplb.h
> > index 7dfce4f..5357a36 100644
> > --- a/pc-bios/s390-ccw/iplb.h
> > +++ b/pc-bios/s390-ccw/iplb.h
> > @@ -97,16 +97,27 @@ extern QemuIplParameters qipl;
> > #define S390_IPL_TYPE_CCW 0x02
> > #define S390_IPL_TYPE_QEMU_SCSI 0xff
> >
> > -static inline bool store_iplb(IplParameterBlock *iplb)
> > +static inline bool manage_iplb(IplParameterBlock *iplb, bool store)
> > {
> > register unsigned long addr asm("0") = (unsigned long) iplb;
> > register unsigned long rc asm("1") = 0;
> >
> > asm volatile ("diag %0,%2,0x308\n"
> > : "+d" (addr), "+d" (rc)
> > - : "d" (6)
> > + : "d" (store ? 6 : 5)
> > : "memory", "cc");
>
> I can't find a proper public specification for diag 308, so no clue how
> to review this properly. Christian, could you please have a look?
It does match the diag 308 store/load implementation in
target/s390x/diag.c... but a pointer to an official spec (if public)
would still be appreciated :)
next prev parent reply other threads:[~2018-04-06 9:42 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-05 15:07 [Qemu-devel] [PATCH 0/3] s390: Fix virtio-scsi IPL quirks Viktor Mihajlovski
2018-04-05 15:07 ` [Qemu-devel] [PATCH 1/3] s390: Refactor IPL parameter block generation Viktor Mihajlovski
2018-04-05 16:21 ` Farhan Ali
2018-04-06 7:52 ` Thomas Huth
2018-04-06 9:34 ` Cornelia Huck
2018-04-05 15:07 ` [Qemu-devel] [PATCH 2/3] s390: Ensure IPL from SCSI works as expected Viktor Mihajlovski
2018-04-05 16:54 ` Farhan Ali
2018-04-06 8:37 ` Thomas Huth
2018-04-05 15:07 ` [Qemu-devel] [PATCH 3/3] s390: Do not pass inofficial IPL type to the guest Viktor Mihajlovski
2018-04-05 15:11 ` David Hildenbrand
2018-04-05 15:16 ` Viktor VM Mihajlovski
2018-04-06 9:28 ` Thomas Huth
2018-04-06 9:42 ` Cornelia Huck [this message]
2018-04-06 10:43 ` Viktor VM Mihajlovski
2018-04-06 10:56 ` Christian Borntraeger
2018-04-06 9:47 ` [Qemu-devel] [PATCH 0/3] s390: Fix virtio-scsi IPL quirks Cornelia Huck
2018-04-06 12:30 ` Christian Borntraeger
2018-04-06 12:34 ` 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=20180406114202.2cf34236.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=david@redhat.com \
--cc=mihajlov@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=rth@twiddle.net \
--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.