qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Question about qemu firmware configuration (fw_cfg) dev


From: Jamie Lokier
Subject: Re: [Qemu-devel] Question about qemu firmware configuration (fw_cfg) device
Date: Tue, 20 Jul 2010 14:15:16 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

Gleb Natapov wrote:
> On Mon, Jul 19, 2010 at 09:40:18AM +0200, Alexander Graf wrote:
> > 
> > On 19.07.2010, at 09:33, Gleb Natapov wrote:
> > 
> > > On Mon, Jul 19, 2010 at 08:28:02AM +0100, Richard W.M. Jones wrote:
> > >> On Mon, Jul 19, 2010 at 09:23:56AM +0300, Gleb Natapov wrote:
> > >>> That what I am warring about too. If we are adding device we have to be
> > >>> sure such device can actually exist on real hw too otherwise we may have
> > >>> problems later.
> > >> 
> > >> I don't understand why the constraints of real h/w have anything to do
> > >> with this.  Can you explain?
> > >> 
> > > Each time we do something not architectural it cause us troubles later.
> > > So constraints of real h/w is our constrains to.
> > > 
> > >>> Also 1 second on 100M file does not look like huge gain to me.
> > >> 
> > >> Every second counts.  We're trying to get libguestfs boot times down
> > >> from 8-12 seconds to 4-5 seconds.  For many cases it's an interactive
> > >> program.
> > >> 
> > > So what about making initrd smaller? I remember managing two
> > > distribution in 64M flash in embedded project.
> > 
> > Having a huge initrd basically helps in reusing a lot of existing code. We 
> > do the same - in general the initrd is just a subset of the applications of 
> > the host OS. And if you start putting perl or the likes into it, it becomes 
> > big.
> > 
> Why not provide small disk/cdrom with all those utilities installed?
> 
> > I guess the best thing for now really is to try and see which code paths 
> > insb goes along. It should really be coalesced.
> > 
> It is coalesced to a certain extent (reenter guest every 1024 bytes,
> read from userspace page at a time). You need to continue injecting
> interrupt into a guest during long string operation and checking
> exception condition on a page boundaries.

First obvious change is to make that 4k bytes (page size) when the I/O
port is the firmware port.  That'll make initrd 4 times faster straight away.

If that's not enough saving, it strikes me a cleaner approach than
inventing new kinds of DMA and/or new PCI devices, is to just detect
when the rep insb instruction is used for loading a firmware blob and
treat that as a different trap.

Is guest SeaBIOS in real mode at that point?  If yes, then it would be
best to trap this combination:

  rep insb is fetching a blob + CPU is in real mode

Because then it's safe to skip the exception check on page boundaries.

If no, the trap will need to be a bit smarter.

Advantages of this approach:

  - No need for new BIOS
  - Will work with older BIOSes using current method, and accelerate them
  - No need for distinct -initrd BIOS implementations for isapc and pc,
    (compared with the PCI proposal)
  - Doesn't add any new "extra-architectural" behaviour

-- Jamie



reply via email to

[Prev in Thread] Current Thread [Next in Thread]