public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* Re: [RFC PATCH v2] vdpa: Do not count the pages that were already pinned in the vhost-vDPA
       [not found] <20220601012019.1102186-1-lulu@redhat.com>
@ 2022-06-01  5:03 ` kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-06-01  5:03 UTC (permalink / raw)
  To: Cindy Lu; +Cc: llvm, kbuild-all

Hi Cindy,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on v5.18]
[cannot apply to mst-vhost/linux-next next-20220601]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Cindy-Lu/vdpa-Do-not-count-the-pages-that-were-already-pinned-in-the-vhost-vDPA/20220601-092308
base:    4b0986a3613c92f4ec1bdc7f60ec66fea135991f
config: x86_64-randconfig-a005 (https://download.01.org/0day-ci/archive/20220601/202206011237.d34xUNB3-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c825abd6b0198fb088d9752f556a70705bc99dfd)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/8f0b25afe9ac570a70eafb5c285747e3bdd2471d
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Cindy-Lu/vdpa-Do-not-count-the-pages-that-were-already-pinned-in-the-vhost-vDPA/20220601-092308
        git checkout 8f0b25afe9ac570a70eafb5c285747e3bdd2471d
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/vhost/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/vhost/vdpa.c:555:5: warning: no previous prototype for function 'vhost_vdpa_add_range_ctx' [-Wmissing-prototypes]
   int vhost_vdpa_add_range_ctx(struct rb_root_cached *root, u64 start, u64 last,
       ^
   drivers/vhost/vdpa.c:555:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int vhost_vdpa_add_range_ctx(struct rb_root_cached *root, u64 start, u64 last,
   ^
   static 
>> drivers/vhost/vdpa.c:727:10: warning: data argument not used by format string [-Wformat-extra-args]
                          "%s %d FAIL start %lld last %lld node->start %lld  node->last %lld i  %d",
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/printk.h:446:60: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   include/linux/printk.h:418:19: note: expanded from macro 'printk_index_wrap'
                   _p_func(_fmt, ##__VA_ARGS__);                           \
                           ~~~~    ^
>> drivers/vhost/vdpa.c:588:5: warning: no previous prototype for function 'vhost_vdpa_range_ref_add' [-Wmissing-prototypes]
   u64 vhost_vdpa_range_ref_add(struct rb_root_cached *root,
       ^
   drivers/vhost/vdpa.c:588:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   u64 vhost_vdpa_range_ref_add(struct rb_root_cached *root,
   ^
   static 
   drivers/vhost/vdpa.c:856:11: warning: data argument not used by format string [-Wformat-extra-args]
                                  "%s %d FAIL  start %lld last %lld node->start %lld  node->last %lld new_ref %d",
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/printk.h:446:60: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   include/linux/printk.h:418:19: note: expanded from macro 'printk_index_wrap'
                   _p_func(_fmt, ##__VA_ARGS__);                           \
                           ~~~~    ^
   drivers/vhost/vdpa.c:872:10: warning: data argument not used by format string [-Wformat-extra-args]
                          "%s %d FAIL start %lld last %lld node->start %lld  node->last %lld range_size  %d",
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/printk.h:446:60: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
   include/linux/printk.h:418:19: note: expanded from macro 'printk_index_wrap'
                   _p_func(_fmt, ##__VA_ARGS__);                           \
                           ~~~~    ^
>> drivers/vhost/vdpa.c:735:5: warning: no previous prototype for function 'vhost_vdpa_range_ref_del' [-Wmissing-prototypes]
   u64 vhost_vdpa_range_ref_del(struct rb_root_cached *root,
       ^
   drivers/vhost/vdpa.c:735:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   u64 vhost_vdpa_range_ref_del(struct rb_root_cached *root,
   ^
   static 
>> drivers/vhost/vdpa.c:879:24: warning: no previous prototype for function 'vhost_vdpa_merge_list' [-Wmissing-prototypes]
   struct vdpa_link_node *vhost_vdpa_merge_list(struct vdpa_link_node *list1,
                          ^
   drivers/vhost/vdpa.c:879:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct vdpa_link_node *vhost_vdpa_merge_list(struct vdpa_link_node *list1,
   ^
   static 
>> drivers/vhost/vdpa.c:903:24: warning: no previous prototype for function 'vhost_vdpa_get_mid' [-Wmissing-prototypes]
   struct vdpa_link_node *vhost_vdpa_get_mid(struct vdpa_link_node *head)
                          ^
   drivers/vhost/vdpa.c:903:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct vdpa_link_node *vhost_vdpa_get_mid(struct vdpa_link_node *head)
   ^
   static 
>> drivers/vhost/vdpa.c:916:24: warning: no previous prototype for function 'vhost_vdpa_sort_list' [-Wmissing-prototypes]
   struct vdpa_link_node *vhost_vdpa_sort_list(struct vdpa_link_node *head)
                          ^
   drivers/vhost/vdpa.c:916:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct vdpa_link_node *vhost_vdpa_sort_list(struct vdpa_link_node *head)
   ^
   static 
>> drivers/vhost/vdpa.c:931:5: warning: no previous prototype for function 'vhost_vdpa_range_ops' [-Wmissing-prototypes]
   u64 vhost_vdpa_range_ops(struct rb_root_cached *root, u64 start, u64 last,
       ^
   drivers/vhost/vdpa.c:931:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   u64 vhost_vdpa_range_ops(struct rb_root_cached *root, u64 start, u64 last,
   ^
   static 
>> drivers/vhost/vdpa.c:949:7: warning: variable 'link_head_tmp' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
                   if (link_node == NULL) {
                       ^~~~~~~~~~~~~~~~~
   drivers/vhost/vdpa.c:978:18: note: uninitialized use occurs here
           pre_link_node = link_head_tmp;
                           ^~~~~~~~~~~~~
   drivers/vhost/vdpa.c:949:3: note: remove the 'if' if its condition is always false
                   if (link_node == NULL) {
                   ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/vhost/vdpa.c:941:38: note: initialize the variable 'link_head_tmp' to silence this warning
           struct vdpa_link_node *link_head_tmp;
                                               ^
                                                = NULL
>> drivers/vhost/vdpa.c:989:5: warning: no previous prototype for function 'vhost_vdpa_search_range_add' [-Wmissing-prototypes]
   u64 vhost_vdpa_search_range_add(struct rb_root_cached *root, u64 start,
       ^
   drivers/vhost/vdpa.c:989:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   u64 vhost_vdpa_search_range_add(struct rb_root_cached *root, u64 start,
   ^
   static 
>> drivers/vhost/vdpa.c:999:5: warning: no previous prototype for function 'vhost_vdpa_search_range_del' [-Wmissing-prototypes]
   u64 vhost_vdpa_search_range_del(struct rb_root_cached *root, u64 start,
       ^
   drivers/vhost/vdpa.c:999:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   u64 vhost_vdpa_search_range_del(struct rb_root_cached *root, u64 start,
   ^
   static 
>> drivers/vhost/vdpa.c:1465:28: warning: no previous prototype for function 'vhost_vdpa_get_mem_tree' [-Wmissing-prototypes]
   struct root_for_vdpa_node *vhost_vdpa_get_mem_tree(struct task_struct *task)
                              ^
   drivers/vhost/vdpa.c:1465:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   struct root_for_vdpa_node *vhost_vdpa_get_mem_tree(struct task_struct *task)
   ^
   static 
>> drivers/vhost/vdpa.c:1493:6: warning: no previous prototype for function 'vhost_vdpa_relase_mem_tree' [-Wmissing-prototypes]
   void vhost_vdpa_relase_mem_tree(struct task_struct *task)
        ^
   drivers/vhost/vdpa.c:1493:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void vhost_vdpa_relase_mem_tree(struct task_struct *task)
   ^
   static 
>> drivers/vhost/vdpa.c:1555:29: warning: mixing declarations and code is incompatible with standards before C99 [-Wdeclaration-after-statement]
           struct root_for_vdpa_node *tmp = vhost_vdpa_get_mem_tree(current);
                                      ^
   16 warnings generated.


vim +/vhost_vdpa_add_range_ctx +555 drivers/vhost/vdpa.c

   554	
 > 555	int vhost_vdpa_add_range_ctx(struct rb_root_cached *root, u64 start, u64 last,
   556				     int ref)
   557	{
   558		struct interval_tree_node *new_node;
   559		struct vdpa_tree_node *vdpa_node;
   560	
   561		if (last < start)
   562			return -EFAULT;
   563	
   564		/* If the range being mapped is [0, ULONG_MAX], split it into two entries
   565		 * otherwise its size would overflow u64.
   566		 */
   567		if (start == 0 && last == ULONG_MAX) {
   568			u64 mid = last / 2;
   569	
   570			vhost_vdpa_add_range_ctx(root, start, mid, ref);
   571			start = mid + 1;
   572		}
   573		vdpa_node = kmalloc(sizeof(struct vdpa_tree_node), GFP_ATOMIC);
   574	
   575		new_node = &vdpa_node->tree_node;
   576		if (!new_node)
   577			return -ENOMEM;
   578	
   579		new_node->start = start;
   580		new_node->last = last;
   581		vdpa_node->ref = ref;
   582	
   583		interval_tree_insert(new_node, root);
   584	
   585		return 0;
   586	}
   587	
 > 588	u64 vhost_vdpa_range_ref_add(struct rb_root_cached *root,
   589				     struct vdpa_link_node *link_head, int node_number,
   590				     u64 start, u64 last)
   591	{
   592		int i = 0;
   593		u64 size = 0;
   594		int new_ref;
   595		u64 node_start;
   596		u64 node_last;
   597		u64 range_start;
   598		u64 range_last;
   599		int range_size;
   600		struct vdpa_link_node *link_node;
   601		struct vdpa_tree_node *vdpa_node = NULL;
   602		struct interval_tree_node *node = NULL;
   603	
   604		if (node_number == 0) {
   605			vhost_vdpa_add_range_ctx(root, start, last, 1);
   606	
   607			size = last - start + 1;
   608			return size;
   609		}
   610	
   611		link_node = link_head;
   612		range_start = start;
   613		range_last = last;
   614		range_size = range_start - range_last;
   615		for (i = 0; i < node_number; i++) {
   616			vdpa_node = link_node->vdpa_node;
   617			link_node = link_node->next;
   618			node = &vdpa_node->tree_node;
   619			new_ref = vdpa_node->ref;
   620			node_start = node->start;
   621			node_last = node->last;
   622	
   623			if (range_start == node_start) {
   624				if (node_last < range_last) {
   625					/* range_start= node->start--- node->last--range_last*/
   626					vhost_vdpa_add_range_ctx(root, node_start,
   627								 node_last,
   628								 new_ref + 1);
   629					/*count the next range */
   630				} else if (node_last > range_last) {
   631					/* range_start= node->start	---  last --  node->last*/
   632					vhost_vdpa_add_range_ctx(root, node_start,
   633								 range_last,
   634								 new_ref + 1);
   635					vhost_vdpa_add_range_ctx(root, range_last + 1,
   636								 node_last, new_ref);
   637				} else {
   638					vhost_vdpa_add_range_ctx(root, node_start,
   639								 node_last,
   640								 new_ref + 1);
   641				}
   642			} else if (node_start < range_start) {
   643				if (range_last < node_last) {
   644					/* node->start---  start--- last--- node->last*/
   645					/* should the end rang*/
   646	
   647					vhost_vdpa_add_range_ctx(root, node_start,
   648								 range_start - 1,
   649								 new_ref);
   650					vhost_vdpa_add_range_ctx(root, range_start,
   651								 range_last,
   652								 new_ref + 1);
   653					vhost_vdpa_add_range_ctx(root, range_last + 1,
   654								 node_last, new_ref);
   655	
   656				} else if (range_last > node_last) {
   657					/* node->start---  start--- node->last-- last*/
   658	
   659					vhost_vdpa_add_range_ctx(root, node_start,
   660								 range_start - 1,
   661								 new_ref);
   662					vhost_vdpa_add_range_ctx(root, range_start,
   663								 node_last,
   664								 new_ref + 1);
   665				} else {
   666					/* node->start---  start--- node->last= last*/
   667					vhost_vdpa_add_range_ctx(root, node_start,
   668								 range_start - 1,
   669								 new_ref);
   670					vhost_vdpa_add_range_ctx(root, range_start,
   671								 node_last,
   672								 new_ref + 1);
   673					/* should the end rang*/
   674				}
   675			} else {
   676				if (node_last < range_last) {
   677					/* range_start --- node->start --- node->last ----last  */
   678	
   679					vhost_vdpa_add_range_ctx(root, range_start,
   680								 node_start - 1, 1);
   681					vhost_vdpa_add_range_ctx(root, node_start,
   682								 node_last,
   683								 new_ref + 1);
   684					size += ((node_start - 1) - range_start) + 1;
   685				} else if (node_last > range_last) {
   686					/* range_start--- node->start	---  last --  node->last	*/
   687					vhost_vdpa_add_range_ctx(root, range_start,
   688								 node_start - 1, 1);
   689					vhost_vdpa_add_range_ctx(root, node_start,
   690								 range_last,
   691								 new_ref + 1);
   692					vhost_vdpa_add_range_ctx(root, range_last + 1,
   693								 node_last, new_ref);
   694					size += ((node_start - 1) - range_start) + 1;
   695	
   696					/* should the end rang*/
   697				} else {
   698					/* range_start--- node->start	---  last =  node->last	*/
   699					vhost_vdpa_add_range_ctx(root, range_start,
   700								 node_start - 1, 1);
   701					vhost_vdpa_add_range_ctx(root, node_start,
   702								 node_last,
   703								 new_ref + 1);
   704					size += ((node_start - 1) - range_start) + 1;
   705	
   706					/* should the end rang*/
   707				}
   708			}
   709			/* work in next node*/
   710			range_start = node_last + 1;
   711			if (range_start > range_last)
   712				break;
   713		}
   714	
   715		range_size = range_last - range_start;
   716	
   717		/* last round and still some range*/
   718	
   719		if ((range_size >= 0) && (range_start >= node_last) &&
   720		    (node_number == i + 1)) {
   721			vhost_vdpa_add_range_ctx(root, range_start, range_last, 1);
   722			size = size + (range_last - range_start) + 1;
   723		} else if ((range_size == -1) && (node_number == i + 1)) {
   724			return size;
   725		} else {
   726			printk(KERN_WARNING,
 > 727			       "%s %d FAIL start %lld last %lld node->start %lld  node->last %lld i  %d",
   728			       __func__, __LINE__, range_start, range_last, node_start,
   729			       node_last, i);
   730		}
   731	
   732		return size;
   733	}
   734	
 > 735	u64 vhost_vdpa_range_ref_del(struct rb_root_cached *root,
   736				     struct vdpa_link_node *link_head, int node_number,
   737				     u64 start, u64 last)
   738	{
   739		int i = 0;
   740		u64 size = 0;
   741		int new_ref;
   742		u64 node_start;
   743		u64 node_last;
   744		u64 range_start;
   745		u64 range_last;
   746		int range_size;
   747		struct vdpa_link_node *link_node;
   748		struct vdpa_tree_node *vdpa_node = NULL;
   749		struct interval_tree_node *node = NULL;
   750	
   751		if (node_number == 0)
   752			return 0;
   753	
   754		link_node = link_head;
   755		range_start = start;
   756		range_last = last;
   757	
   758		for (i = 0; i < node_number; i++) {
   759			vdpa_node = link_node->vdpa_node;
   760			link_node = link_node->next;
   761			node = &vdpa_node->tree_node;
   762			new_ref = vdpa_node->ref;
   763			node_start = node->start;
   764			node_last = node->last;
   765	
   766			if (range_start == node_start) {
   767				if (node_last < range_last) {
   768					/* range_start =node->start --- node->last ----last*/
   769					if (new_ref > 1) {
   770						vhost_vdpa_add_range_ctx(root,
   771									 node_start,
   772									 node_last,
   773									 new_ref - 1);
   774						/*count the next range */
   775					} else {
   776						/* if the ref =0, do not need add it back, count size*/
   777						size += (node_last - node_start) + 1;
   778					}
   779	
   780				} else if (node_last > range_last) {
   781					/* range_start= node->start	---  last --  node->last*/
   782	
   783					if (new_ref > 1) {
   784						vhost_vdpa_add_range_ctx(root,
   785									 node_start,
   786									 range_last,
   787									 new_ref - 1);
   788					} else {
   789						size += (range_last - node_start) + 1;
   790					}
   791					vhost_vdpa_add_range_ctx(root, range_last + 1,
   792								 node_last, new_ref);
   793				} else {
   794					/* range_start= node->start	---  last = node->last*/
   795	
   796					if (new_ref > 1) {
   797						vhost_vdpa_add_range_ctx(root,
   798									 node_start,
   799									 range_last,
   800									 new_ref - 1);
   801					} else {
   802						size += (range_last - node_start) + 1;
   803					}
   804					/* should be the end */
   805				}
   806			} else if (node_start < range_start) {
   807				if (range_last < node_last) {
   808					/* node->start---  start--- last--- node->last*/
   809					/* should the end rang*/
   810					vhost_vdpa_add_range_ctx(root, node_start,
   811								 range_start - 1,
   812								 new_ref);
   813					if (new_ref > 1) {
   814						vhost_vdpa_add_range_ctx(root,
   815									 range_start,
   816									 range_last,
   817									 new_ref - 1);
   818					} else {
   819						size += (range_last - range_start) + 1;
   820					}
   821					vhost_vdpa_add_range_ctx(root, range_last + 1,
   822								 node_last, new_ref);
   823	
   824				} else if (range_last > node_last) {
   825					/* node->start---  start--- node->last--- last*/
   826	
   827					vhost_vdpa_add_range_ctx(root, node_start,
   828								 range_start - 1,
   829								 new_ref);
   830					if (new_ref > 1) {
   831						vhost_vdpa_add_range_ctx(root,
   832									 range_start,
   833									 node_last,
   834									 new_ref - 1);
   835					} else {
   836						size += (node_last - range_start) + 1;
   837					}
   838				} else {
   839					/* node->start---  start--- node->last= last*/
   840					vhost_vdpa_add_range_ctx(root, node_start,
   841								 range_start - 1,
   842								 new_ref);
   843					if (new_ref > 1) {
   844						vhost_vdpa_add_range_ctx(root,
   845									 range_start,
   846									 range_last,
   847									 new_ref - 1);
   848					} else {
   849						size += (range_last - range_start) + 1;
   850					}
   851					/* should be the end */
   852				}
   853			} else {
   854				/* some range not in the node, error*/
   855				printk(KERN_WARNING,
   856				       "%s %d FAIL  start %lld last %lld node->start %lld  node->last %lld new_ref %d",
   857				       __func__, __LINE__, range_start, range_last,
   858				       node_start, node_last, new_ref);
   859			}
   860	
   861			range_start = node_last + 1;
   862			if (range_start > range_last)
   863				break;
   864		}
   865	
   866		range_size = range_last - range_start;
   867	
   868		/* last round and still some range*/
   869	
   870		if ((range_size > 0) && (node_number == i + 1)) {
   871			printk(KERN_WARNING,
   872			       "%s %d FAIL start %lld last %lld node->start %lld  node->last %lld range_size  %d",
   873			       __func__, __LINE__, range_start, range_last, node_start,
   874			       node_last, range_size);
   875		}
   876		return size;
   877	}
   878	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-06-01  5:03 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20220601012019.1102186-1-lulu@redhat.com>
2022-06-01  5:03 ` [RFC PATCH v2] vdpa: Do not count the pages that were already pinned in the vhost-vDPA kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox