Re: [PATCH 2/3] PCI: Maintain a list of FW-assigned BIOS BAR values

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux