Skip to content

Commit bf0a90f

Browse files
ij-intelbjorn-helgaas
authored andcommitted
PCI: Convert BAR sizes bitmasks to u64
PCIe r7.0, sec 7.8.6, defines resizable BAR sizes beyond the currently supported maximum of 128TB, which will require more than u32 to store the entire bitmask. Convert Resizable BAR related functions to use u64 bitmask for BAR sizes to make the typing more future-proof. The support for the larger BAR sizes themselves is not added at this point. 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> Link: https://patch.msgid.link/20251113180053.27944-12-ilpo.jarvinen@linux.intel.com
1 parent c7df705 commit bf0a90f

5 files changed

Lines changed: 6 additions & 6 deletions

File tree

drivers/gpu/drm/xe/xe_vram.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ static void resize_vram_bar(struct xe_device *xe)
6969

7070
if (!pci_rebar_size_supported(pdev, LMEM_BAR, rebar_size)) {
7171
drm_info(&xe->drm,
72-
"Requested size: %lluMiB is not supported by rebar sizes: 0x%x. Leaving default: %lluMiB\n",
72+
"Requested size: %lluMiB is not supported by rebar sizes: 0x%llx. Leaving default: %lluMiB\n",
7373
(u64)pci_rebar_size_to_bytes(rebar_size) >> 20,
7474
pci_rebar_get_possible_sizes(pdev, LMEM_BAR),
7575
(u64)current_size >> 20);

drivers/pci/iov.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1367,7 +1367,7 @@ EXPORT_SYMBOL_GPL(pci_iov_vf_bar_set_size);
13671367
u32 pci_iov_vf_bar_get_sizes(struct pci_dev *dev, int resno, int num_vfs)
13681368
{
13691369
u64 vf_len = pci_resource_len(dev, resno);
1370-
u32 sizes;
1370+
u64 sizes;
13711371

13721372
if (!num_vfs)
13731373
return 0;

drivers/pci/pci-sysfs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1587,7 +1587,7 @@ static ssize_t __resource_resize_show(struct device *dev, int n, char *buf)
15871587
pci_config_pm_runtime_get(pdev);
15881588

15891589
ret = sysfs_emit(buf, "%016llx\n",
1590-
(u64)pci_rebar_get_possible_sizes(pdev, n));
1590+
pci_rebar_get_possible_sizes(pdev, n));
15911591

15921592
pci_config_pm_runtime_put(pdev);
15931593

drivers/pci/rebar.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ static int pci_rebar_find_pos(struct pci_dev *pdev, int bar)
105105
* Return: A bitmask of possible sizes (bit 0=1MB, bit 31=128TB), or %0 if
106106
* BAR isn't resizable.
107107
*/
108-
u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
108+
u64 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar)
109109
{
110110
int pos;
111111
u32 cap;
@@ -155,7 +155,7 @@ EXPORT_SYMBOL_GPL(pci_rebar_size_supported);
155155
*/
156156
int pci_rebar_get_max_size(struct pci_dev *pdev, int bar)
157157
{
158-
u32 sizes;
158+
u64 sizes;
159159

160160
sizes = pci_rebar_get_possible_sizes(pdev, bar);
161161
if (!sizes)

include/linux/pci.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,7 @@ int pci_release_resource(struct pci_dev *dev, int resno);
14231423
/* Resizable BAR related routines */
14241424
int pci_rebar_bytes_to_size(u64 bytes);
14251425
resource_size_t pci_rebar_size_to_bytes(int size);
1426-
u32 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar);
1426+
u64 pci_rebar_get_possible_sizes(struct pci_dev *pdev, int bar);
14271427
bool pci_rebar_size_supported(struct pci_dev *pdev, int bar, int size);
14281428
int pci_rebar_get_max_size(struct pci_dev *pdev, int bar);
14291429
int __must_check pci_resize_resource(struct pci_dev *dev, int i, int size,

0 commit comments

Comments
 (0)