From: Gleb Natapov <gleb@redhat.com>
To: Jordan Justen <jljusten@gmail.com>
Cc: Stefan Hajnoczi <stefanha@gmail.com>,
Kevin O'Connor <kevin@koconnor.net>,
qemu-devel <qemu-devel@nongnu.org>,
Michal Suchanek <hramrach@centrum.cz>,
Avi Kivity <avi@redhat.com>
Subject: [Qemu-devel] Re: RFC: emulation of system flash
Date: Thu, 10 Mar 2011 21:12:46 +0200 [thread overview]
Message-ID: <20110310191246.GA18052@redhat.com> (raw)
In-Reply-To: <AANLkTimmF6ZL62W4U3=Cx6ogOh-Skaw0A7LMV8H2BCzP@mail.gmail.com>
On Thu, Mar 10, 2011 at 10:59:07AM -0800, Jordan Justen wrote:
> On Thu, Mar 10, 2011 at 01:47, Gleb Natapov <gleb@redhat.com> wrote:
> > Two things. First You suggest to replace -bios with -flash. This will
> > make firmware upgrade painful process that will have to be performed
> > from inside the guest since the same flash image will contain both
> > firmware and whatever data was stored on a flash which presumably you
> > want to reuse after upgrading a firmware.
>
> Yes, this definitely could add firmware upgrade issues, but I thought
> this could be the responsibility of the firmware itself. For example,
> OVMF could have an outside of VM tool to merge new releases, or it
> could have an inside of VM firmware update process.
Why require another tool if can do without? I don't see any advantages
in storing firmware code and its non-volatile storage in the same image,
but I do see disadvantages.
>
> > My suggestion is to extend
> > -bios option like this:
> >
> > -bios bios.bin,flash=flash.bin,flash_base=addr
> >
> > flash.bin will be mapped at address flash_base, or, if flash_base is not
> > present, just below bios.bin.
>
> I did not intend to replace -bios. I intended to override -bios
> usage. So, if -flash is not used, then it would operate as today. If
> -flash is used, then it would override the -bios file.
>
> So, for the firmware update issues mentioned above, it would not
> impact, say SeaBIOS...
>
OVMF is not different from SeaBIOS as far as KVM/qemu is concerned. SeaBIOS
want to have non-volatile storage too.
> > Second. I asked how flash is programmed because interfaces like CFI
> > where you write into flash memory address range to issue commands cannot
> > be emulated efficiently in KVM. KVM supports either regular memory slots
> > or IO memory, but in your proposal the same memory behaves as IO on
> > write and regular memory on read. Better idea would be to present
> > non-volatile flash as ISA virtio device. Should be simple to implement.
>
> I would be concerned about performance for KVM. In my proposal, all
> reads would probably have to be treated as MMIO, since reads are
> involved in the programming sequences.
>
> If the flash device was 1MB, and it was read entirely via MMIO
> trapping would there be a significant performance hit on KVM? If so,
> I think I will have to consider a hybrid approach like you mentioned
> above, where most of the firmware is mapped as memory (copied from
> bios.bin), while a small amount of memory below this is available as
> flash.
>
It is not even about performance (which will be very bad for 1MB). KVM
can't run code from MMIO region, so the part that contains firmware
has to be memory.
> But, in real systems, accessing the flash memory is significantly
> slower than RAM, so the real question is, how bad would the
> performance be?
>
> Thanks,
>
> -Jordan
--
Gleb.
next prev parent reply other threads:[~2011-03-10 19:12 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-10 4:51 [Qemu-devel] RFC: emulation of system flash Jordan Justen
2011-03-10 9:10 ` [Qemu-devel] " Avi Kivity
2011-03-10 18:43 ` Jordan Justen
2011-03-10 21:52 ` Carl-Daniel Hailfinger
2011-03-10 22:14 ` Jordan Justen
2011-03-10 22:31 ` Carl-Daniel Hailfinger
2011-03-10 22:58 ` Jordan Justen
2011-03-10 23:41 ` Carl-Daniel Hailfinger
2011-03-11 2:12 ` Jordan Justen
2011-03-10 9:47 ` Gleb Natapov
2011-03-10 11:27 ` Jan Kiszka
2011-03-10 11:46 ` Jan Kiszka
2011-03-10 11:53 ` Paolo Bonzini
2011-03-10 12:07 ` Jan Kiszka
2011-03-10 19:03 ` Jordan Justen
2011-03-10 19:23 ` Anthony Liguori
2011-03-10 20:05 ` Jordan Justen
2011-03-10 11:48 ` Gleb Natapov
2011-03-10 12:06 ` Jan Kiszka
2011-03-10 12:17 ` Gleb Natapov
2011-03-10 12:27 ` Jan Kiszka
2011-03-10 19:08 ` Jordan Justen
2011-03-10 19:13 ` Gleb Natapov
2011-03-10 21:46 ` Carl-Daniel Hailfinger
2011-03-10 22:11 ` Scott Wood
2011-03-10 21:41 ` Carl-Daniel Hailfinger
2011-03-10 22:05 ` Jordan Justen
2011-03-10 18:59 ` Jordan Justen
2011-03-10 19:12 ` Gleb Natapov [this message]
2011-03-10 19:50 ` Jordan Justen
2011-03-10 20:08 ` Антон Кочков
2011-03-10 20:21 ` Gleb Natapov
2011-03-11 21:41 ` Jordan Justen
2011-03-14 14:29 ` Gleb Natapov
2011-03-10 21:37 ` [Qemu-devel] " Carl-Daniel Hailfinger
2011-03-10 21:55 ` Jordan Justen
2011-03-10 22:10 ` Carl-Daniel Hailfinger
2011-03-10 22:29 ` Jordan Justen
2011-03-10 23:53 ` Carl-Daniel Hailfinger
2011-03-11 0:19 ` [Qemu-devel] " Jan Kiszka
2011-03-11 0:27 ` Carl-Daniel Hailfinger
2011-03-11 19:09 ` Jordan Justen
2011-03-11 23:10 ` Michal Suchanek
2011-03-12 9:24 ` Jan Kiszka
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=20110310191246.GA18052@redhat.com \
--to=gleb@redhat.com \
--cc=avi@redhat.com \
--cc=hramrach@centrum.cz \
--cc=jljusten@gmail.com \
--cc=kevin@koconnor.net \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
/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.