Merge branch 'pci/resource'
- Convert pci_resource_to_user() to a weak function to remove HAVE_ARCH_PCI_RESOURCE_TO_USER #defines (Denis Efremov) - Use PCI_SRIOV_NUM_BARS for idiomatic loop structure (Denis Efremov) - Fix Resizable BAR size suspend/restore for 1MB BARs (Sumit Saxena) - Correct "pci=resource_alignment" example in documentation (Alexey Kardashevskiy) * pci/resource: PCI: Correct pci=resource_alignment parameter example PCI: Restore Resizable BAR size bits correctly for 1MB BARs PCI: Use PCI_SRIOV_NUM_BARS in loops instead of PCI_IOV_RESOURCE_END PCI: Convert pci_resource_to_user() to a weak function # Conflicts: # drivers/pci/pci.c
This commit is contained in:
commit
0ca0ef1042
|
@ -3452,12 +3452,13 @@
|
|||
specify the device is described above.
|
||||
If <order of align> is not specified,
|
||||
PAGE_SIZE is used as alignment.
|
||||
PCI-PCI bridge can be specified, if resource
|
||||
A PCI-PCI bridge can be specified if resource
|
||||
windows need to be expanded.
|
||||
To specify the alignment for several
|
||||
instances of a device, the PCI vendor,
|
||||
device, subvendor, and subdevice may be
|
||||
specified, e.g., 4096@pci:8086:9c22:103c:198f
|
||||
specified, e.g., 12@pci:8086:9c22:103c:198f
|
||||
for 4096-byte alignment.
|
||||
ecrc= Enable/disable PCIe ECRC (transaction layer
|
||||
end-to-end CRC checking).
|
||||
bios: Use BIOS/firmware settings. This is the
|
||||
|
|
|
@ -66,8 +66,6 @@ extern pgprot_t pci_phys_mem_access_prot(struct file *file,
|
|||
unsigned long size,
|
||||
pgprot_t prot);
|
||||
|
||||
#define HAVE_ARCH_PCI_RESOURCE_TO_USER
|
||||
|
||||
/* This part of code was originally in xilinx-pci.h */
|
||||
#ifdef CONFIG_PCI_XILINX
|
||||
extern void __init xilinx_pci_init(void);
|
||||
|
|
|
@ -108,7 +108,6 @@ extern unsigned long PCIBIOS_MIN_MEM;
|
|||
|
||||
#define HAVE_PCI_MMAP
|
||||
#define ARCH_GENERIC_PCI_MMAP_RESOURCE
|
||||
#define HAVE_ARCH_PCI_RESOURCE_TO_USER
|
||||
|
||||
/*
|
||||
* Dynamic DMA mapping stuff.
|
||||
|
|
|
@ -112,8 +112,6 @@ extern pgprot_t pci_phys_mem_access_prot(struct file *file,
|
|||
unsigned long size,
|
||||
pgprot_t prot);
|
||||
|
||||
#define HAVE_ARCH_PCI_RESOURCE_TO_USER
|
||||
|
||||
extern resource_size_t pcibios_io_space_offset(struct pci_controller *hose);
|
||||
extern void pcibios_setup_bus_devices(struct pci_bus *bus);
|
||||
extern void pcibios_setup_bus_self(struct pci_bus *bus);
|
||||
|
|
|
@ -38,8 +38,6 @@ static inline int pci_proc_domain(struct pci_bus *bus)
|
|||
#define arch_can_pci_mmap_io() 1
|
||||
#define HAVE_ARCH_PCI_GET_UNMAPPED_AREA
|
||||
#define get_pci_unmapped_area get_fb_unmapped_area
|
||||
|
||||
#define HAVE_ARCH_PCI_RESOURCE_TO_USER
|
||||
#endif /* CONFIG_SPARC64 */
|
||||
|
||||
#if defined(CONFIG_SPARC64) || defined(CONFIG_LEON_PCI)
|
||||
|
|
|
@ -724,8 +724,8 @@ static void sriov_restore_state(struct pci_dev *dev)
|
|||
ctrl |= iov->ctrl & PCI_SRIOV_CTRL_ARI;
|
||||
pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, ctrl);
|
||||
|
||||
for (i = PCI_IOV_RESOURCES; i <= PCI_IOV_RESOURCE_END; i++)
|
||||
pci_update_resource(dev, i);
|
||||
for (i = 0; i < PCI_SRIOV_NUM_BARS; i++)
|
||||
pci_update_resource(dev, i + PCI_IOV_RESOURCES);
|
||||
|
||||
pci_write_config_dword(dev, iov->pos + PCI_SRIOV_SYS_PGSIZE, iov->pgsz);
|
||||
pci_iov_set_numvfs(dev, iov->num_VFs);
|
||||
|
|
|
@ -1438,7 +1438,7 @@ static void pci_restore_rebar_state(struct pci_dev *pdev)
|
|||
pci_read_config_dword(pdev, pos + PCI_REBAR_CTRL, &ctrl);
|
||||
bar_idx = ctrl & PCI_REBAR_CTRL_BAR_IDX;
|
||||
res = pdev->resource + bar_idx;
|
||||
size = order_base_2((resource_size(res) >> 20) | 1) - 1;
|
||||
size = ilog2(resource_size(res)) - 20;
|
||||
ctrl &= ~PCI_REBAR_CTRL_BAR_SIZE;
|
||||
ctrl |= size << PCI_REBAR_CTRL_BAR_SHIFT;
|
||||
pci_write_config_dword(pdev, pos + PCI_REBAR_CTRL, ctrl);
|
||||
|
@ -5932,6 +5932,18 @@ resource_size_t __weak pcibios_default_alignment(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Arches that don't want to expose struct resource to userland as-is in
|
||||
* sysfs and /proc can implement their own pci_resource_to_user().
|
||||
*/
|
||||
void __weak pci_resource_to_user(const struct pci_dev *dev, int bar,
|
||||
const struct resource *rsrc,
|
||||
resource_size_t *start, resource_size_t *end)
|
||||
{
|
||||
*start = rsrc->start;
|
||||
*end = rsrc->end;
|
||||
}
|
||||
|
||||
static char *resource_alignment_param;
|
||||
static DEFINE_SPINLOCK(resource_alignment_lock);
|
||||
|
||||
|
|
|
@ -1662,8 +1662,8 @@ static int iov_resources_unassigned(struct pci_dev *dev, void *data)
|
|||
int i;
|
||||
bool *unassigned = data;
|
||||
|
||||
for (i = PCI_IOV_RESOURCES; i <= PCI_IOV_RESOURCE_END; i++) {
|
||||
struct resource *r = &dev->resource[i];
|
||||
for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
|
||||
struct resource *r = &dev->resource[i + PCI_IOV_RESOURCES];
|
||||
struct pci_bus_region region;
|
||||
|
||||
/* Not assigned or rejected by kernel? */
|
||||
|
|
|
@ -1860,25 +1860,9 @@ static inline const char *pci_name(const struct pci_dev *pdev)
|
|||
return dev_name(&pdev->dev);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Some archs don't want to expose struct resource to userland as-is
|
||||
* in sysfs and /proc
|
||||
*/
|
||||
#ifdef HAVE_ARCH_PCI_RESOURCE_TO_USER
|
||||
void pci_resource_to_user(const struct pci_dev *dev, int bar,
|
||||
const struct resource *rsrc,
|
||||
resource_size_t *start, resource_size_t *end);
|
||||
#else
|
||||
static inline void pci_resource_to_user(const struct pci_dev *dev, int bar,
|
||||
const struct resource *rsrc, resource_size_t *start,
|
||||
resource_size_t *end)
|
||||
{
|
||||
*start = rsrc->start;
|
||||
*end = rsrc->end;
|
||||
}
|
||||
#endif /* HAVE_ARCH_PCI_RESOURCE_TO_USER */
|
||||
|
||||
|
||||
/*
|
||||
* The world is not perfect and supplies us with broken PCI devices.
|
||||
|
|
Loading…
Reference in New Issue