From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:50205) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVld9-0003JS-9i for qemu-devel@nongnu.org; Fri, 26 Apr 2013 12:36:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UVld7-0001IH-Up for qemu-devel@nongnu.org; Fri, 26 Apr 2013 12:36:15 -0400 Received: from mail-oa0-f46.google.com ([209.85.219.46]:56614) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVld7-0001ID-Q5 for qemu-devel@nongnu.org; Fri, 26 Apr 2013 12:36:13 -0400 Received: by mail-oa0-f46.google.com with SMTP id k3so4168544oag.5 for ; Fri, 26 Apr 2013 09:36:13 -0700 (PDT) From: Anthony Liguori In-Reply-To: <1366978377-16823-2-git-send-email-dingel@linux.vnet.ibm.com> References: <1366978377-16823-1-git-send-email-dingel@linux.vnet.ibm.com> <1366978377-16823-2-git-send-email-dingel@linux.vnet.ibm.com> Date: Fri, 26 Apr 2013 11:36:11 -0500 Message-ID: <8761z9i70k.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Subject: Re: [Qemu-devel] [PATCH 01/10] Common: Add a default bootindex for all applicable devices List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Dominik Dingel , qemu-devel@nongnu.org Cc: Christian Borntraeger , Alexander Graf Dominik Dingel writes: > Currently only devices with a positive boot index will be pushed in the > fw_boot_order queue, so if no boot index at all will be specified, > the queue ends up empty. > > Instead we push exactly as docs/bootindex.txt says the devices with > the lowest possible boot priority at the tail of the queue, > because we give them the highest available boot index. > > Signed-off-by: Dominik Dingel Wouldn't this break the ability to say: "don't every try to boot from this device?" As an example, some people want to force PXE boot to not be tried on certain networks. Regards, Anthony Liguori > > diff --git a/vl.c b/vl.c > index 6caa5f4..84d7031 100644 > --- a/vl.c > +++ b/vl.c > @@ -248,7 +248,7 @@ struct FWBootEntry { > char *suffix; > }; > > -static QTAILQ_HEAD(, FWBootEntry) fw_boot_order = > +static QTAILQ_HEAD(FWBootOrder, FWBootEntry) fw_boot_order = > QTAILQ_HEAD_INITIALIZER(fw_boot_order); > > int nb_numa_nodes; > @@ -1213,10 +1213,21 @@ void add_boot_device_path(int32_t bootindex, DeviceState *dev, > FWBootEntry *node, *i; > > if (bootindex < 0) { > - return; > + bootindex = INT32_MAX; > + if (!QTAILQ_EMPTY(&fw_boot_order) && > + (QTAILQ_LAST(&fw_boot_order, FWBootOrder)->bootindex == INT32_MAX)) { > + /* there is a device at the end of the queue, so we need to walk > + the queue reverse to get the next free bootindex */ > + QTAILQ_FOREACH_REVERSE(i, &fw_boot_order, FWBootOrder, link) { > + if (i->bootindex != bootindex) { > + break; > + } > + bootindex--; > + } > + } > } > > - assert(dev != NULL || suffix != NULL); > + assert(dev != NULL || suffix != NULL || bootindex >= 0); > > node = g_malloc0(sizeof(FWBootEntry)); > node->bootindex = bootindex; > -- > 1.7.9.5