mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
PCI: Move pci_rebar_bytes_to_size() and clean it up
Move pci_rebar_bytes_to_size() from include/linux/pci.h to rebar.c as it does not look very trivial and is not expected to be performance critical. Convert literals to use a newly added PCI_REBAR_MIN_SIZE define. Also add kernel doc for the function as the function is exported. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Michael J. Ruhl <mjruhl@habana.ai> Link: https://patch.msgid.link/20251113180053.27944-3-ilpo.jarvinen@linux.intel.com
This commit is contained in:
committed by
Bjorn Helgaas
parent
9f71938cd7
commit
876e15943e
@@ -7,11 +7,34 @@
|
||||
#include <linux/errno.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/log2.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#include "pci.h"
|
||||
|
||||
#define PCI_REBAR_MIN_SIZE ((resource_size_t)SZ_1M)
|
||||
|
||||
/**
|
||||
* pci_rebar_bytes_to_size - Convert size in bytes to PCI BAR Size
|
||||
* @bytes: size in bytes
|
||||
*
|
||||
* Convert size in bytes to encoded BAR Size in Resizable BAR Capability
|
||||
* (PCIe r6.2, sec. 7.8.6.3).
|
||||
*
|
||||
* Return: encoded BAR Size as defined in the PCIe spec (0=1MB, 31=128TB)
|
||||
*/
|
||||
int pci_rebar_bytes_to_size(u64 bytes)
|
||||
{
|
||||
int rebar_minsize = ilog2(PCI_REBAR_MIN_SIZE);
|
||||
|
||||
bytes = roundup_pow_of_two(bytes);
|
||||
|
||||
return max(ilog2(bytes), rebar_minsize) - rebar_minsize;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_rebar_bytes_to_size);
|
||||
|
||||
void pci_rebar_init(struct pci_dev *pdev)
|
||||
{
|
||||
pdev->rebar_cap = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_REBAR);
|
||||
|
||||
@@ -1419,17 +1419,13 @@ void pcibios_reset_secondary_bus(struct pci_dev *dev);
|
||||
void pci_update_resource(struct pci_dev *dev, int resno);
|
||||
int __must_check pci_assign_resource(struct pci_dev *dev, int i);
|
||||
int pci_release_resource(struct pci_dev *dev, int resno);
|
||||
static inline int pci_rebar_bytes_to_size(u64 bytes)
|
||||
{
|
||||
bytes = roundup_pow_of_two(bytes);
|
||||
|
||||
/* Return BAR size as defined in the resizable BAR specification */
|
||||
return max(ilog2(bytes), 20) - 20;
|
||||
}
|
||||
|
||||
/* Resizable BAR related routines */
|
||||
int pci_rebar_bytes_to_size(u64 bytes);
|
||||
u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar);
|
||||
int __must_check pci_resize_resource(struct pci_dev *dev, int i, int size,
|
||||
int exclude_bars);
|
||||
|
||||
int pci_select_bars(struct pci_dev *dev, unsigned long flags);
|
||||
bool pci_device_is_present(struct pci_dev *pdev);
|
||||
void pci_ignore_hotplug(struct pci_dev *dev);
|
||||
|
||||
Reference in New Issue
Block a user