[SeaBIOS] [PATCH 2/2] pci: load memory window setup from host

Michael S. Tsirkin mst at redhat.com
Tue Apr 30 07:03:08 CEST 2013


On Mon, Apr 29, 2013 at 07:27:29PM -0400, Kevin O'Connor wrote:
> On Mon, Apr 29, 2013 at 06:21:40PM +0300, Michael S. Tsirkin wrote:
> > Load memory window setup for pci from host.
> > This makes it possible for host to make sure
> > setup matches hardware exactly: especially important
> > for when ACPI tables are loaded from host.
> > This will also make it easier to add more chipsets
> > down the road.
> > 
> > Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
> > ---
> >  src/paravirt.c | 25 ++++++++++++++++++++++++-
> >  src/pciinit.c  | 54 ++++++++++++++++++++++++++++++++++++++++--------------
> >  src/util.h     |  8 +++++++-
> >  3 files changed, 71 insertions(+), 16 deletions(-)
> > 
> > diff --git a/src/paravirt.c b/src/paravirt.c
> > index 85aa423..067a4dc 100644
> > --- a/src/paravirt.c
> > +++ b/src/paravirt.c
> > @@ -91,14 +91,35 @@ qemu_preinit(void)
> >      dprintf(1, "Ram Size=0x%08x (0x%016llx high)\n", RamSize, RamSizeOver4G);
> >  }
> >  
> > +struct pci_mem *qemu_get_pci_mem(void)
> > +{
> > +    int psize;
> > +    struct pci_mem *mem = romfile_loadfile("etc/pci-info", &psize);
> > +    if (!mem)
> > +        return NULL;
> > +    if (psize < sizeof *mem) {
> 
> Please always add parenthesis to sizeof calls.
> 
> > +        free(mem);
> > +        return NULL;
> > +    }
> > +    mem->start32 = le64_to_cpu(mem->start32);
> > +    mem->end32 = le64_to_cpu(mem->end32);
> > +    mem->start64 = le64_to_cpu(mem->start64);
> > +    mem->end64 = le64_to_cpu(mem->end64);
> > +    return mem;
> > +}
> > +
> >  void
> >  qemu_platform_setup(void)
> >  {
> > +    struct pci_mem *mem;
> > +
> >      if (!CONFIG_QEMU)
> >          return;
> >  
> >      qemu_cfg_init();
> >  
> > +    mem = qemu_get_pci_mem();
> > +
> >      if (runningOnXen()) {
> >          pci_probe_devices();
> >          xen_hypercall_setup();
> > @@ -107,7 +128,7 @@ qemu_platform_setup(void)
> >      }
> >  
> >      // Initialize pci
> > -    pci_setup();
> > +    pci_setup(mem);
> 
> I don't understand why this code is being added to paravirt.c.  Just
> update pciinit.c with the romfile_loadfile() calls it needs.  There is
> no reason to change the order of initialization or to add parameters
> to pci_setup.

Don't we need to do qemu_cfg_init to load the
list of files before we can call romfile_loadfile?

> Otherwise, I'm fine with having QEMU send the PCI windows explicitly
> to SeaBIOS.
> 
> -Kevin



More information about the SeaBIOS mailing list