Page MenuHomeFreeBSD

D34754.diff
No OneTemporary

D34754.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
@@ -229,13 +229,12 @@
devclass_t bsdclass;
struct device_driver driver;
const struct pci_error_handlers *err_handler;
- bool isdrm;
+ int bsd_probe_return;
int (*bsd_iov_init)(device_t dev, uint16_t num_vfs,
const nvlist_t *pf_config);
void (*bsd_iov_uninit)(device_t dev);
int (*bsd_iov_add_vf)(device_t dev, uint16_t vfnum,
const nvlist_t *vf_config);
- int bsd_probe_return;
};
struct pci_bus {
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
@@ -119,6 +119,12 @@
#define DMA_PRIV_LOCK(priv) mtx_lock(&(priv)->lock)
#define DMA_PRIV_UNLOCK(priv) mtx_unlock(&(priv)->lock)
+static bool
+linux_is_drm(struct pci_driver *pdrv)
+{
+ return (pdrv->name != NULL && strcmp(pdrv->name, "drmn") == 0);
+}
+
static int
linux_pdev_dma_uninit(struct pci_dev *pdev)
{
@@ -405,7 +411,7 @@
linux_set_current(curthread);
parent = device_get_parent(dev);
- isdrm = pdrv != NULL && pdrv->isdrm;
+ isdrm = pdrv != NULL && linux_is_drm(pdrv);
if (isdrm) {
struct pci_devinfo *dinfo;
@@ -674,7 +680,6 @@
dc = devclass_find("pci");
if (dc == NULL)
return (-ENXIO);
- pdrv->isdrm = false;
return (_linux_pci_register_driver(pdrv, dc));
}
@@ -688,7 +693,7 @@
KASSERT(type == SYS_RES_IOPORT || type == SYS_RES_MEMORY,
("trying to reserve non-BAR type %d", type));
- dev = pdev->pdrv != NULL && pdev->pdrv->isdrm ?
+ dev = pdev->pdrv != NULL && linux_is_drm(pdev->pdrv) ?
device_get_parent(pdev->dev.bsddev) : pdev->dev.bsddev;
res = pci_reserve_map(device_get_parent(dev), dev, type, &rid, 0, ~0,
1, 1, 0);
@@ -706,7 +711,7 @@
if ((rle = linux_pci_get_bar(pdev, bar, true)) == NULL)
return (0);
- dev = pdev->pdrv != NULL && pdev->pdrv->isdrm ?
+ dev = pdev->pdrv != NULL && linux_is_drm(pdev->pdrv) ?
device_get_parent(pdev->dev.bsddev) : pdev->dev.bsddev;
if (BUS_TRANSLATE_RESOURCE(dev, rle->type, rle->start, &newstart)) {
device_printf(pdev->dev.bsddev, "translate of %#jx failed\n",
@@ -734,7 +739,6 @@
dc = devclass_create("vgapci");
if (dc == NULL)
return (-ENXIO);
- pdrv->isdrm = true;
pdrv->name = "drmn";
return (_linux_pci_register_driver(pdrv, dc));
}

File Metadata

Mime Type
text/plain
Expires
Tue, Nov 19, 3:21 AM (21 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14709509
Default Alt Text
D34754.diff (2 KB)

Event Timeline