Author: hselasky
Date: Tue Apr 30 09:26:11 2019
New Revision: 346956
URL: https://svnweb.freebsd.org/changeset/base/346956

Log:
  Store a pointer to the device instead of the PCI device in the DMA pool
  implementation in the LinuxKPI. This avoids use of container_of().
  
  No functional change.
  
  Discussed with:               kib @
  Sponsored by:         Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/include/linux/dmapool.h
  head/sys/compat/linuxkpi/common/src/linux_pci.c

Modified: head/sys/compat/linuxkpi/common/include/linux/dmapool.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/dmapool.h     Tue Apr 30 
09:10:45 2019        (r346955)
+++ head/sys/compat/linuxkpi/common/include/linux/dmapool.h     Tue Apr 30 
09:26:11 2019        (r346956)
@@ -46,7 +46,7 @@ void linux_dma_pool_free(struct dma_pool *pool, void *
     dma_addr_t dma_addr);
 
 struct dma_pool {
-       struct pci_dev  *pool_pdev;
+       struct device  *pool_device;
        uma_zone_t      pool_zone;
        struct mtx      pool_dma_lock;
        bus_dma_tag_t   pool_dmat;

Modified: head/sys/compat/linuxkpi/common/src/linux_pci.c
==============================================================================
--- head/sys/compat/linuxkpi/common/src/linux_pci.c     Tue Apr 30 09:10:45 
2019        (r346955)
+++ head/sys/compat/linuxkpi/common/src/linux_pci.c     Tue Apr 30 09:26:11 
2019        (r346956)
@@ -701,7 +701,7 @@ dma_pool_obj_import(void *arg, void **store, int count
        struct linux_dma_obj *obj;
        int error, i;
 
-       priv = pool->pool_pdev->dev.dma_priv;
+       priv = pool->pool_device->dma_priv;
        for (i = 0; i < count; i++) {
                obj = uma_zalloc(linux_dma_obj_zone, flags);
                if (obj == NULL)
@@ -728,7 +728,7 @@ dma_pool_obj_release(void *arg, void **store, int coun
        struct linux_dma_obj *obj;
        int i;
 
-       priv = pool->pool_pdev->dev.dma_priv;
+       priv = pool->pool_device->dma_priv;
        for (i = 0; i < count; i++) {
                obj = store[i];
                bus_dmamem_free(pool->pool_dmat, obj->vaddr, obj->dmamap);
@@ -746,7 +746,7 @@ linux_dma_pool_create(char *name, struct device *dev, 
        priv = dev->dma_priv;
 
        pool = kzalloc(sizeof(*pool), GFP_KERNEL);
-       pool->pool_pdev = to_pci_dev(dev);
+       pool->pool_device = dev;
        pool->pool_entry_size = size;
 
        if (bus_dma_tag_create(bus_get_dma_tag(dev->bsddev),
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to