[SeaBIOS] [PATCH v2 02/22] virtio: run drivers in 32bit mode
kevin at koconnor.net
Wed Jul 1 16:13:40 CEST 2015
On Wed, Jul 01, 2015 at 03:50:50PM +0200, Michael S. Tsirkin wrote:
> On Wed, Jul 01, 2015 at 02:30:29PM +0200, Gerd Hoffmann wrote:
> > On Mi, 2015-07-01 at 10:08 +0200, Michael S. Tsirkin wrote:
> > > On Tue, Jun 30, 2015 at 10:38:53AM +0200, Gerd Hoffmann wrote:
> > > > virtio version 1.0 registers can (and actually do in the qemu
> > > > implementation) live in mmio space. So we must run the blk and
> > > > scsi virtio drivers in 32bit mode, otherwise we can't access them.
> > > >
> > > > This also allows to drop a bunch of GET_LOWFLAT calls from the virtio
> > > > code in the following patches.
> > > >
> > > > Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
> > >
> > > Is there an advantage to running them in a 16 bit mode?
> > Not really any more. Switching from 32bit mode back to
> > whatever-was-active-before used to be problematic before we had smm mode
> > support. In theory. Because you can't save/restore the complete x86
> > processor state. In practice we had surprisingly few problems,
> > appearently linux boot loaders simply don't play dirty tricks.
> > cheers,
> > Gerd
> Interesting. Might not be true for non-linux loaders :)
Without SMM, the only issue I've seen with "thunking" to 32bit mode
was DOS-era programs (and in particular those that used emm386).
> Anyway we support SSM now so all should be well, right?
With SMM, I haven't seen any problems. I don't doubt that some
DOS-era programs might still have issues though. Also, I haven't
tested Paolo's kvm smm support yet.
SeaBIOS already runs a number of drivers exclusively in 32bit mode:
ahci, xhci, sdcard, ohci disks, pvscsi. Even without smm support,
virtio is likely a good candidate to move to 32bit mode as I don't
think there is a use case for running DOS-era programs on virtio
disks. (Using 32bit only drivers results in smaller and easier to
maintain code - indeed we'd like to move exclusively to 32bit drivers
in the future.)
More information about the SeaBIOS