On Wed, 09 Nov 2011 17:43:51 -0700 Myron Stowe <myron.stowe@xxxxxxxxxx> wrote: > From: Myron Stowe <mstowe@xxxxxxxxxx> > > Commit 58c84eda075 introduced functionality to try and reinstate the > original BIOS BAR addresses of a PCI device when normal resource > assignment attempts fail. To keep track of the BIOS BAR addresses, > struct pci_dev was augmented with an array to hold the BAR addresses > of the PCI device: 'resource_size_t fw_addr[DEVICE_COUNT_RESOURCE]'. > > The reinstatement of BAR addresses is an uncommon event leaving the > 'fw_addr' array unused normally. As the use of struct pci_dev is so > prevalent, this seems wasteful. > > This patch introduces a stand alone data structure and corresponding set > of interfacing routines for maintaining a list of FW-assigned BIOS BAR > value temporary entries. > > Signed-off-by: Myron Stowe <myron.stowe@xxxxxxxxxx> > --- > > drivers/pci/setup-res.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++ > include/linux/pci.h | 1 + > 2 files changed, 74 insertions(+), 0 deletions(-) > > diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c > index ad8c4ae..ab45c11 100644 > --- a/drivers/pci/setup-res.c > +++ b/drivers/pci/setup-res.c > @@ -26,6 +26,79 @@ > #include "pci.h" > > > +/* > + * This list of dynamic mappings is for temporarly maintaining > + * original BIOS BAR addresses for possbile reinstatement. > + */ > +struct pci_fwaddrmap { > + struct list_head list; > + struct pci_dev *dev; > + resource_size_t fw_addr[DEVICE_COUNT_RESOURCE]; > + unsigned long refcount; > +}; > + > +static LIST_HEAD(pci_fwaddrmappings); > +static DEFINE_SPINLOCK(pci_fwaddrmap_lock); Is the refcounting really needed? Can't we just free the whole list at some point to simplify things a bit? -- Jesse Barnes, Intel Open Source Technology Center
Attachment:
signature.asc
Description: PGP signature