Re: [PATCHv8 2/3] IB/core: added support to use rdma cgroup controller

From: kbuild test robot
Date: Tue Mar 01 2016 - 10:51:40 EST


Hi Parav,

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

url: https://github.com/0day-ci/linux/commits/Parav-Pandit/rdmacg-IB-core-rdma-controller-support/20160301-223149
base: https://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma master
config: x86_64-allmodconfig (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64

All error/warnings (new ones prefixed by >>):

include/linux/compiler.h:228:8: sparse: attribute 'no_sanitize_address': unknown attribute
drivers/infiniband/core/cgroup.c:107:6: sparse: symbol 'ib_rdmacg_query_limit' redeclared with different type (originally declared at drivers/infiniband/core/core_priv.h:140) - different argument counts
>> drivers/infiniband/core/cgroup.c:107:6: error: conflicting types for 'ib_rdmacg_query_limit'
void ib_rdmacg_query_limit(struct ib_device *device, int *limits)
^
In file included from drivers/infiniband/core/cgroup.c:35:0:
drivers/infiniband/core/core_priv.h:140:6: note: previous declaration of 'ib_rdmacg_query_limit' was here
void ib_rdmacg_query_limit(struct ib_device *device,
^
In file included from include/linux/linkage.h:6:0,
from include/linux/kernel.h:6,
from drivers/infiniband/core/cgroup.c:31:
drivers/infiniband/core/cgroup.c:111:15: error: conflicting types for 'ib_rdmacg_query_limit'
EXPORT_SYMBOL(ib_rdmacg_query_limit);
^
include/linux/export.h:57:21: note: in definition of macro '__EXPORT_SYMBOL'
extern typeof(sym) sym; \
^
>> drivers/infiniband/core/cgroup.c:111:1: note: in expansion of macro 'EXPORT_SYMBOL'
EXPORT_SYMBOL(ib_rdmacg_query_limit);
^
In file included from drivers/infiniband/core/cgroup.c:35:0:
drivers/infiniband/core/core_priv.h:140:6: note: previous declaration of 'ib_rdmacg_query_limit' was here
void ib_rdmacg_query_limit(struct ib_device *device,
^

sparse warnings: (new ones prefixed by >>)

include/linux/compiler.h:228:8: sparse: attribute 'no_sanitize_address': unknown attribute
>> drivers/infiniband/core/uverbs_cmd.c:470:30: sparse: not enough arguments for function ib_rdmacg_query_limit
drivers/infiniband/core/uverbs_cmd.c:3721:30: sparse: not enough arguments for function ib_rdmacg_query_limit
drivers/infiniband/core/uverbs_cmd.c: In function 'ib_uverbs_query_device':
drivers/infiniband/core/uverbs_cmd.c:470:2: error: too few arguments to function 'ib_rdmacg_query_limit'
ib_rdmacg_query_limit(ib_dev, limits);
^
In file included from drivers/infiniband/core/uverbs_cmd.c:44:0:
drivers/infiniband/core/core_priv.h:140:6: note: declared here
void ib_rdmacg_query_limit(struct ib_device *device,
^
drivers/infiniband/core/uverbs_cmd.c: In function 'ib_uverbs_ex_query_device':
drivers/infiniband/core/uverbs_cmd.c:3721:2: error: too few arguments to function 'ib_rdmacg_query_limit'
ib_rdmacg_query_limit(ib_dev, limits);
^
In file included from drivers/infiniband/core/uverbs_cmd.c:44:0:
drivers/infiniband/core/core_priv.h:140:6: note: declared here
void ib_rdmacg_query_limit(struct ib_device *device,
^

vim +/ib_rdmacg_query_limit +107 drivers/infiniband/core/cgroup.c

25 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
26 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
27 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28 * SOFTWARE.
29 */
30
> 31 #include <linux/kernel.h>
32 #include <linux/cgroup_rdma.h>
33 #include <linux/parser.h>
34
35 #include "core_priv.h"
36
37 /**
38 * resource table definition as to be seen by the user.
39 * Need to add entries to it when more resources are
40 * added/defined at IB verb/core layer.
41 */
42 static char const *resource_tokens[] = {
43 [RDMA_VERB_RESOURCE_UCTX] = "uctx",
44 [RDMA_VERB_RESOURCE_AH] = "ah",
45 [RDMA_VERB_RESOURCE_PD] = "pd",
46 [RDMA_VERB_RESOURCE_CQ] = "cq",
47 [RDMA_VERB_RESOURCE_MR] = "mr",
48 [RDMA_VERB_RESOURCE_MW] = "mw",
49 [RDMA_VERB_RESOURCE_SRQ] = "srq",
50 [RDMA_VERB_RESOURCE_QP] = "qp",
51 [RDMA_VERB_RESOURCE_FLOW] = "flow",
52 };
53
54 /**
55 * ib_device_register_rdmacg - register with rdma cgroup.
56 * @device: device to register to participate in resource
57 * accounting by rdma cgroup.
58 *
59 * Register with the rdma cgroup. Should be called before
60 * exposing rdma device to user space applications to avoid
61 * resource accounting leak.
62 * HCA drivers should set resource pool ops first if they wish
63 * to support hw specific resource accounting before IB core
64 * registers with rdma cgroup.
65 * Returns 0 on success or otherwise failure code.
66 */
67 int ib_device_register_rdmacg(struct ib_device *device)
68 {
69 device->cg_device.name = device->name;
70 device->cg_device.pool_info.resource_name_table = resource_tokens;
71 device->cg_device.pool_info.table_len = ARRAY_SIZE(resource_tokens);
72 return rdmacg_register_device(&device->cg_device);
73 }
74
75 /**
76 * ib_device_unregister_rdmacg - unregister with rdma cgroup.
77 * @device: device to unregister.
78 *
79 * Unregister with the rdma cgroup. Should be called after
80 * all the resources are deallocated, and after a stage when any
81 * other resource allocation of user application cannot be done
82 * for this device to avoid any leak in accounting.
83 */
84 void ib_device_unregister_rdmacg(struct ib_device *device)
85 {
86 rdmacg_unregister_device(&device->cg_device);
87 }
88
89 int ib_rdmacg_try_charge(struct ib_rdmacg_object *cg_obj,
90 struct ib_device *device,
91 int resource_index, int num)
92 {
93 return rdmacg_try_charge(&cg_obj->cg, &device->cg_device,
94 resource_index, num);
95 }
96 EXPORT_SYMBOL(ib_rdmacg_try_charge);
97
98 void ib_rdmacg_uncharge(struct ib_rdmacg_object *cg_obj,
99 struct ib_device *device,
100 int resource_index, int num)
101 {
102 rdmacg_uncharge(cg_obj->cg, &device->cg_device,
103 resource_index, num);
104 }
105 EXPORT_SYMBOL(ib_rdmacg_uncharge);
106
> 107 void ib_rdmacg_query_limit(struct ib_device *device, int *limits)
108 {
109 rdmacg_query_limit(&device->cg_device, limits);
110 }
> 111 EXPORT_SYMBOL(ib_rdmacg_query_limit);

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

Attachment: .config.gz
Description: Binary data