[SeaBIOS] [PATCH] x86: fix read{b, w, l} and write{b, w, l} functions

Kevin O'Connor kevin at koconnor.net
Thu Feb 19 21:03:50 CET 2015


On Wed, Feb 18, 2015 at 04:38:43PM -0800, Ameya Palande wrote:
> Hi Kevin,
> 
> On Wed, Feb 18, 2015 at 12:15 PM, Kevin O'Connor <kevin at koconnor.net> wrote:
> >
> > On Tue, Feb 17, 2015 at 02:00:49PM -0800, Ameya Palande wrote:
> > > Use barrier() for memory mapped IO functions.
> > >
> > > This fixes pvscsi driver to boot on QEMU's pvscsi controller.
> > > Test command:
> > > qemu -m 512 --enable-kvm -device pvscsi,id=pvscsi0
> > > -device scsi-disk,bus=pvscsi0.0,drive=drive0
> > > -drive id=drive0,if=none,file=ubuntu1410.img,if=none
> > > -bios seabios/out/bios.bin
> >
> > Thanks.  I didn't think it was standard for a barrier to be present in
> > these functions, but I now see that Linux also uses barrier here.  So,
> > I've committed your patch (with a couple of minor changes).
> 
> Thanks for applying this patch!
> 
> Since memory mapped read and write are now protected by barriers, how
> should we deal about use of (potentially redundant) barriers in:
> src/hw/usb-ehci.c
> src/hw/usb-ohci.c
> src/hw/usb-uhci.c

I think redundant barriers should ultimately be removed.

> Interestingly "src/hw/usb-xhci.c" doesn't use barrier() at all!
> Wondering if that was correct?

That is a good quesiton.  I had not noticed any issues in this area
before, but I wasn't looking explicitly for them.

> > Thanks, also, for tracking down the PVSCSI problem.
> 
> I could get it booting only under QEMU. I wanted to test seabios under
> ESXi to make sure it really boots under ESXi's pvscsi implementation.
> Does anyone know a way to get seabios running under ESXi so that
> pvscsi validity can be checked?

I'm not familiar with ESXi, so I can't help here.

-Kevin



More information about the SeaBIOS mailing list