Page MenuHomeFreeBSD

D34774.diff
No OneTemporary

D34774.diff

diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h
--- a/sys/compat/linuxkpi/common/include/linux/pci.h
+++ b/sys/compat/linuxkpi/common/include/linux/pci.h
@@ -317,6 +317,8 @@
};
int pci_request_region(struct pci_dev *pdev, int bar, const char *res_name);
+int pci_alloc_irq_vectors(struct pci_dev *pdev, int minv, int maxv,
+ unsigned int flags);
/* Internal helper function(s). */
struct pci_dev *lkpinew_pci_dev(device_t);
@@ -860,42 +862,6 @@
return (0);
}
-static inline int
-pci_alloc_irq_vectors(struct pci_dev *pdev, int minv, int maxv,
- unsigned int flags)
-{
- int error;
-
- if (flags & PCI_IRQ_MSIX) {
- struct msix_entry *entries;
- int i;
-
- entries = kcalloc(maxv, sizeof(*entries), GFP_KERNEL);
- if (entries == NULL) {
- error = -ENOMEM;
- goto out;
- }
- for (i = 0; i < maxv; ++i)
- entries[i].entry = i;
- error = pci_enable_msix(pdev, entries, maxv);
-out:
- kfree(entries);
- if (error == 0 && pdev->msix_enabled)
- return (pdev->dev.irq_end - pdev->dev.irq_start);
- }
- if (flags & PCI_IRQ_MSI) {
- error = pci_enable_msi(pdev);
- if (error == 0 && pdev->msi_enabled)
- return (pdev->dev.irq_end - pdev->dev.irq_start);
- }
- if (flags & PCI_IRQ_LEGACY) {
- if (pdev->irq)
- return (1);
- }
-
- return (-EINVAL);
-}
-
static inline int
pci_channel_offline(struct pci_dev *pdev)
{
diff --git a/sys/compat/linuxkpi/common/src/linux_pci.c b/sys/compat/linuxkpi/common/src/linux_pci.c
--- a/sys/compat/linuxkpi/common/src/linux_pci.c
+++ b/sys/compat/linuxkpi/common/src/linux_pci.c
@@ -883,6 +883,42 @@
bus_topo_unlock();
}
+int
+pci_alloc_irq_vectors(struct pci_dev *pdev, int minv, int maxv,
+ unsigned int flags)
+{
+ int error;
+
+ if (flags & PCI_IRQ_MSIX) {
+ struct msix_entry *entries;
+ int i;
+
+ entries = kcalloc(maxv, sizeof(*entries), GFP_KERNEL);
+ if (entries == NULL) {
+ error = -ENOMEM;
+ goto out;
+ }
+ for (i = 0; i < maxv; ++i)
+ entries[i].entry = i;
+ error = pci_enable_msix(pdev, entries, maxv);
+out:
+ kfree(entries);
+ if (error == 0 && pdev->msix_enabled)
+ return (pdev->dev.irq_end - pdev->dev.irq_start);
+ }
+ if (flags & PCI_IRQ_MSI) {
+ error = pci_enable_msi(pdev);
+ if (error == 0 && pdev->msi_enabled)
+ return (pdev->dev.irq_end - pdev->dev.irq_start);
+ }
+ if (flags & PCI_IRQ_LEGACY) {
+ if (pdev->irq)
+ return (1);
+ }
+
+ return (-EINVAL);
+}
+
CTASSERT(sizeof(dma_addr_t) <= sizeof(uint64_t));
struct linux_dma_obj {

File Metadata

Mime Type
text/plain
Expires
Wed, Nov 20, 3:57 PM (21 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14741974
Default Alt Text
D34774.diff (2 KB)

Event Timeline