[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