From: Cornelia Huck <cohuck@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: "Jason J. Herne" <jjherne@linux.ibm.com>,
qemu-devel@nongnu.org, qemu-s390x@nongnu.org,
pasic@linux.ibm.com, bjsdjshi@linux.ibm.com,
borntraeger@de.ibm.com
Subject: Re: [Qemu-devel] [qemu-s390x] [RFC 14/15] s390-bios: Support booting from real dasd device
Date: Wed, 18 Jul 2018 09:40:39 +0200 [thread overview]
Message-ID: <20180718094039.3271a216.cohuck@redhat.com> (raw)
In-Reply-To: <a00e445e-f8f5-b098-bccb-7fcaf1260402@redhat.com>
On Tue, 17 Jul 2018 22:43:27 +0200
David Hildenbrand <david@redhat.com> wrote:
> On 05.07.2018 19:25, Jason J. Herne wrote:
> > +*****************************************
> > +***** How this all pertains to Qemu *****
> > +*****************************************
> > +
> > +In theory we should merely have to do the following to IPL/boot a guest
> > +operating system from a DASD device:
> > +
> > +1. Place a "Read IPL" ccw into memory location 0x0 with chaining bit on.
> > +2. Execute channel program at 0x0.
> > +3. LPSW 0x0.
> > +
> > +However, our emulation of the machine's channel program logic is missing one key
> > +feature that is required for this process to work: non-prefetch of ccw data.
> > +
> > +When we start a channel program we pass the channel subsystem parameters via an
> > +ORB (Operation Request Block). One of those parameters is a prefetch bit. If the
> > +bit is on then Qemu is allowed to read the entire channel program from guest
> > +memory before it starts executing it. This means that any channel commands that
> > +read additional channel commands will not work as expected because the newly
> > +read commands will only exist in guest memory and NOT within Qemu's channel
> > +subsystem memory. Qemu's channel subsystem's implementation currently requires
> > +this bit to be on for all channel programs. This is a problem because the IPL
> > +process consists of transferring control from the "Read IPL" ccw immediately to
> > +the IPL1 channel program that was read by "Read IPL".
> > ++
>
> I have way too little insight into channel devices and how QEMU
> implements them, however I wonder what hinders us from implementing
> support for !prefetch in QEMU?
>
> What you tailored here seems impressive :) Just want to know what the
> technical background of this prefetch thingy in QEMU is.
This has to do with how vfio-ccw processes and translates channel
programs.
Currently, we hand over the chain of channel commands to the kernel to
be translated (guest->host addresses) and to execute ssch on the real
subchannel. However, this requires sending the channel program over in
one go, which makes it impossible for the guest to modify an in-flight
channel program (there are tricks like putting a suspend marker on a
channel command and moving that marker forward as you go which make it
possible to know that a channel command has not yet been processed;
IIRC the lcs driver in Linux does that, or at least used to do that).
Our implementation currently does not accommodate that (the Linux dasd
driver does not use that feature). It's not impossible to implement it,
but it would require some effort (and I don't think anybody currently
has spare time for that...)
next prev parent reply other threads:[~2018-07-18 7:40 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-05 17:25 [Qemu-devel] [RFC 00/15] s390: vfio-ccw dasd ipl support Jason J. Herne
2018-07-05 17:25 ` [Qemu-devel] [RFC 01/15] s390 vfio-ccw: Add bootindex property and IPLB data Jason J. Herne
2018-07-06 7:33 ` Cornelia Huck
2018-07-11 10:33 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-07-05 17:25 ` [Qemu-devel] [RFC 02/15] s390-bios: decouple cio setup from virtio Jason J. Herne
2018-07-06 7:35 ` Cornelia Huck
2018-07-05 17:25 ` [Qemu-devel] [RFC 03/15] s390-bios: decouple common boot logic " Jason J. Herne
2018-07-11 10:41 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-07-05 17:25 ` [Qemu-devel] [RFC 04/15] s390-bios: Extend find_dev() for non-virtio devices Jason J. Herne
2018-07-05 17:25 ` [Qemu-devel] [RFC 05/15] s390-bios: Factor finding boot device out of virtio code path Jason J. Herne
2018-07-10 6:53 ` Christian Borntraeger
2018-07-05 17:25 ` [Qemu-devel] [RFC 06/15] s390-bios: Clean up cio.h Jason J. Herne
2018-07-17 18:15 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-07-17 18:22 ` Richard Henderson
2018-07-05 17:25 ` [Qemu-devel] [RFC 07/15] s390-bios: Decouple channel i/o logic from virtio Jason J. Herne
2018-07-06 6:48 ` Christian Borntraeger
2018-07-05 17:25 ` [Qemu-devel] [RFC 08/15] s390-bios: Map low core memory Jason J. Herne
2018-07-06 6:46 ` Christian Borntraeger
2018-07-06 7:42 ` Cornelia Huck
2018-07-17 18:10 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-09-10 14:17 ` Jason J. Herne
2018-09-13 5:25 ` Thomas Huth
2018-09-13 14:39 ` Jason J. Herne
2018-07-05 17:25 ` [Qemu-devel] [RFC 09/15] s390-bios: ptr2u32 and u32toptr Jason J. Herne
2018-07-05 17:25 ` [Qemu-devel] [RFC 10/15] s390-bios: Support for running format-0/1 channel programs Jason J. Herne
2018-07-06 7:04 ` Christian Borntraeger
2018-07-06 10:25 ` [Qemu-devel] [qemu-s390x] " Christian Borntraeger
2018-07-06 8:03 ` [Qemu-devel] " Cornelia Huck
2018-07-06 11:42 ` [Qemu-devel] [qemu-s390x] " Halil Pasic
2018-07-06 12:26 ` Cornelia Huck
2018-07-06 13:03 ` Halil Pasic
2018-07-06 13:15 ` Cornelia Huck
2018-07-06 13:33 ` Halil Pasic
2018-07-06 14:40 ` Jason J. Herne
2018-07-06 14:35 ` [Qemu-devel] " Jason J. Herne
2018-07-17 10:02 ` Cornelia Huck
2018-07-09 7:18 ` Christian Borntraeger
2018-07-09 10:51 ` Christian Borntraeger
2018-07-05 17:25 ` [Qemu-devel] [RFC 11/15] s390-bios: Refactor virtio to run channel programs via cio Jason J. Herne
2018-07-05 17:25 ` [Qemu-devel] [RFC 12/15] s390-bios: Use control unit type to determine boot method Jason J. Herne
2018-07-17 18:25 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-07-05 17:25 ` [Qemu-devel] [RFC 13/15] s390-bios: Add channel command codes/structs needed for dasd-ipl Jason J. Herne
2018-07-05 17:25 ` [Qemu-devel] [RFC 14/15] s390-bios: Support booting from real dasd device Jason J. Herne
2018-07-17 20:43 ` [Qemu-devel] [qemu-s390x] " David Hildenbrand
2018-07-18 7:40 ` Cornelia Huck [this message]
2018-07-18 7:51 ` David Hildenbrand
2018-07-18 10:55 ` Halil Pasic
2018-07-18 11:35 ` Cornelia Huck
2018-07-18 11:47 ` Halil Pasic
2018-07-18 11:44 ` [Qemu-devel] " Halil Pasic
2018-07-05 17:25 ` [Qemu-devel] [RFC 15/15] s390-bios: Use sense ccw to ensure consistent device state at boot time Jason J. Herne
2018-07-06 10:08 ` Cornelia Huck
2018-07-06 14:45 ` Jason J. Herne
2018-07-06 22:20 ` Halil Pasic
2018-07-05 18:32 ` [Qemu-devel] [RFC 00/15] s390: vfio-ccw dasd ipl support no-reply
2018-07-06 6:42 ` Cornelia Huck
2018-08-15 11:48 ` Cornelia Huck
2018-08-21 19:31 ` Jason J. Herne
2018-08-22 7:46 ` 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=20180718094039.3271a216.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=bjsdjshi@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=david@redhat.com \
--cc=jjherne@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--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 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.