diff mbox

[resend] IB: Move PCI dependency from root KConfig to HW's KConfigs

Message ID 20170904092611.19892-1-yuval.shaia@oracle.com (mailing list archive)
State Superseded
Headers show

Commit Message

Yuval Shaia Sept. 4, 2017, 9:26 a.m. UTC
No reason to have dependency on PCI for the entire infiniband stack so
move it to KConfig of only the drivers that actually using PCI.

Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
---
 drivers/infiniband/Kconfig           | 1 -
 drivers/infiniband/hw/cxgb3/Kconfig  | 1 +
 drivers/infiniband/hw/cxgb4/Kconfig  | 1 +
 drivers/infiniband/hw/hfi1/Kconfig   | 1 +
 drivers/infiniband/hw/i40iw/Kconfig  | 1 +
 drivers/infiniband/hw/qedr/Kconfig   | 1 +
 drivers/infiniband/hw/qib/Kconfig    | 1 +
 drivers/infiniband/sw/rdmavt/Kconfig | 1 +
 drivers/infiniband/ulp/ipoib/Kconfig | 1 +
 9 files changed, 8 insertions(+), 1 deletion(-)

Comments

Thomas Bogendoerfer Sept. 4, 2017, 9:47 a.m. UTC | #1
On Mon,  4 Sep 2017 12:26:11 +0300
Yuval Shaia <yuval.shaia@oracle.com> wrote:

> diff --git a/drivers/infiniband/ulp/ipoib/Kconfig b/drivers/infiniband/ulp/ipoib/Kconfig
> index cda8eac55fff..5aec880c4318 100644
> --- a/drivers/infiniband/ulp/ipoib/Kconfig
> +++ b/drivers/infiniband/ulp/ipoib/Kconfig
> @@ -1,6 +1,7 @@
>  config INFINIBAND_IPOIB
>  	tristate "IP-over-InfiniBand"
>  	depends on NETDEVICES && INET && (IPV6 || IPV6=n)
> +	depends on PCI || BROKEN

IMHO adding this dependency doesn't make sense. There is nothing PCI related in
that driver (besides the #include <linux/pci.h> in ipoib_main.c, which is not
needed anymore).

Thomas.
kernel test robot Sept. 5, 2017, 3:38 a.m. UTC | #2
Hi Yuval,

[auto build test ERROR on rdma/master]
[also build test ERROR on v4.13 next-20170904]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Yuval-Shaia/IB-Move-PCI-dependency-from-root-KConfig-to-HW-s-KConfigs/20170905-024550
base:   https://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git master
config: openrisc-allmodconfig (attached as .config)
compiler: or1k-linux-gcc (GCC) 5.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=openrisc 

All errors (new ones prefixed by >>):

   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:0:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:473:2: error: expected specifier-qualifier-list before 'DECLARE_PCI_UNMAP_ADDR'
     DECLARE_PCI_UNMAP_ADDR(rx_msgunmap);  /* for dma_unmap_single() */
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:496:2: error: expected specifier-qualifier-list before 'DECLARE_PCI_UNMAP_ADDR'
     DECLARE_PCI_UNMAP_ADDR(tx_msgunmap);  /* for dma_unmap_single() */
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c: In function 'kiblnd_map_tx_pages':
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1540:19: error: 'struct kib_tx' has no member named 'tx_pages'
     __u64 *pages = tx->tx_pages;
                      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c: In function 'kiblnd_fmr_pool_map':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1619:19: error: 'struct kib_tx' has no member named 'tx_pages'
     __u64 *pages = tx->tx_pages;
                      ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1620:24: error: 'struct kib_tx' has no member named 'tx_rd'
     bool is_rx = (rd != tx->tx_rd);
                           ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1685:28: error: 'struct kib_tx' has no member named 'tx_frags'
        n = ib_map_mr_sg(mr, tx->tx_frags,
                               ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1686:10: error: 'struct kib_tx' has no member named 'tx_nfrags'
           tx->tx_nfrags, NULL, PAGE_SIZE);
             ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/asm-generic/div64.h:23,
                    from ./arch/openrisc/include/generated/asm/div64.h:1,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1687:25: error: 'struct kib_tx' has no member named 'tx_nfrags'
        if (unlikely(n != tx->tx_nfrags)) {
                            ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:77:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1689:18: error: 'struct kib_tx' has no member named 'tx_nfrags'
                n, tx->tx_nfrags);
                     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:222:41: note: in definition of macro '__CDEBUG'
      libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__); \
                                            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:236:29: note: in expansion of macro 'CDEBUG_LIMIT'
    #define CERROR(format, ...) CDEBUG_LIMIT(D_ERROR, format, ## __VA_ARGS__)
                                ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1688:6: note: in expansion of macro 'CERROR'
         CERROR("Failed to map mr %d/%d elements\n",
         ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c: In function 'kiblnd_destroy_tx_pool':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1987:9: error: 'struct kib_tx' has no member named 'tx_pages'
      if (tx->tx_pages)
            ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/asm-generic/div64.h:23,
                    from ./arch/openrisc/include/generated/asm/div64.h:1,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1988:18: error: 'struct kib_tx' has no member named 'tx_pages'
       LIBCFS_FREE(tx->tx_pages,
                     ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1988:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_pages,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:77:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1990:19: error: 'struct kib_tx' has no member named 'tx_pages'
            sizeof(*tx->tx_pages));
                      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:222:41: note: in definition of macro '__CDEBUG'
      libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__); \
                                            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:236:29: note: in expansion of macro 'CDEBUG_LIMIT'
    #define CERROR(format, ...) CDEBUG_LIMIT(D_ERROR, format, ## __VA_ARGS__)
                                ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:148:3: note: in expansion of macro 'CERROR'
      CERROR("LIBCFS: free NULL '" #ptr "' (%d bytes) at "    \
      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1988:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_pages,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:79:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1988:18: error: 'struct kib_tx' has no member named 'tx_pages'
       LIBCFS_FREE(tx->tx_pages,
                     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:152:9: note: in definition of macro 'LIBCFS_FREE'
     kvfree(ptr);       \
            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1991:9: error: 'struct kib_tx' has no member named 'tx_frags'
      if (tx->tx_frags)
            ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/asm-generic/div64.h:23,
                    from ./arch/openrisc/include/generated/asm/div64.h:1,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1992:18: error: 'struct kib_tx' has no member named 'tx_frags'
       LIBCFS_FREE(tx->tx_frags,
                     ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1992:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_frags,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:77:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1994:20: error: 'struct kib_tx' has no member named 'tx_frags'
             sizeof(*tx->tx_frags));
                       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:222:41: note: in definition of macro '__CDEBUG'
      libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__); \
                                            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:236:29: note: in expansion of macro 'CDEBUG_LIMIT'
    #define CERROR(format, ...) CDEBUG_LIMIT(D_ERROR, format, ## __VA_ARGS__)
                                ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:148:3: note: in expansion of macro 'CERROR'
      CERROR("LIBCFS: free NULL '" #ptr "' (%d bytes) at "    \
      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1992:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_frags,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:79:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1992:18: error: 'struct kib_tx' has no member named 'tx_frags'
       LIBCFS_FREE(tx->tx_frags,
                     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:152:9: note: in definition of macro 'LIBCFS_FREE'
     kvfree(ptr);       \
            ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1995:9: error: 'struct kib_tx' has no member named 'tx_wrq'
      if (tx->tx_wrq)
            ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/asm-generic/div64.h:23,
                    from ./arch/openrisc/include/generated/asm/div64.h:1,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1996:18: error: 'struct kib_tx' has no member named 'tx_wrq'
       LIBCFS_FREE(tx->tx_wrq,
                     ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1996:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_wrq,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:77:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1998:19: error: 'struct kib_tx' has no member named 'tx_wrq'
            sizeof(*tx->tx_wrq));
                      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:222:41: note: in definition of macro '__CDEBUG'
      libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__); \
                                            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:236:29: note: in expansion of macro 'CDEBUG_LIMIT'
    #define CERROR(format, ...) CDEBUG_LIMIT(D_ERROR, format, ## __VA_ARGS__)
                                ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:148:3: note: in expansion of macro 'CERROR'
      CERROR("LIBCFS: free NULL '" #ptr "' (%d bytes) at "    \
      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1996:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_wrq,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:79:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1996:18: error: 'struct kib_tx' has no member named 'tx_wrq'
       LIBCFS_FREE(tx->tx_wrq,
                     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:152:9: note: in definition of macro 'LIBCFS_FREE'
     kvfree(ptr);       \
            ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:1999:9: error: 'struct kib_tx' has no member named 'tx_sge'
      if (tx->tx_sge)
            ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/asm-generic/div64.h:23,
                    from ./arch/openrisc/include/generated/asm/div64.h:1,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2000:18: error: 'struct kib_tx' has no member named 'tx_sge'
       LIBCFS_FREE(tx->tx_sge,
                     ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2000:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_sge,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:77:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2002:19: error: 'struct kib_tx' has no member named 'tx_sge'
            sizeof(*tx->tx_sge));
                      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:222:41: note: in definition of macro '__CDEBUG'
      libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__); \
                                            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_debug.h:236:29: note: in expansion of macro 'CDEBUG_LIMIT'
    #define CERROR(format, ...) CDEBUG_LIMIT(D_ERROR, format, ## __VA_ARGS__)
                                ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:148:3: note: in expansion of macro 'CERROR'
      CERROR("LIBCFS: free NULL '" #ptr "' (%d bytes) at "    \
      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2000:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_sge,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:79:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2000:18: error: 'struct kib_tx' has no member named 'tx_sge'
       LIBCFS_FREE(tx->tx_sge,
                     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:152:9: note: in definition of macro 'LIBCFS_FREE'
     kvfree(ptr);       \
            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2003:9: error: 'struct kib_tx' has no member named 'tx_rd'
      if (tx->tx_rd)
            ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/asm-generic/div64.h:23,
                    from ./arch/openrisc/include/generated/asm/div64.h:1,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2004:18: error: 'struct kib_tx' has no member named 'tx_rd'
       LIBCFS_FREE(tx->tx_rd,
                     ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2004:4: note: in expansion of macro 'LIBCFS_FREE'
       LIBCFS_FREE(tx->tx_rd,
       ^
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs.h:79:0,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:66,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:39:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2004:18: error: 'struct kib_tx' has no member named 'tx_rd'
       LIBCFS_FREE(tx->tx_rd,
                     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:152:9: note: in definition of macro 'LIBCFS_FREE'
     kvfree(ptr);       \
            ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/asm-generic/div64.h:23,
                    from ./arch/openrisc/include/generated/asm/div64.h:1,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c: In function 'kiblnd_create_tx_pool':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c:2066:32: error: 'struct kib_tx' has no member named 'tx_pages'
          LNET_MAX_IOV * sizeof(*tx->tx_pages));
                                   ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:63:23: note: in expansion of macro 'LASSERTF'
    #define LASSERT(cond) LASSERTF(cond, "\n")
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:91:2: note: in expansion of macro 'LASSERT'
     LASSERT(!in_interrupt() || ((size) <= LIBCFS_VMALLOC_SIZE && \
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:134:2: note: in expansion of macro 'LIBCFS_ALLOC_PRE'
     LIBCFS_ALLOC_PRE((size), (mask));        \
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:143:2: note: in expansion of macro 'LIBCFS_CPT_ALLOC_GFP'
--
   In file included from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:37:0:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:473:2: error: expected specifier-qualifier-list before 'DECLARE_PCI_UNMAP_ADDR'
     DECLARE_PCI_UNMAP_ADDR(rx_msgunmap);  /* for dma_unmap_single() */
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:496:2: error: expected specifier-qualifier-list before 'DECLARE_PCI_UNMAP_ADDR'
     DECLARE_PCI_UNMAP_ADDR(tx_msgunmap);  /* for dma_unmap_single() */
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_tx_done':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:82:4: error: 'struct kib_tx' has no member named 'tx_nwrq'
     tx->tx_nwrq = 0;
       ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:37,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_get_idle_tx':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:126:13: error: 'struct kib_tx' has no member named 'tx_nwrq'
     LASSERT(!tx->tx_nwrq);
                ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:63:23: note: in expansion of macro 'LASSERTF'
    #define LASSERT(cond) LASSERTF(cond, "\n")
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:126:2: note: in expansion of macro 'LASSERT'
     LASSERT(!tx->tx_nwrq);
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:134:13: error: 'struct kib_tx' has no member named 'tx_nfrags'
     LASSERT(!tx->tx_nfrags);
                ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:63:23: note: in expansion of macro 'LASSERTF'
    #define LASSERT(cond) LASSERTF(cond, "\n")
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:134:2: note: in expansion of macro 'LASSERT'
     LASSERT(!tx->tx_nfrags);
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_post_rx':
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:168:4: error: 'struct kib_rx' has no member named 'rx_sge'
     rx->rx_sge.lkey   = conn->ibc_hdev->ibh_pd->local_dma_lkey;
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:169:4: error: 'struct kib_rx' has no member named 'rx_sge'
     rx->rx_sge.addr   = rx->rx_msgaddr;
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:170:4: error: 'struct kib_rx' has no member named 'rx_sge'
     rx->rx_sge.length = IBLND_MSG_SIZE;
       ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:172:4: error: 'struct kib_rx' has no member named 'rx_wrq'
     rx->rx_wrq.next    = NULL;
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:173:4: error: 'struct kib_rx' has no member named 'rx_wrq'
     rx->rx_wrq.sg_list = &rx->rx_sge;
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:173:26: error: 'struct kib_rx' has no member named 'rx_sge'
     rx->rx_wrq.sg_list = &rx->rx_sge;
                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:174:4: error: 'struct kib_rx' has no member named 'rx_wrq'
     rx->rx_wrq.num_sge = 1;
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:175:4: error: 'struct kib_rx' has no member named 'rx_wrq'
     rx->rx_wrq.wr_id   = kiblnd_ptr2wreqid(rx, IBLND_WID_RX);
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:191:43: error: 'struct kib_rx' has no member named 'rx_wrq'
     rc = ib_post_recv(conn->ibc_cmid->qp, &rx->rx_wrq, &bad_wrq);
                                              ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_handle_rx':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:420:5: error: 'struct kib_tx' has no member named 'tx_nwrq'
      tx->tx_nwrq = 0;  /* overwrite PUT_REQ */
        ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_fmr_map_tx':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:575:51: error: 'struct kib_tx' has no member named 'fmr'
     rc = kiblnd_fmr_pool_map(fps, tx, rd, nob, 0, &tx->fmr);
                                                      ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:585:17: error: 'struct kib_tx' has no member named 'fmr'
     rd->rd_key = tx->fmr.fmr_key;
                    ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_unmap_tx':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:600:28: error: 'struct kib_tx' has no member named 'fmr'
      kiblnd_fmr_pool_unmap(&tx->fmr, tx->tx_status);
                               ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:602:8: error: 'struct kib_tx' has no member named 'tx_nfrags'
     if (tx->tx_nfrags) {
           ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:604:11: error: 'struct kib_tx' has no member named 'tx_frags'
            tx->tx_frags, tx->tx_nfrags, tx->tx_dmadir);
              ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:604:25: error: 'struct kib_tx' has no member named 'tx_nfrags'
            tx->tx_frags, tx->tx_nfrags, tx->tx_dmadir);
                            ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:604:40: error: 'struct kib_tx' has no member named 'tx_dmadir'
            tx->tx_frags, tx->tx_nfrags, tx->tx_dmadir);
                                           ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:605:5: error: 'struct kib_tx' has no member named 'tx_nfrags'
      tx->tx_nfrags = 0;
        ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_map_tx':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:621:4: error: 'struct kib_tx' has no member named 'tx_dmadir'
     tx->tx_dmadir = (rd != tx->tx_rd) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
       ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:621:27: error: 'struct kib_tx' has no member named 'tx_rd'
     tx->tx_dmadir = (rd != tx->tx_rd) ? DMA_FROM_DEVICE : DMA_TO_DEVICE;
                              ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:622:4: error: 'struct kib_tx' has no member named 'tx_nfrags'
     tx->tx_nfrags = nfrags;
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:624:55: error: 'struct kib_tx' has no member named 'tx_frags'
     rd->rd_nfrags = kiblnd_dma_map_sg(hdev->ibh_ibdev, tx->tx_frags,
                                                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:625:10: error: 'struct kib_tx' has no member named 'tx_nfrags'
           tx->tx_nfrags, tx->tx_dmadir);
             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:625:25: error: 'struct kib_tx' has no member named 'tx_dmadir'
           tx->tx_nfrags, tx->tx_dmadir);
                            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:629:24: error: 'struct kib_tx' has no member named 'tx_frags'
       hdev->ibh_ibdev, &tx->tx_frags[i]);
                           ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:631:24: error: 'struct kib_tx' has no member named 'tx_frags'
       hdev->ibh_ibdev, &tx->tx_frags[i]);
                           ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_setup_rd_iov':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:664:9: error: 'struct kib_tx' has no member named 'tx_frags'
     sg = tx->tx_frags;
            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:696:42: error: 'struct kib_tx' has no member named 'tx_frags'
     return kiblnd_map_tx(ni, tx, rd, sg - tx->tx_frags);
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_setup_rd_kiov':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:721:9: error: 'struct kib_tx' has no member named 'tx_frags'
     sg = tx->tx_frags;
            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:741:42: error: 'struct kib_tx' has no member named 'tx_frags'
     return kiblnd_map_tx(ni, tx, rd, sg - tx->tx_frags);
                                             ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:37,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_post_tx_locked':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:757:12: error: 'struct kib_tx' has no member named 'tx_nwrq'
     LASSERT(tx->tx_nwrq > 0);
               ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:63:23: note: in expansion of macro 'LASSERTF'
    #define LASSERT(cond) LASSERTF(cond, "\n")
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:757:2: note: in expansion of macro 'LASSERT'
     LASSERT(tx->tx_nwrq > 0);
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:836:43: error: 'struct kib_tx' has no member named 'fmr'
      struct kib_fast_reg_descriptor *frd = tx->fmr.fmr_frd;
                                              ^
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:837:31: error: 'struct kib_tx' has no member named 'tx_wrq'
      struct ib_send_wr *bad = &tx->tx_wrq[tx->tx_nwrq - 1].wr;
                                  ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:837:42: error: 'struct kib_tx' has no member named 'tx_nwrq'
      struct ib_send_wr *bad = &tx->tx_wrq[tx->tx_nwrq - 1].wr;
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:838:31: error: 'struct kib_tx' has no member named 'tx_wrq'
      struct ib_send_wr *wrq = &tx->tx_wrq[0].wr;
                                  ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:847:37: error: 'struct kib_tx' has no member named 'tx_wrq'
       frd->frd_fastreg_wr.wr.next = &tx->tx_wrq[0].wr;
                                        ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_init_tx_msg':
>> drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1020:26: error: 'struct kib_tx' has no member named 'tx_sge'
     struct ib_sge *sge = &tx->tx_sge[tx->tx_nwrq];
                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1020:37: error: 'struct kib_tx' has no member named 'tx_nwrq'
     struct ib_sge *sge = &tx->tx_sge[tx->tx_nwrq];
                                        ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1021:30: error: 'struct kib_tx' has no member named 'tx_wrq'
     struct ib_rdma_wr *wrq = &tx->tx_wrq[tx->tx_nwrq];
                                 ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1021:41: error: 'struct kib_tx' has no member named 'tx_nwrq'
     struct ib_rdma_wr *wrq = &tx->tx_wrq[tx->tx_nwrq];
                                            ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:37,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1024:12: error: 'struct kib_tx' has no member named 'tx_nwrq'
     LASSERT(tx->tx_nwrq >= 0);
               ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:63:23: note: in expansion of macro 'LASSERTF'
    #define LASSERT(cond) LASSERTF(cond, "\n")
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1024:2: note: in expansion of macro 'LASSERT'
     LASSERT(tx->tx_nwrq >= 0);
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1025:12: error: 'struct kib_tx' has no member named 'tx_nwrq'
     LASSERT(tx->tx_nwrq < IBLND_MAX_RDMA_FRAGS + 1);
               ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:63:23: note: in expansion of macro 'LASSERTF'
    #define LASSERT(cond) LASSERTF(cond, "\n")
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1025:2: note: in expansion of macro 'LASSERT'
     LASSERT(tx->tx_nwrq < IBLND_MAX_RDMA_FRAGS + 1);
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1043:4: error: 'struct kib_tx' has no member named 'tx_nwrq'
     tx->tx_nwrq++;
       ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c: In function 'kiblnd_init_rdma':
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1051:34: error: 'struct kib_tx' has no member named 'tx_rd'
     struct kib_rdma_desc *srcrd = tx->tx_rd;
                                     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1052:26: error: 'struct kib_tx' has no member named 'tx_sge'
     struct ib_sge *sge = &tx->tx_sge[0];
                             ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.h:37,
                    from drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:37:
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1060:13: error: 'struct kib_tx' has no member named 'tx_nwrq'
     LASSERT(!tx->tx_nwrq);
                ^
   include/linux/compiler.h:175:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/../../../include/linux/libcfs/libcfs_private.h:63:23: note: in expansion of macro 'LASSERTF'
    #define LASSERT(cond) LASSERTF(cond, "\n")
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1060:2: note: in expansion of macro 'LASSERT'
     LASSERT(!tx->tx_nwrq);
     ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1086:9: error: 'struct kib_tx' has no member named 'tx_nwrq'
      if (tx->tx_nwrq >= IBLND_MAX_RDMA_FRAGS) {
            ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1100:12: error: 'struct kib_tx' has no member named 'tx_sge'
      sge = &tx->tx_sge[tx->tx_nwrq];
               ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1100:23: error: 'struct kib_tx' has no member named 'tx_nwrq'
      sge = &tx->tx_sge[tx->tx_nwrq];
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1105:12: error: 'struct kib_tx' has no member named 'tx_wrq'
      wrq = &tx->tx_wrq[tx->tx_nwrq];
               ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1105:23: error: 'struct kib_tx' has no member named 'tx_nwrq'
      wrq = &tx->tx_wrq[tx->tx_nwrq];
                          ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1123:5: error: 'struct kib_tx' has no member named 'tx_nwrq'
      tx->tx_nwrq++;
        ^
   drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c:1129:5: error: 'struct kib_tx' has no member named 'tx_nwrq'
      tx->tx_nwrq = 0;
        ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,

vim +1540 drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd.c

d7e09d039 Peng Tao           2013-05-02  1536  
80e05b34f Dmitry Eremin      2016-05-05  1537  static int
8d9de3f48 James Simmons      2016-06-10  1538  kiblnd_map_tx_pages(struct kib_tx *tx, struct kib_rdma_desc *rd)
80e05b34f Dmitry Eremin      2016-05-05  1539  {
80e05b34f Dmitry Eremin      2016-05-05 @1540  	__u64 *pages = tx->tx_pages;
8d9de3f48 James Simmons      2016-06-10  1541  	struct kib_hca_dev *hdev;
80e05b34f Dmitry Eremin      2016-05-05  1542  	int npages;
80e05b34f Dmitry Eremin      2016-05-05  1543  	int size;
80e05b34f Dmitry Eremin      2016-05-05  1544  	int i;
80e05b34f Dmitry Eremin      2016-05-05  1545  
80e05b34f Dmitry Eremin      2016-05-05  1546  	hdev = tx->tx_pool->tpo_hdev;
80e05b34f Dmitry Eremin      2016-05-05  1547  
80e05b34f Dmitry Eremin      2016-05-05  1548  	for (i = 0, npages = 0; i < rd->rd_nfrags; i++) {
80e05b34f Dmitry Eremin      2016-05-05  1549  		for (size = 0; size <  rd->rd_frags[i].rf_nob;
80e05b34f Dmitry Eremin      2016-05-05  1550  		     size += hdev->ibh_page_size) {
80e05b34f Dmitry Eremin      2016-05-05  1551  			pages[npages++] = (rd->rd_frags[i].rf_addr &
80e05b34f Dmitry Eremin      2016-05-05  1552  					   hdev->ibh_page_mask) + size;
80e05b34f Dmitry Eremin      2016-05-05  1553  		}
80e05b34f Dmitry Eremin      2016-05-05  1554  	}
80e05b34f Dmitry Eremin      2016-05-05  1555  
80e05b34f Dmitry Eremin      2016-05-05  1556  	return npages;
80e05b34f Dmitry Eremin      2016-05-05  1557  }
80e05b34f Dmitry Eremin      2016-05-05  1558  
8d9de3f48 James Simmons      2016-06-10  1559  void kiblnd_fmr_pool_unmap(struct kib_fmr *fmr, int status)
d7e09d039 Peng Tao           2013-05-02  1560  {
d7e09d039 Peng Tao           2013-05-02  1561  	LIST_HEAD(zombies);
8d9de3f48 James Simmons      2016-06-10  1562  	struct kib_fmr_pool *fpo = fmr->fmr_pool;
8d9de3f48 James Simmons      2016-06-10  1563  	struct kib_fmr_poolset *fps;
a649ad1d7 Greg Kroah-Hartman 2014-07-12  1564  	unsigned long now = cfs_time_current();
8d9de3f48 James Simmons      2016-06-10  1565  	struct kib_fmr_pool *tmp;
d7e09d039 Peng Tao           2013-05-02  1566  	int rc;
d7e09d039 Peng Tao           2013-05-02  1567  
1f199a0c4 Dmitry Eremin      2016-05-05  1568  	if (!fpo)
1f199a0c4 Dmitry Eremin      2016-05-05  1569  		return;
1f199a0c4 Dmitry Eremin      2016-05-05  1570  
1f199a0c4 Dmitry Eremin      2016-05-05  1571  	fps = fpo->fpo_owner;
80e05b34f Dmitry Eremin      2016-05-05  1572  	if (fpo->fpo_is_fmr) {
1f199a0c4 Dmitry Eremin      2016-05-05  1573  		if (fmr->fmr_pfmr) {
d7e09d039 Peng Tao           2013-05-02  1574  			rc = ib_fmr_pool_unmap(fmr->fmr_pfmr);
5fd88337d James Simmons      2016-02-12  1575  			LASSERT(!rc);
1f199a0c4 Dmitry Eremin      2016-05-05  1576  			fmr->fmr_pfmr = NULL;
1f199a0c4 Dmitry Eremin      2016-05-05  1577  		}
d7e09d039 Peng Tao           2013-05-02  1578  
5fd88337d James Simmons      2016-02-12  1579  		if (status) {
87f4f6f53 Dmitry Eremin      2016-05-05  1580  			rc = ib_flush_fmr_pool(fpo->fmr.fpo_fmr_pool);
5fd88337d James Simmons      2016-02-12  1581  			LASSERT(!rc);
d7e09d039 Peng Tao           2013-05-02  1582  		}
80e05b34f Dmitry Eremin      2016-05-05  1583  	} else {
80e05b34f Dmitry Eremin      2016-05-05  1584  		struct kib_fast_reg_descriptor *frd = fmr->fmr_frd;
d7e09d039 Peng Tao           2013-05-02  1585  
80e05b34f Dmitry Eremin      2016-05-05  1586  		if (frd) {
80e05b34f Dmitry Eremin      2016-05-05  1587  			frd->frd_valid = false;
80e05b34f Dmitry Eremin      2016-05-05  1588  			spin_lock(&fps->fps_lock);
80e05b34f Dmitry Eremin      2016-05-05  1589  			list_add_tail(&frd->frd_list, &fpo->fast_reg.fpo_pool_list);
80e05b34f Dmitry Eremin      2016-05-05  1590  			spin_unlock(&fps->fps_lock);
80e05b34f Dmitry Eremin      2016-05-05  1591  			fmr->fmr_frd = NULL;
80e05b34f Dmitry Eremin      2016-05-05  1592  		}
80e05b34f Dmitry Eremin      2016-05-05  1593  	}
d7e09d039 Peng Tao           2013-05-02  1594  	fmr->fmr_pool = NULL;
d7e09d039 Peng Tao           2013-05-02  1595  
d7e09d039 Peng Tao           2013-05-02  1596  	spin_lock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1597  	fpo->fpo_map_count--;  /* decref the pool */
d7e09d039 Peng Tao           2013-05-02  1598  
d7e09d039 Peng Tao           2013-05-02  1599  	list_for_each_entry_safe(fpo, tmp, &fps->fps_pool_list, fpo_list) {
d7e09d039 Peng Tao           2013-05-02  1600  		/* the first pool is persistent */
d7e09d039 Peng Tao           2013-05-02  1601  		if (fps->fps_pool_list.next == &fpo->fpo_list)
d7e09d039 Peng Tao           2013-05-02  1602  			continue;
d7e09d039 Peng Tao           2013-05-02  1603  
d7e09d039 Peng Tao           2013-05-02  1604  		if (kiblnd_fmr_pool_is_idle(fpo, now)) {
d7e09d039 Peng Tao           2013-05-02  1605  			list_move(&fpo->fpo_list, &zombies);
d7e09d039 Peng Tao           2013-05-02  1606  			fps->fps_version++;
d7e09d039 Peng Tao           2013-05-02  1607  		}
d7e09d039 Peng Tao           2013-05-02  1608  	}
d7e09d039 Peng Tao           2013-05-02  1609  	spin_unlock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1610  
d7e09d039 Peng Tao           2013-05-02  1611  	if (!list_empty(&zombies))
d7e09d039 Peng Tao           2013-05-02  1612  		kiblnd_destroy_fmr_pool_list(&zombies);
d7e09d039 Peng Tao           2013-05-02  1613  }
d7e09d039 Peng Tao           2013-05-02  1614  
8d9de3f48 James Simmons      2016-06-10  1615  int kiblnd_fmr_pool_map(struct kib_fmr_poolset *fps, struct kib_tx *tx,
8d9de3f48 James Simmons      2016-06-10  1616  			struct kib_rdma_desc *rd, __u32 nob, __u64 iov,
8d9de3f48 James Simmons      2016-06-10  1617  			struct kib_fmr *fmr)
d7e09d039 Peng Tao           2013-05-02  1618  {
80e05b34f Dmitry Eremin      2016-05-05 @1619  	__u64 *pages = tx->tx_pages;
80e05b34f Dmitry Eremin      2016-05-05 @1620  	bool is_rx = (rd != tx->tx_rd);
0efe6171d Nicholas Hanley    2016-11-07  1621  	bool tx_pages_mapped = false;
8d9de3f48 James Simmons      2016-06-10  1622  	struct kib_fmr_pool *fpo;
80e05b34f Dmitry Eremin      2016-05-05  1623  	int npages = 0;
d7e09d039 Peng Tao           2013-05-02  1624  	__u64 version;
d7e09d039 Peng Tao           2013-05-02  1625  	int rc;
d7e09d039 Peng Tao           2013-05-02  1626  
d7e09d039 Peng Tao           2013-05-02  1627   again:
d7e09d039 Peng Tao           2013-05-02  1628  	spin_lock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1629  	version = fps->fps_version;
d7e09d039 Peng Tao           2013-05-02  1630  	list_for_each_entry(fpo, &fps->fps_pool_list, fpo_list) {
d7e09d039 Peng Tao           2013-05-02  1631  		fpo->fpo_deadline = cfs_time_shift(IBLND_POOL_DEADLINE);
d7e09d039 Peng Tao           2013-05-02  1632  		fpo->fpo_map_count++;
80e05b34f Dmitry Eremin      2016-05-05  1633  
80e05b34f Dmitry Eremin      2016-05-05  1634  		if (fpo->fpo_is_fmr) {
80e05b34f Dmitry Eremin      2016-05-05  1635  			struct ib_pool_fmr *pfmr;
80e05b34f Dmitry Eremin      2016-05-05  1636  
d7e09d039 Peng Tao           2013-05-02  1637  			spin_unlock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1638  
80e05b34f Dmitry Eremin      2016-05-05  1639  			if (!tx_pages_mapped) {
80e05b34f Dmitry Eremin      2016-05-05  1640  				npages = kiblnd_map_tx_pages(tx, rd);
80e05b34f Dmitry Eremin      2016-05-05  1641  				tx_pages_mapped = 1;
80e05b34f Dmitry Eremin      2016-05-05  1642  			}
80e05b34f Dmitry Eremin      2016-05-05  1643  
87f4f6f53 Dmitry Eremin      2016-05-05  1644  			pfmr = ib_fmr_pool_map_phys(fpo->fmr.fpo_fmr_pool,
d7e09d039 Peng Tao           2013-05-02  1645  						    pages, npages, iov);
d7e09d039 Peng Tao           2013-05-02  1646  			if (likely(!IS_ERR(pfmr))) {
c1b2e0b51 Dmitry Eremin      2016-05-05  1647  				fmr->fmr_key = is_rx ? pfmr->fmr->rkey :
c1b2e0b51 Dmitry Eremin      2016-05-05  1648  						       pfmr->fmr->lkey;
80e05b34f Dmitry Eremin      2016-05-05  1649  				fmr->fmr_frd = NULL;
d7e09d039 Peng Tao           2013-05-02  1650  				fmr->fmr_pfmr = pfmr;
c1b2e0b51 Dmitry Eremin      2016-05-05  1651  				fmr->fmr_pool = fpo;
d7e09d039 Peng Tao           2013-05-02  1652  				return 0;
d7e09d039 Peng Tao           2013-05-02  1653  			}
c1b2e0b51 Dmitry Eremin      2016-05-05  1654  			rc = PTR_ERR(pfmr);
80e05b34f Dmitry Eremin      2016-05-05  1655  		} else {
80e05b34f Dmitry Eremin      2016-05-05  1656  			if (!list_empty(&fpo->fast_reg.fpo_pool_list)) {
80e05b34f Dmitry Eremin      2016-05-05  1657  				struct kib_fast_reg_descriptor *frd;
80e05b34f Dmitry Eremin      2016-05-05  1658  				struct ib_reg_wr *wr;
80e05b34f Dmitry Eremin      2016-05-05  1659  				struct ib_mr *mr;
80e05b34f Dmitry Eremin      2016-05-05  1660  				int n;
80e05b34f Dmitry Eremin      2016-05-05  1661  
80e05b34f Dmitry Eremin      2016-05-05  1662  				frd = list_first_entry(&fpo->fast_reg.fpo_pool_list,
80e05b34f Dmitry Eremin      2016-05-05  1663  						       struct kib_fast_reg_descriptor,
80e05b34f Dmitry Eremin      2016-05-05  1664  						       frd_list);
80e05b34f Dmitry Eremin      2016-05-05  1665  				list_del(&frd->frd_list);
80e05b34f Dmitry Eremin      2016-05-05  1666  				spin_unlock(&fps->fps_lock);
80e05b34f Dmitry Eremin      2016-05-05  1667  
80e05b34f Dmitry Eremin      2016-05-05  1668  				mr = frd->frd_mr;
80e05b34f Dmitry Eremin      2016-05-05  1669  
80e05b34f Dmitry Eremin      2016-05-05  1670  				if (!frd->frd_valid) {
80e05b34f Dmitry Eremin      2016-05-05  1671  					__u32 key = is_rx ? mr->rkey : mr->lkey;
80e05b34f Dmitry Eremin      2016-05-05  1672  					struct ib_send_wr *inv_wr;
80e05b34f Dmitry Eremin      2016-05-05  1673  
80e05b34f Dmitry Eremin      2016-05-05  1674  					inv_wr = &frd->frd_inv_wr;
80e05b34f Dmitry Eremin      2016-05-05  1675  					memset(inv_wr, 0, sizeof(*inv_wr));
80e05b34f Dmitry Eremin      2016-05-05  1676  					inv_wr->opcode = IB_WR_LOCAL_INV;
80e05b34f Dmitry Eremin      2016-05-05  1677  					inv_wr->wr_id = IBLND_WID_MR;
80e05b34f Dmitry Eremin      2016-05-05  1678  					inv_wr->ex.invalidate_rkey = key;
80e05b34f Dmitry Eremin      2016-05-05  1679  
80e05b34f Dmitry Eremin      2016-05-05  1680  					/* Bump the key */
80e05b34f Dmitry Eremin      2016-05-05  1681  					key = ib_inc_rkey(key);
80e05b34f Dmitry Eremin      2016-05-05  1682  					ib_update_fast_reg_key(mr, key);
80e05b34f Dmitry Eremin      2016-05-05  1683  				}
80e05b34f Dmitry Eremin      2016-05-05  1684  
80e05b34f Dmitry Eremin      2016-05-05 @1685  				n = ib_map_mr_sg(mr, tx->tx_frags,
2f37dd131 Linus Torvalds     2016-05-20  1686  						 tx->tx_nfrags, NULL, PAGE_SIZE);
80e05b34f Dmitry Eremin      2016-05-05  1687  				if (unlikely(n != tx->tx_nfrags)) {
80e05b34f Dmitry Eremin      2016-05-05  1688  					CERROR("Failed to map mr %d/%d elements\n",
80e05b34f Dmitry Eremin      2016-05-05  1689  					       n, tx->tx_nfrags);
80e05b34f Dmitry Eremin      2016-05-05  1690  					return n < 0 ? n : -EINVAL;
80e05b34f Dmitry Eremin      2016-05-05  1691  				}
80e05b34f Dmitry Eremin      2016-05-05  1692  
80e05b34f Dmitry Eremin      2016-05-05  1693  				mr->iova = iov;
80e05b34f Dmitry Eremin      2016-05-05  1694  
80e05b34f Dmitry Eremin      2016-05-05  1695  				/* Prepare FastReg WR */
80e05b34f Dmitry Eremin      2016-05-05  1696  				wr = &frd->frd_fastreg_wr;
80e05b34f Dmitry Eremin      2016-05-05  1697  				memset(wr, 0, sizeof(*wr));
80e05b34f Dmitry Eremin      2016-05-05  1698  				wr->wr.opcode = IB_WR_REG_MR;
80e05b34f Dmitry Eremin      2016-05-05  1699  				wr->wr.wr_id = IBLND_WID_MR;
80e05b34f Dmitry Eremin      2016-05-05  1700  				wr->wr.num_sge = 0;
80e05b34f Dmitry Eremin      2016-05-05  1701  				wr->wr.send_flags = 0;
80e05b34f Dmitry Eremin      2016-05-05  1702  				wr->mr = mr;
80e05b34f Dmitry Eremin      2016-05-05  1703  				wr->key = is_rx ? mr->rkey : mr->lkey;
80e05b34f Dmitry Eremin      2016-05-05  1704  				wr->access = (IB_ACCESS_LOCAL_WRITE |
80e05b34f Dmitry Eremin      2016-05-05  1705  					      IB_ACCESS_REMOTE_WRITE);
80e05b34f Dmitry Eremin      2016-05-05  1706  
80e05b34f Dmitry Eremin      2016-05-05  1707  				fmr->fmr_key = is_rx ? mr->rkey : mr->lkey;
80e05b34f Dmitry Eremin      2016-05-05  1708  				fmr->fmr_frd = frd;
80e05b34f Dmitry Eremin      2016-05-05  1709  				fmr->fmr_pfmr = NULL;
80e05b34f Dmitry Eremin      2016-05-05  1710  				fmr->fmr_pool = fpo;
80e05b34f Dmitry Eremin      2016-05-05  1711  				return 0;
80e05b34f Dmitry Eremin      2016-05-05  1712  			}
80e05b34f Dmitry Eremin      2016-05-05  1713  			spin_unlock(&fps->fps_lock);
80e05b34f Dmitry Eremin      2016-05-05  1714  			rc = -EBUSY;
80e05b34f Dmitry Eremin      2016-05-05  1715  		}
d7e09d039 Peng Tao           2013-05-02  1716  
d7e09d039 Peng Tao           2013-05-02  1717  		spin_lock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1718  		fpo->fpo_map_count--;
c1b2e0b51 Dmitry Eremin      2016-05-05  1719  		if (rc != -EAGAIN) {
d7e09d039 Peng Tao           2013-05-02  1720  			spin_unlock(&fps->fps_lock);
c1b2e0b51 Dmitry Eremin      2016-05-05  1721  			return rc;
d7e09d039 Peng Tao           2013-05-02  1722  		}
d7e09d039 Peng Tao           2013-05-02  1723  
d7e09d039 Peng Tao           2013-05-02  1724  		/* EAGAIN and ... */
d7e09d039 Peng Tao           2013-05-02  1725  		if (version != fps->fps_version) {
d7e09d039 Peng Tao           2013-05-02  1726  			spin_unlock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1727  			goto again;
d7e09d039 Peng Tao           2013-05-02  1728  		}
d7e09d039 Peng Tao           2013-05-02  1729  	}
d7e09d039 Peng Tao           2013-05-02  1730  
d7e09d039 Peng Tao           2013-05-02  1731  	if (fps->fps_increasing) {
d7e09d039 Peng Tao           2013-05-02  1732  		spin_unlock(&fps->fps_lock);
c314c319c James Simmons      2016-02-12  1733  		CDEBUG(D_NET, "Another thread is allocating new FMR pool, waiting for her to complete\n");
d7e09d039 Peng Tao           2013-05-02  1734  		schedule();
d7e09d039 Peng Tao           2013-05-02  1735  		goto again;
d7e09d039 Peng Tao           2013-05-02  1736  	}
d7e09d039 Peng Tao           2013-05-02  1737  
699503bca Greg Kroah-Hartman 2014-07-12  1738  	if (time_before(cfs_time_current(), fps->fps_next_retry)) {
d7e09d039 Peng Tao           2013-05-02  1739  		/* someone failed recently */
d7e09d039 Peng Tao           2013-05-02  1740  		spin_unlock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1741  		return -EAGAIN;
d7e09d039 Peng Tao           2013-05-02  1742  	}
d7e09d039 Peng Tao           2013-05-02  1743  
d7e09d039 Peng Tao           2013-05-02  1744  	fps->fps_increasing = 1;
d7e09d039 Peng Tao           2013-05-02  1745  	spin_unlock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1746  
d7e09d039 Peng Tao           2013-05-02  1747  	CDEBUG(D_NET, "Allocate new FMR pool\n");
d7e09d039 Peng Tao           2013-05-02  1748  	rc = kiblnd_create_fmr_pool(fps, &fpo);
d7e09d039 Peng Tao           2013-05-02  1749  	spin_lock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1750  	fps->fps_increasing = 0;
5fd88337d James Simmons      2016-02-12  1751  	if (!rc) {
d7e09d039 Peng Tao           2013-05-02  1752  		fps->fps_version++;
d7e09d039 Peng Tao           2013-05-02  1753  		list_add_tail(&fpo->fpo_list, &fps->fps_pool_list);
d7e09d039 Peng Tao           2013-05-02  1754  	} else {
d7e09d039 Peng Tao           2013-05-02  1755  		fps->fps_next_retry = cfs_time_shift(IBLND_POOL_RETRY);
d7e09d039 Peng Tao           2013-05-02  1756  	}
d7e09d039 Peng Tao           2013-05-02  1757  	spin_unlock(&fps->fps_lock);
d7e09d039 Peng Tao           2013-05-02  1758  
d7e09d039 Peng Tao           2013-05-02  1759  	goto again;
d7e09d039 Peng Tao           2013-05-02  1760  }
d7e09d039 Peng Tao           2013-05-02  1761  

:::::: The code at line 1540 was first introduced by commit
:::::: 80e05b34f882dd03e3b7eaa1923e49deae6e409e staging: lustre: o2iblnd: Add Fast Reg memory registration support

:::::: TO: Dmitry Eremin <dmitry.eremin@intel.com>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
index 234fe01904e7..568088a9298c 100644
--- a/drivers/infiniband/Kconfig
+++ b/drivers/infiniband/Kconfig
@@ -1,6 +1,5 @@ 
 menuconfig INFINIBAND
 	tristate "InfiniBand support"
-	depends on PCI || BROKEN
 	depends on HAS_IOMEM
 	depends on NET
 	depends on INET
diff --git a/drivers/infiniband/hw/cxgb3/Kconfig b/drivers/infiniband/hw/cxgb3/Kconfig
index 2b6352b85485..bd32926afa77 100644
--- a/drivers/infiniband/hw/cxgb3/Kconfig
+++ b/drivers/infiniband/hw/cxgb3/Kconfig
@@ -1,5 +1,6 @@ 
 config INFINIBAND_CXGB3
 	tristate "Chelsio RDMA Driver"
+	depends on PCI || BROKEN
 	depends on CHELSIO_T3 && INET
 	select GENERIC_ALLOCATOR
 	---help---
diff --git a/drivers/infiniband/hw/cxgb4/Kconfig b/drivers/infiniband/hw/cxgb4/Kconfig
index afe8b28e0878..7910fdd88619 100644
--- a/drivers/infiniband/hw/cxgb4/Kconfig
+++ b/drivers/infiniband/hw/cxgb4/Kconfig
@@ -1,6 +1,7 @@ 
 config INFINIBAND_CXGB4
 	tristate "Chelsio T4/T5 RDMA Driver"
 	depends on CHELSIO_T4 && INET && (IPV6 || IPV6=n)
+	depends on PCI || BROKEN
 	select CHELSIO_LIB
 	select GENERIC_ALLOCATOR
 	---help---
diff --git a/drivers/infiniband/hw/hfi1/Kconfig b/drivers/infiniband/hw/hfi1/Kconfig
index f6ea0881765a..5072d083f53b 100644
--- a/drivers/infiniband/hw/hfi1/Kconfig
+++ b/drivers/infiniband/hw/hfi1/Kconfig
@@ -1,6 +1,7 @@ 
 config INFINIBAND_HFI1
 	tristate "Intel OPA Gen1 support"
 	depends on X86_64 && INFINIBAND_RDMAVT && I2C
+	depends on PCI || BROKEN
 	select MMU_NOTIFIER
 	select CRC32
 	select I2C_ALGOBIT
diff --git a/drivers/infiniband/hw/i40iw/Kconfig b/drivers/infiniband/hw/i40iw/Kconfig
index 6e7d27a14061..9cfef1370445 100644
--- a/drivers/infiniband/hw/i40iw/Kconfig
+++ b/drivers/infiniband/hw/i40iw/Kconfig
@@ -1,6 +1,7 @@ 
 config INFINIBAND_I40IW
 	tristate "Intel(R) Ethernet X722 iWARP Driver"
 	depends on INET && I40E
+	depends on PCI || BROKEN
 	select GENERIC_ALLOCATOR
 	---help---
 	Intel(R) Ethernet X722 iWARP Driver
diff --git a/drivers/infiniband/hw/qedr/Kconfig b/drivers/infiniband/hw/qedr/Kconfig
index 6c9f3923e838..8db2966f52c2 100644
--- a/drivers/infiniband/hw/qedr/Kconfig
+++ b/drivers/infiniband/hw/qedr/Kconfig
@@ -1,6 +1,7 @@ 
 config INFINIBAND_QEDR
 	tristate "QLogic RoCE driver"
 	depends on 64BIT && QEDE
+	depends on PCI || BROKEN
 	select QED_LL2
 	select QED_RDMA
 	---help---
diff --git a/drivers/infiniband/hw/qib/Kconfig b/drivers/infiniband/hw/qib/Kconfig
index e0fdb9201423..522a6fcaa9d8 100644
--- a/drivers/infiniband/hw/qib/Kconfig
+++ b/drivers/infiniband/hw/qib/Kconfig
@@ -1,6 +1,7 @@ 
 config INFINIBAND_QIB
 	tristate "Intel PCIe HCA support"
 	depends on 64BIT && INFINIBAND_RDMAVT
+	depends on PCI || BROKEN
 	---help---
 	This is a low-level driver for Intel PCIe QLE InfiniBand host
 	channel adapters.  This driver does not support the Intel
diff --git a/drivers/infiniband/sw/rdmavt/Kconfig b/drivers/infiniband/sw/rdmavt/Kconfig
index fdd001ce13d8..605bfb1da9df 100644
--- a/drivers/infiniband/sw/rdmavt/Kconfig
+++ b/drivers/infiniband/sw/rdmavt/Kconfig
@@ -1,6 +1,7 @@ 
 config INFINIBAND_RDMAVT
 	tristate "RDMA verbs transport library"
 	depends on 64BIT
+	depends on PCI || BROKEN
 	select DMA_VIRT_OPS
 	---help---
 	This is a common software verbs provider for RDMA networks.
diff --git a/drivers/infiniband/ulp/ipoib/Kconfig b/drivers/infiniband/ulp/ipoib/Kconfig
index cda8eac55fff..5aec880c4318 100644
--- a/drivers/infiniband/ulp/ipoib/Kconfig
+++ b/drivers/infiniband/ulp/ipoib/Kconfig
@@ -1,6 +1,7 @@ 
 config INFINIBAND_IPOIB
 	tristate "IP-over-InfiniBand"
 	depends on NETDEVICES && INET && (IPV6 || IPV6=n)
+	depends on PCI || BROKEN
 	---help---
 	  Support for the IP-over-InfiniBand protocol (IPoIB). This
 	  transports IP packets over InfiniBand so you can use your IB