Message ID | 20190906151028.1064531-1-arnd@arndb.de (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | rdma/siw: fix NOMMU build | expand |
On Fri, Sep 06, 2019 at 05:10:10PM +0200, Arnd Bergmann wrote: > On kernels without CONFIG_MMU, we get a link error for the siw > driver: > > drivers/infiniband/sw/siw/siw_mem.o: In function `siw_umem_get': > siw_mem.c:(.text+0x4c8): undefined reference to `can_do_mlock' > > I don't know whether this driver is able to work at all without > an MMU, but it's easy to avoid the link problem by adding another > compile-time check. > > Fixes: 2251334dcac9 ("rdma/siw: application buffer management") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > drivers/infiniband/sw/siw/siw_mem.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/infiniband/sw/siw/siw_mem.c b/drivers/infiniband/sw/siw/siw_mem.c > index e99983f07663..b3b614c07fdb 100644 > +++ b/drivers/infiniband/sw/siw/siw_mem.c > @@ -374,7 +374,7 @@ struct siw_umem *siw_umem_get(u64 start, u64 len, bool writable) > unsigned int foll_flags = FOLL_WRITE; > int num_pages, num_chunks, i, rv = 0; > > - if (!can_do_mlock()) > + if (!IS_ENABLED(CONFIG_MMU) || !can_do_mlock()) > return ERR_PTR(-EPERM); I feel like !CONFIG_MMU should provide a dummy inline stub for can_do_mlock instead? Jason
On Sat, Sep 7, 2019 at 9:34 AM Jason Gunthorpe <jgg@mellanox.com> wrote: > > @@ -374,7 +374,7 @@ struct siw_umem *siw_umem_get(u64 start, u64 len, bool writable) > > unsigned int foll_flags = FOLL_WRITE; > > int num_pages, num_chunks, i, rv = 0; > > > > - if (!can_do_mlock()) > > + if (!IS_ENABLED(CONFIG_MMU) || !can_do_mlock()) > > return ERR_PTR(-EPERM); > > I feel like !CONFIG_MMU should provide a dummy inline stub for can_do_mlock > instead? Fair enough. I've added that to my test tree in place of my first patch and will send it after some more build testing. Arnd
diff --git a/drivers/infiniband/sw/siw/siw_mem.c b/drivers/infiniband/sw/siw/siw_mem.c index e99983f07663..b3b614c07fdb 100644 --- a/drivers/infiniband/sw/siw/siw_mem.c +++ b/drivers/infiniband/sw/siw/siw_mem.c @@ -374,7 +374,7 @@ struct siw_umem *siw_umem_get(u64 start, u64 len, bool writable) unsigned int foll_flags = FOLL_WRITE; int num_pages, num_chunks, i, rv = 0; - if (!can_do_mlock()) + if (!IS_ENABLED(CONFIG_MMU) || !can_do_mlock()) return ERR_PTR(-EPERM); if (!len)
On kernels without CONFIG_MMU, we get a link error for the siw driver: drivers/infiniband/sw/siw/siw_mem.o: In function `siw_umem_get': siw_mem.c:(.text+0x4c8): undefined reference to `can_do_mlock' I don't know whether this driver is able to work at all without an MMU, but it's easy to avoid the link problem by adding another compile-time check. Fixes: 2251334dcac9 ("rdma/siw: application buffer management") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/infiniband/sw/siw/siw_mem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)