[SeaBIOS] [PATCH 1/6] pci: don't reorder entries when moving to 64bit list

Gerd Hoffmann kraxel at redhat.com
Fri Nov 29 09:34:04 CET 2013


On Di, 2013-11-26 at 22:03 -0500, Kevin O'Connor wrote:
> On Tue, Nov 26, 2013 at 01:24:09PM +0100, Gerd Hoffmann wrote:
> > Otherwise the 64bit bars are not mapped in largest
> > first order, thereby messing up the alignment.
> > 
> > Signed-off-by: Gerd Hoffmann <kraxel at redhat.com>
> > ---
> >  src/fw/pciinit.c | 9 +++++++--
> >  1 file changed, 7 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/fw/pciinit.c b/src/fw/pciinit.c
> > index 34279a4..84bb65b 100644
> > --- a/src/fw/pciinit.c
> > +++ b/src/fw/pciinit.c
> > @@ -574,14 +574,19 @@ static u64 pci_region_sum(struct pci_region *r)
> >  static void pci_region_migrate_64bit_entries(struct pci_region *from,
> >                                               struct pci_region *to)
> >  {
> > -    struct hlist_node *n, **last = &to->list.first;
> > +    struct hlist_node *n, *last = NULL;
> >      struct pci_region_entry *entry;
> >      hlist_for_each_entry_safe(entry, n, &from->list, node) {
> >          if (!entry->is64)
> >              continue;
> >          // Move from source list to destination list.
> >          hlist_del(&entry->node);
> > -        hlist_add(&entry->node, last);
> > +        if (hlist_empty(&to->list)) {
> > +            hlist_add_head(&entry->node, &to->list);
> > +        } else {
> > +            hlist_add_after(&entry->node, last);
> > +        }
> > +        last = &entry->node;
> 
> This could be done by just adding: last = &entry->node.next;

Ok, I'll do it this way.

cheers,
  Gerd





More information about the SeaBIOS mailing list