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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux