[SeaBIOS] [Qemu-devel] [Resend][Seabios PATCH] don't boot from un-selected devices
Gleb Natapov
gleb at redhat.com
Tue Dec 25 18:15:39 CET 2012
On Tue, Dec 25, 2012 at 05:59:04PM +0200, Ronen Hod wrote:
> On 12/19/2012 11:32 AM, Gleb Natapov wrote:
> >On Wed, Dec 19, 2012 at 03:24:45PM +0800, Amos Kong wrote:
> >>Current seabios will try to boot from selected devices first,
> >>if they are all failed, seabios will also try to boot from
> >>un-selected devices.
> >>
> >>For example:
> >>@ qemu-kvm -boot order=n,menu=on ...
> >>
> >>Guest will boot from network first, if it's failed, guest will try to
> >>boot from other un-selected devices (floppy, cdrom, disk) one by one.
> >>
> >>Sometimes, user don't want to boot from some devices. This patch changes
> >And sometimes he want. The patch changes behaviour unconditionally. New
> >behaviour should be user selectable. Something line -boot order=strict
> >on qemu command line.
>
> Another option would be to add a "terminator" symbol, say "T" (I couldn't find a good terminator), so that order=ndT, would mean strict "nd".
>
Not very helpful if the order is specified with bootindex like it
should.
> Ronen.
>
> >
> >>seabios to boot only from selected devices.
> >>
> >>If user choose first boot device from menu, then seabios will try all
> >>the devices, even some of them are not selected.
> >>
> >>Signed-off-by: Amos Kong <akong at redhat.com>
> >>---
> >>Resend for CCing seabios maillist.
> >>---
> >> src/boot.c | 13 ++++++++-----
> >> 1 files changed, 8 insertions(+), 5 deletions(-)
> >>
> >>diff --git a/src/boot.c b/src/boot.c
> >>index 3ca7960..ee810ac 100644
> >>--- a/src/boot.c
> >>+++ b/src/boot.c
> >>@@ -424,6 +424,10 @@ interactive_bootmenu(void)
> >> maxmenu++;
> >> printf("%d. %s\n", maxmenu
> >> , strtcpy(desc, pos->description, ARRAY_SIZE(desc)));
> >>+ /* If user chooses first boot device from menu, we will treat
> >>+ all the devices as selected. */
> >>+ if (pos->priority == DEFAULT_PRIO)
> >>+ pos->priority = DEFAULT_PRIO - 1;
> >> pos = pos->next;
> >> }
> >>@@ -490,7 +494,10 @@ boot_prep(void)
> >> // Map drives and populate BEV list
> >> struct bootentry_s *pos = BootList;
> >>- while (pos) {
> >>+
> >>+ /* The priority of un-selected device is not changed,
> >>+ we only boot from user selected devices. */
> >>+ while (pos && pos->priority != DEFAULT_PRIO) {
> >> switch (pos->type) {
> >> case IPL_TYPE_BCV:
> >> call_bcv(pos->vector.seg, pos->vector.offset);
> >>@@ -513,10 +520,6 @@ boot_prep(void)
> >> }
> >> pos = pos->next;
> >> }
> >>-
> >>- // If nothing added a floppy/hd boot - add it manually.
> >>- add_bev(IPL_TYPE_FLOPPY, 0);
> >>- add_bev(IPL_TYPE_HARDDISK, 0);
> >> }
> >>--
> >>1.7.1
> >--
> > Gleb.
> >
--
Gleb.
More information about the SeaBIOS
mailing list