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

From: Parav Pandit
Date: Tue Mar 01 2016 - 12:17:55 EST


Sorry. My bad. Generated patch in hurry for compiled out code in ifdef.
Sending with fixing compilation.

Parav

On Tue, Mar 1, 2016 at 9:20 PM, kbuild test robot <lkp@xxxxxxxxx> wrote:
> 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