diff options
Diffstat (limited to 'drivers/pci/endpoint/pci-epf-core.c')
| -rw-r--r-- | drivers/pci/endpoint/pci-epf-core.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/pci/endpoint/pci-epf-core.c b/drivers/pci/endpoint/pci-epf-core.c index 8bfdcd291196..fb1306de8f40 100644 --- a/drivers/pci/endpoint/pci-epf-core.c +++ b/drivers/pci/endpoint/pci-epf-core.c @@ -109,10 +109,12 @@ EXPORT_SYMBOL_GPL(pci_epf_free_space);   * pci_epf_alloc_space() - allocate memory for the PCI EPF register space   * @size: the size of the memory that has to be allocated   * @bar: the BAR number corresponding to the allocated register space + * @align: alignment size for the allocation region   *   * Invoke to allocate memory for the PCI EPF register space.   */ -void *pci_epf_alloc_space(struct pci_epf *epf, size_t size, enum pci_barno bar) +void *pci_epf_alloc_space(struct pci_epf *epf, size_t size, enum pci_barno bar, +			  size_t align)  {  	void *space;  	struct device *dev = epf->epc->dev.parent; @@ -120,7 +122,11 @@ void *pci_epf_alloc_space(struct pci_epf *epf, size_t size, enum pci_barno bar)  	if (size < 128)  		size = 128; -	size = roundup_pow_of_two(size); + +	if (align) +		size = ALIGN(size, align); +	else +		size = roundup_pow_of_two(size);  	space = dma_alloc_coherent(dev, size, &phys_addr, GFP_KERNEL);  	if (!space) {  |