[SeaBIOS] [PATCH v2 2/6] boot: track the PCI class of BCV/BEV boot entries

Kevin O'Connor kevin at koconnor.net
Sun Oct 28 02:22:59 CEST 2012


On Wed, Oct 17, 2012 at 06:23:44PM +0200, Paolo Bonzini wrote:
> In order to find network devices in the boot list, remember the PCI class
> for each BCV/BEV (which is also present in the PNP header as the device
> type code).
> 
> Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
> ---
>  src/boot.c       | 10 ++++++----
>  src/boot.h       |  4 ++--
>  src/optionroms.c |  8 +++++---
>  3 file modificati, 13 inserzioni(+), 9 rimozioni(-)
> 
> diff --git a/src/boot.c b/src/boot.c
> index b9bcb57..2835008 100644
> --- a/src/boot.c
> +++ b/src/boot.c
> @@ -339,9 +339,10 @@ static inline int defPrio(int priority, int defaultprio) {
>  
>  // Add a BEV vector for a given pnp compatible option rom.
>  void
> -boot_add_bev(u16 seg, u16 bev, u16 desc, int prio)
> +boot_add_bev(u16 seg, u16 bev, u16 desc, u16 class, int prio)
>  {
> -    bootentry_add(IPL_TYPE_BEV, defPrio(prio, DefaultBEVPrio)
> +    class &= 0xF;
> +    bootentry_add(IPL_TYPE_BEV | class, defPrio(prio, DefaultBEVPrio)

Ultimately, bootentry_add() allocates and populates a 'struct
bootentry_s'.  I don't think it makes sense to overload the meaning of
type when one can add a new field to the struct.

Note, your patch changes the default boot order as type is used in the
sorting when no priority is specified.  It's unclear if that was
intentional or not.

-Kevin



More information about the SeaBIOS mailing list