qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Gleb Natapov <gleb@redhat.com>
To: Kevin O'Connor <kevin@koconnor.net>
Cc: seabios@seabios.org, qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: [Qemu-devel] Re: [PATCHv6 00/16] boot order specification
Date: Sun, 28 Nov 2010 09:45:34 +0200	[thread overview]
Message-ID: <20101128074534.GE6897@redhat.com> (raw)
In-Reply-To: <20101127210744.GA21727@morn.localdomain>

On Sat, Nov 27, 2010 at 04:07:45PM -0500, Kevin O'Connor wrote:
> Trimming CC list, adding seabios list.
> 
> On Sat, Nov 27, 2010 at 09:04:24PM +0200, Gleb Natapov wrote:
> > On Sat, Nov 27, 2010 at 01:40:12PM -0500, Kevin O'Connor wrote:
> > > On Sat, Nov 27, 2010 at 08:15:42PM +0200, Gleb Natapov wrote:
> > > > Qemu does not know that Seabios needs optionrom to boot from a device.
> > > > It knows even less about bcvs in option rom. Qemu knows about device
> > > > itself, not how firmware boots from it.
> > > 
> > > If the user wants to boot from a device and that device has an
> > > optionrom, then it's a safe bet that the optionrom is needed to boot
> > > from it.
> > > 
> > Suppose we add SCSI support to Seabios and suppose SCSI card Seabios can
> > natively boot from has optionrom. What Seabios will do in such situation
> > and how qemu can know it? Besides qemu support tries to be firmware
> > agnostic.
> 
> In such a situation, under my proposal, users wouldn't be able to
> specify a default boot from their scsi drive until after qemu was also
> upgraded to know seabios could boot native scsi.  (Or, they'd only be
> able to do it by adding in a command-line option.)
> 
If scsi card has optionrom with only one bcv then Seabios can determine
its boot order from device path, so why not provide user with this
option today? Besides qemu may be used to emulates sparc with openbios and
this combination may be able to boot from scsi device. Qemu is not just
x86 emulator running Seabios. If there is problem with scsi boot we let
management know, so it will not create unbootable configuration. Today it
is impossible to boot guest from scsi in qemu btw.

> > > In any case, I'd rather have qemu know which devices seabios can boot
> > > then have seabios try to figure out what rom to run from a device
> > > path.
> > You run all of them just like you do now. Information you get from qemu is
> > only used for sorting BCV/BEV entries. BCV/BEV that does not have
> > corespondent boot path in boot order list is put at the end.
> 
> If qemu sends in "/pci@i0cf8/scsi@3/disk@0,0" or
> "/pci@i0cf8/ethernet@4/ethernet-phy@0" it will expect seabios to boot
> from the appropriate device.  In both cases, seabios would need to run
> a rom in order to fulfill that request.  Trying to figure out which
> rom is quite painful.  That's why I'd prefer to see qemu instead pass
> in something like "/pci@i0cf8/rom@3/bcv@0" or "/pci@i0cf8/rom@4/bev".
> That is, if the machine needs to boot via a rom I'd prefer qemu state
> that explicitly.
It is painful in Seabios it is impossible in qemu at all. There is no
way for qemu to know about BCVs or BEVs in optionroms especially
considering that they are created at runtime like you say bellow.
The best qemu can do is to ask user what device user wants to boot from
and pass this information to Seabios in form of device path. Seabios (or
other firmware) has to figure out how to boot from the device or ignore
request if it can't. We can't provide the same functionality as Seabios'
f12 menu on qemu command line since content of the menu depend on run time.

> 
> BTW, in the situation where seabios has native device support (eg,
> ATA), I don't have any concerns.  (The names are a bit verbose, but
> that's not really an issue.)
This + network booting are the may use case really. And I do not see
what problem we have with BEV devices. "/pci@i0cf8/rom@4/bev" is not
much different from "/pci@i0cf8/ethernet@4/ethernet-phy@0" since there
can be only one bev per pci device. It is easy for Seabios to see that
to boot from pci device in slot 4 func 0 it has to execute BEV. 

> 
> > > > BTW are you actually aware of any option rom with multiple BCVs and, if
> > > > yes, how those BCVs differ?
> > > 
> > > Multiple BCVs - yes.  A SCSI card will define a BCV for each attached
> > > drive.  I don't have a scsi card myself, but the support was added by
> > > a user who ran into the problem first hand.
> > Optionrom is static. How number of BCVs can depend on number of attached
> > drives?
> 
> Not sure what you mean by "Optionrom is static".  SeaBIOS unlocks the
> memory, and the optionrom can and will modify itself with additional
> PNP headers so that it can list multiple BCVs - one for each drive.
> In particular, gPXE uses self modification to relocate parts of itself
> into high ram.
> 
"Optionrom is static" was my misunderstanding. As you say here optionrom
can create BEVs/BCVs at runtime which make it impossible for qemu to
know about them even if qemu examine optionroms of devices.

--
			Gleb.

  reply	other threads:[~2010-11-28  7:45 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-17 16:43 [Qemu-devel] [PATCHv6 00/16] boot order specification Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 01/16] Introduce fw_name field to DeviceInfo structure Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 02/16] Introduce new BusInfo callback get_fw_dev_path Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 03/16] Keep track of ISA ports ISA device is using in qdev Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 04/16] Add get_fw_dev_path callback to ISA bus " Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 05/16] Store IDE bus id in IDEBus structure for easy access Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 06/16] Add get_fw_dev_path callback to IDE bus Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 07/16] Add get_dev_path callback for system bus Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 08/16] Add get_fw_dev_path callback for pci bus Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 09/16] Record which USBDevice USBPort belongs too Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 10/16] Add get_dev_path callback for usb bus Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 11/16] Add get_dev_path callback to scsi bus Gleb Natapov
2010-11-17 16:43 ` [Qemu-devel] [PATCHv6 12/16] Add bootindex parameter to net/block/fd device Gleb Natapov
2010-11-17 16:44 ` [Qemu-devel] [PATCHv6 13/16] Change fw_cfg_add_file() to get full file path as a parameter Gleb Natapov
2010-11-17 16:44 ` [Qemu-devel] [PATCHv6 14/16] Add bootindex for option roms Gleb Natapov
2010-11-17 16:44 ` [Qemu-devel] [PATCHv6 15/16] Add notifier that will be called when machine is fully created Gleb Natapov
2010-11-17 16:44 ` [Qemu-devel] [PATCHv6 16/16] Pass boot device list to firmware Gleb Natapov
2010-11-23 15:31 ` [Qemu-devel] Re: [PATCHv6 00/16] boot order specification Gleb Natapov
2010-11-23 16:12   ` Anthony Liguori
2010-11-23 19:30     ` Blue Swirl
2010-11-27 20:56     ` Avi Kivity
2010-11-28  7:54       ` Gleb Natapov
2010-11-28  9:38         ` Avi Kivity
2010-11-28  9:47           ` Gleb Natapov
2010-11-28 12:39         ` Blue Swirl
2010-11-28 13:03           ` Gleb Natapov
2010-11-28 13:13         ` Michael S. Tsirkin
2010-11-28 13:19           ` Gleb Natapov
2010-11-28 13:22             ` Blue Swirl
2010-11-28 17:02               ` Michael S. Tsirkin
2010-11-28 17:23             ` Michael S. Tsirkin
2010-11-28 18:54               ` Gleb Natapov
2010-11-28 19:09                 ` Michael S. Tsirkin
2010-11-28 19:20                   ` Gleb Natapov
2010-11-28 13:25           ` Gleb Natapov
2010-11-24  1:19   ` Kevin O'Connor
2010-11-24 10:03     ` Gleb Natapov
2010-11-27 15:41       ` Kevin O'Connor
2010-11-27 16:22         ` Gleb Natapov
2010-11-27 16:49           ` Kevin O'Connor
2010-11-27 17:06             ` Gleb Natapov
2010-11-27 17:47               ` Kevin O'Connor
2010-11-27 18:15                 ` Gleb Natapov
2010-11-27 18:40                   ` Kevin O'Connor
2010-11-27 19:04                     ` Gleb Natapov
2010-11-27 21:07                       ` Kevin O'Connor
2010-11-28  7:45                         ` Gleb Natapov [this message]
2010-11-28 17:15                           ` Kevin O'Connor
2010-11-28 18:47                             ` Gleb Natapov
     [not found]                               ` <20101130013402.GB3488@morn.localdomain>
2010-11-30 14:01                                 ` Gleb Natapov
2010-12-01  2:53                                   ` Kevin O'Connor
2010-12-01 12:27                                     ` Gleb Natapov
2010-12-02  2:25                                       ` Kevin O'Connor
2010-12-02 12:30                                         ` Gleb Natapov
2010-12-02 15:07                                           ` [Qemu-devel] Re: [SeaBIOS] " Peter Stuge
2010-12-02 17:13                                             ` Gleb Natapov
2010-12-02 21:22                                           ` Sebastian Herbszt
2010-12-03  2:01                                           ` [Qemu-devel] " Kevin O'Connor
2010-12-03  5:55                                             ` Gleb Natapov
2010-11-29 10:50                             ` Gerd Hoffmann
     [not found]                               ` <20101130015509.GC3488@morn.localdomain>
2010-11-30 14:59                                 ` Gleb Natapov
2010-11-28 19:00                           ` [Qemu-devel] Re: [SeaBIOS] " Peter Stuge
2010-11-28 19:11                             ` Peter Stuge
2010-11-28 19:52                               ` Gleb Natapov
2010-11-28 19:16                             ` Gleb Natapov
2010-11-29 10:19                     ` [Qemu-devel] " Gerd Hoffmann
2010-11-29 12:07                       ` Gleb Natapov

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=20101128074534.GE6897@redhat.com \
    --to=gleb@redhat.com \
    --cc=kevin@koconnor.net \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    --cc=seabios@seabios.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).