On Fri, May 17, 2013 at 10:59:25AM -0500, Anthony Liguori wrote:
> Paolo Bonzini <pbonz...@redhat.com> writes:
> > So you can see it in three ways:
> >
> > 1) It's not a QEMU problem, but a firmware problem.  You could initialize
> > the UMBs with 0xFF in SeaBIOS for example.
> 
> SeaBIOS is not supposed to do any initialization.  Once it's RAM,
> there's no guarantee of what the contents will be.  The problem is that
> it's supposed to be ROM.
> 
> I doubt it's still there, but BIOSes often had an option to disable
> ROM shadowing expressly because it breaks applications that assume that
> this space is ROM after BIOS loads.
> 
> Perhaps SeaBIOS could support such an option but we can't support it in
> KVM at the moment.

It would not be easy to make SeaBIOS work with a truly read-only rom.
SeaBIOS is designed to store static settings in the f-segment (where
it can be accessed relative to %cs at runtime), and undoing that would
be quite difficult.

However, it is not too difficult to make SeaBIOS turn the
0xc0000-0x100000 area into read-only memory after initialization.  The
biggest stumbling block is that SeaBIOS stores read/write variables in
the e-segment today, but it's possible to store them at the end of the
640k region instead (I posted a patch for this at:
http://www.seabios.org/pipermail/seabios/2013-February/005693.html ).

Once the memory 0xc0000-0x100000 ram can be read-only, setting the pam
registers to mark it as read-only and memset'ing the region to 0xff is
straight forward.

-Kevin

Reply via email to