mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
When CONFIG_PCI_MSI is disabled pci_alloc_irq_vectors() and
pci_free_irq_vectors() are defined as inline functions and hence require
a Rust helper.
error[E0425]: cannot find function `pci_alloc_irq_vectors` in crate `bindings`
--> rust/kernel/pci/irq.rs:144:23
|
144 | ...s::pci_alloc_irq_vectors(dev.as_raw(), min_vecs, max_vecs, irq_types.as_raw())
| ^^^^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `pci_irq_vector`
|
::: .../rust/bindings/bindings_helpers_generated.rs:1197:5
|
1197 | pub fn pci_irq_vector(pdev: *mut pci_dev, nvec: ffi::c_uint) -> ffi::c_int;
| --------------------------------------------------------------------------- similarly named function `pci_irq_vector` defined here
error[E0425]: cannot find function `pci_free_irq_vectors` in crate `bindings`
--> rust/kernel/pci/irq.rs:170:28
|
170 | unsafe { bindings::pci_free_irq_vectors(self.dev.as_raw()) };
| ^^^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `pci_irq_vector`
|
::: .../rust/bindings/bindings_helpers_generated.rs:1197:5
|
1197 | pub fn pci_irq_vector(pdev: *mut pci_dev, nvec: ffi::c_uint) -> ffi::c_int;
| --------------------------------------------------------------------------- similarly named function `pci_irq_vector` defined here
error: aborting due to 2 previous errors
Fix this by adding the corresponding helpers.
Fixes: 340ccc9735 ("rust: pci: Allocate and manage PCI interrupt vectors")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202512012238.YgVvRRUx-lkp@intel.com/
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>
Link: https://patch.msgid.link/20251202210501.40998-1-dakr@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
44 lines
944 B
C
44 lines
944 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
#include <linux/pci.h>
|
|
|
|
u16 rust_helper_pci_dev_id(struct pci_dev *dev)
|
|
{
|
|
return PCI_DEVID(dev->bus->number, dev->devfn);
|
|
}
|
|
|
|
resource_size_t rust_helper_pci_resource_start(struct pci_dev *pdev, int bar)
|
|
{
|
|
return pci_resource_start(pdev, bar);
|
|
}
|
|
|
|
resource_size_t rust_helper_pci_resource_len(struct pci_dev *pdev, int bar)
|
|
{
|
|
return pci_resource_len(pdev, bar);
|
|
}
|
|
|
|
bool rust_helper_dev_is_pci(const struct device *dev)
|
|
{
|
|
return dev_is_pci(dev);
|
|
}
|
|
|
|
#ifndef CONFIG_PCI_MSI
|
|
int rust_helper_pci_alloc_irq_vectors(struct pci_dev *dev,
|
|
unsigned int min_vecs,
|
|
unsigned int max_vecs,
|
|
unsigned int flags)
|
|
{
|
|
return pci_alloc_irq_vectors(dev, min_vecs, max_vecs, flags);
|
|
}
|
|
|
|
void rust_helper_pci_free_irq_vectors(struct pci_dev *dev)
|
|
{
|
|
pci_free_irq_vectors(dev);
|
|
}
|
|
|
|
int rust_helper_pci_irq_vector(struct pci_dev *pdev, unsigned int nvec)
|
|
{
|
|
return pci_irq_vector(pdev, nvec);
|
|
}
|
|
#endif
|