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: Thu, 2 Dec 2010 14:30:42 +0200 [thread overview]
Message-ID: <20101202123042.GD2924@redhat.com> (raw)
In-Reply-To: <20101202022540.GA23364@morn.localdomain>
On Wed, Dec 01, 2010 at 09:25:40PM -0500, Kevin O'Connor wrote:
> On Wed, Dec 01, 2010 at 02:27:40PM +0200, Gleb Natapov wrote:
> > On Tue, Nov 30, 2010 at 09:53:32PM -0500, Kevin O'Connor wrote:
> > > BTW, what's the plan for handling SCSI adapters? Lets say a user has
> > > a scsi card with three drives (lun 1, lun 3, lun 5) that show up as 3
> > > bcvs (lun1, lun3, lun5 in that order) and the user wishes to boot from
> > > lun3. I understand this use case may not be important for qemu, but
> > > I'd like to use the same code on coreboot. Being able to boot from
> > > any drive is important - it doesn't have to autodetect, but it should
> > > be possible.
> > >
> > We can't. Option rom does not give us back enough information to do so.
> > Form device path we know exactly what id:lun boot should be done from,
> > but pnp_data does not have information to map BCV back to id:lun. I do
> > not see how coreboot can provide better information to Seabios then
> > qemu here.
>
> You're thinking in terms of which device to boot, which does make this
> difficult. However, it's equally valid to think in terms of which
> boot method to invoke, which makes this easy.
It is not. Because boot methods are enumerated by a guest at runtime.
Qemu knows absolutely nothing about them. I am thinking in terms of
devices because this is the only thing I have in qemu. BBS specification
is broken since it doesn't provide a way for discovered boot method
(BCV) to be linked back to a device it will boot from. Nothing we can do
to fix this except moving to EFI (an hope the problem is fixed there).
>
> We could tell the coreboot user to edit the "bootorder" file and add
> "/pci@i0cf8/rom1@4" (second rom on 4th pci device - the exact syntax
> of the name is not important).
>
But how user should knows that second rom (I think you mean "second BCV")
on pci device 4.0 will boot from the new scsi cdrom that he just connected?
How can he tell that it should put second BCV there and not third or fifth
without running Seabios first and looking at F12 menu? Depending on
option rom implementation even F12 menu can have not enough information
for user to guess which boot entry he should use to boot from the device
because product name that is used to distinguish between different boot
entires should be unique, but not necessary provide useful information
about device according to spec. (Both gpxe and lsi 8xx_64.rom provide device
address as part of product name; gpxe puts pci address there and 8xx_64.rom
puts ID LUN). Another important point is that BCV number can change when new
device is added to scsi bus, so next boot will mysteriously fail. Important
property of device path that it is stable and does not depend on HW configuration.
> >BTW to create proper EDD entry for SCSI boot device BIOS also
> > needs too map BCV to id:lun. How it can be done?
>
> It's the responsibility of the rom to build the EDD info. I don't
> know if all roms do this - I don't believe it's possible to get at the
> EDD info until after the drive has been mapped (ie, too late to use it
> for boot ordering).
How can we get to EDD info after device is mapped? Looking at Seabios
implementation it builds EDD table on the fly when int_1348 is called
and it does it only for internal devices. Can we use "disconnect vector"
to connect device temporarily get EDD and then disconnect?
>
> > SCSI _is_ important for qemu. Not HBA we have now, but something supported
> > by recent operation systems out of the box. When such HBA will be emulated
> > in qemu we will add native Seabios support for it.
>
> I understand. However, we'll still need to support arbitrary rom
> based BEVs and BCVs, so the use case is still important.
>
We can't do something that is impossible. For coreboot Seabios should
implement what BBS spec says i.e enumerate all BCVs, present boot menu
to the user, record number of BCVs and user's choice on non-volatile
storage (CMOS). On next boot use recorded user's choice unless number of
BCVs changes, otherwise present boot menu again. This is of course
broken too since number of BCVs may not change even if HW configuration
changes substantially. Spec says that in that case user probably
will want to adjust boot order anyway and will enter boot menu by
itself. Sorry excuse for failing to provide proper functionality if you
ask me :)
--
Gleb.
next prev parent reply other threads:[~2010-12-02 13:03 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
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 [this message]
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=20101202123042.GD2924@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).