CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Vishal Verma <[email protected]>

Hi Vishal,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on song-md/md-next]
[also build test WARNING on v5.17-rc3 next-20220209]
[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/0day-ci/linux/commits/Vishal-Verma/md-raid456-improve-discard-performance/20220207-234145
base:   git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git md-next
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-c007 
(https://download.01.org/0day-ci/archive/20220210/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
e8bff9ae54a55b4dbfeb6ba55f723abbd81bf494)
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/0day-ci/linux/commit/4af21de77f50109eca27fc515da03b83ebc7b91a
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Vishal-Verma/md-raid456-improve-discard-performance/20220207-234145
        git checkout 4af21de77f50109eca27fc515da03b83ebc7b91a
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   14 warnings generated.
   drivers/md/raid5.c:2185:2: warning: Value stored to 'tx' is never read 
[clang-analyzer-deadcode.DeadStores]
           tx = async_trigger_callback(&submit);
           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:2185:2: note: Value stored to 'tx' is never read
           tx = async_trigger_callback(&submit);
           ^    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:2841:4: warning: 2nd function call argument is an 
uninitialized value [clang-analyzer-core.CallAndMessage]
                           set_bit(WriteErrorSeen, &rdev->flags);
                           ^                       ~~~~~~~~~~~~
   drivers/md/raid5.c:2799:2: note: 'rdev' declared without an initial value
           struct md_rdev *rdev;
           ^~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:2804:15: note: Assuming 'i' is >= 'disks'
           for (i = 0 ; i < disks; i++) {
                        ^~~~~~~~~
   drivers/md/raid5.c:2804:2: note: Loop condition is false. Execution 
continues on line 2822
           for (i = 0 ; i < disks; i++) {
           ^
   drivers/md/raid5.c:2822:2: note: Taking false branch
           pr_debug("end_write_request %llu/%d, count %d, error: %d.\n",
           ^
   include/linux/printk.h:580:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   drivers/md/raid5.c:2825:6: note: Assuming 'i' is not equal to 'disks'
           if (i == disks) {
               ^~~~~~~~~~
   drivers/md/raid5.c:2825:2: note: Taking false branch
           if (i == disks) {
           ^
   drivers/md/raid5.c:2831:6: note: 'replacement' is 0
           if (replacement) {
               ^~~~~~~~~~~
   drivers/md/raid5.c:2831:2: note: Taking false branch
           if (replacement) {
           ^
   drivers/md/raid5.c:2839:7: note: Assuming field 'bi_status' is not equal to 0
                   if (bi->bi_status) {
                       ^~~~~~~~~~~~~
   drivers/md/raid5.c:2839:3: note: Taking true branch
                   if (bi->bi_status) {
                   ^
   drivers/md/raid5.c:2841:4: note: 2nd function call argument is an 
uninitialized value
                           set_bit(WriteErrorSeen, &rdev->flags);
                           ^                       ~~~~~~~~~~~~
   drivers/md/raid5.c:2846:14: warning: 1st function call argument is an 
uninitialized value [clang-analyzer-core.CallAndMessage]
                   } else if (is_badblock(rdev, sh->sector,
                              ^           ~~~~
   drivers/md/raid5.c:2799:2: note: 'rdev' declared without an initial value
           struct md_rdev *rdev;
           ^~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:2804:15: note: Assuming 'i' is >= 'disks'
           for (i = 0 ; i < disks; i++) {
                        ^~~~~~~~~
   drivers/md/raid5.c:2804:2: note: Loop condition is false. Execution 
continues on line 2822
           for (i = 0 ; i < disks; i++) {
           ^
   drivers/md/raid5.c:2822:2: note: Taking false branch
           pr_debug("end_write_request %llu/%d, count %d, error: %d.\n",
           ^
   include/linux/printk.h:580:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   drivers/md/raid5.c:2825:6: note: Assuming 'i' is not equal to 'disks'
           if (i == disks) {
               ^~~~~~~~~~
   drivers/md/raid5.c:2825:2: note: Taking false branch
           if (i == disks) {
           ^
   drivers/md/raid5.c:2831:6: note: 'replacement' is 0
           if (replacement) {
               ^~~~~~~~~~~
   drivers/md/raid5.c:2831:2: note: Taking false branch
           if (replacement) {
           ^
   drivers/md/raid5.c:2839:7: note: Assuming field 'bi_status' is 0
                   if (bi->bi_status) {
                       ^~~~~~~~~~~~~
   drivers/md/raid5.c:2839:3: note: Taking false branch
                   if (bi->bi_status) {
                   ^
   drivers/md/raid5.c:2846:14: note: 1st function call argument is an 
uninitialized value
                   } else if (is_badblock(rdev, sh->sector,
                              ^           ~~~~
   drivers/md/raid5.c:4014:5: warning: Value stored to 'dev' is never read 
[clang-analyzer-deadcode.DeadStores]
                                   dev = &sh->dev[i];
                                   ^     ~~~~~~~~~~~
   drivers/md/raid5.c:4014:5: note: Value stored to 'dev' is never read
                                   dev = &sh->dev[i];
                                   ^     ~~~~~~~~~~~
>> drivers/md/raid5.c:5761:3: warning: Value stored to 'dev_start' is never 
>> read [clang-analyzer-deadcode.DeadStores]
                   dev_start = bio_start;
                   ^           ~~~~~~~~~
   drivers/md/raid5.c:5761:3: note: Value stored to 'dev_start' is never read
                   dev_start = bio_start;
                   ^           ~~~~~~~~~
>> drivers/md/raid5.c:5762:3: warning: Value stored to 'dev_end' is never read 
>> [clang-analyzer-deadcode.DeadStores]
                   dev_end = bio_end;
                   ^         ~~~~~~~
   drivers/md/raid5.c:5762:3: note: Value stored to 'dev_end' is never read
                   dev_end = bio_end;
                   ^         ~~~~~~~
   include/linux/list.h:284:9: warning: Dereference of null pointer 
[clang-analyzer-core.NullDereference]
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:50:2: note: expanded from macro 'READ_ONCE'
           __READ_ONCE(x);                                                 \
           ^
   include/asm-generic/rwonce.h:44:24: note: expanded from macro '__READ_ONCE'
   #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
                           ^
   drivers/md/raid5.c:6512:2: note: Taking false branch
           pr_debug("+++ raid5d active\n");
           ^
   include/linux/printk.h:580:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   drivers/md/raid5.c:6519:2: note: Loop condition is true.  Entering loop body
           while (1) {
           ^
   drivers/md/raid5.c:6525:7: note: 'released' is 0
                   if (released)
                       ^~~~~~~~
   drivers/md/raid5.c:6525:3: note: Taking false branch
                   if (released)
                   ^
   drivers/md/raid5.c:6529:7: note: Assuming the condition is false
                       !list_empty(&conf->bitmap_list)) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:6528:3: note: Taking false branch
                   if (
                   ^
   drivers/md/raid5.c:6540:3: note: Loop condition is false. Execution 
continues on line 6550
                   while ((bio = remove_bio_from_retry(conf, &offset))) {
                   ^
   drivers/md/raid5.c:6550:16: note: Calling 'handle_active_stripes'
                   batch_size = handle_active_stripes(conf, ANY_GROUP, NULL,
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:6413:9: note: 'batch_size' is < MAX_STRIPE_BATCH
           while (batch_size < MAX_STRIPE_BATCH &&
                  ^~~~~~~~~~
   drivers/md/raid5.c:6413:9: note: Left side of '&&' is true
   drivers/md/raid5.c:6414:10: note: Calling '__get_priority_stripe'
                           (sh = __get_priority_stripe(conf, group)) != NULL)
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:5520:2: note: 'handle_list' initialized to a null pointer 
value
           struct list_head *handle_list = NULL;
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:5522:20: note: Assuming the condition is false
           bool second_try = !r5c_is_writeback(conf->log) &&
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:5522:49: note: Left side of '&&' is false
           bool second_try = !r5c_is_writeback(conf->log) &&
                                                          ^
   drivers/md/raid5.c:5524:20: note: Assuming the condition is true
           bool try_loprio = test_bit(R5C_LOG_TIGHT, &conf->cache_state) ||
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:5524:64: note: Left side of '||' is true
           bool try_loprio = test_bit(R5C_LOG_TIGHT, &conf->cache_state) ||
                                                                         ^
   drivers/md/raid5.c:5530:6: note: Assuming field 'worker_cnt_per_group' is 
not equal to 0
           if (conf->worker_cnt_per_group == 0) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:5530:2: note: Taking false branch
           if (conf->worker_cnt_per_group == 0) {
           ^
   drivers/md/raid5.c:5533:9: note: Taking false branch
           } else if (group != ANY_GROUP) {
                  ^
   drivers/md/raid5.c:5539:15: note: Assuming 'i' is >= field 'group_cnt'
                   for (i = 0; i < conf->group_cnt; i++) {
                               ^~~~~~~~~~~~~~~~~~~
   drivers/md/raid5.c:5539:3: note: Loop condition is false. Execution 
continues on line 5548
                   for (i = 0; i < conf->group_cnt; i++) {
                   ^
   drivers/md/raid5.c:5548:2: note: Taking false branch
           pr_debug("%s: handle: %s hold: %s full_writes: %d bypass_count: 
%d\n",
           ^
   include/linux/printk.h:580:2: note: expanded from macro 'pr_debug'
           no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:131:2: note: expanded from macro 'no_printk'
           if (0)                                          \
           ^
   drivers/md/raid5.c:5554:18: note: Passing null pointer value via 1st 
parameter 'head'
           if (!list_empty(handle_list)) {
                           ^~~~~~~~~~~
   drivers/md/raid5.c:5554:7: note: Calling 'list_empty'
           if (!list_empty(handle_list)) {
                ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:284:9: note: Left side of '||' is false
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'

vim +/dev_start +5761 drivers/md/raid5.c

8811b5968f6216e Shaohua Li        2012-08-02  5681  
620125f2bf8ff0c Shaohua Li        2012-10-11  5682  static void 
make_discard_request(struct mddev *mddev, struct bio *bi)
620125f2bf8ff0c Shaohua Li        2012-10-11  5683  {
620125f2bf8ff0c Shaohua Li        2012-10-11  5684      struct r5conf *conf = 
mddev->private;
4af21de77f50109 Vishal Verma      2022-02-07  5685      sector_t bio_start, 
bio_end;
4af21de77f50109 Vishal Verma      2022-02-07  5686      unsigned int 
start_disk_index, end_disk_index;
4af21de77f50109 Vishal Verma      2022-02-07  5687      sector_t 
start_disk_offset, end_disk_offset;
4af21de77f50109 Vishal Verma      2022-02-07  5688      sector_t 
first_stripe_index, last_stripe_index;
4af21de77f50109 Vishal Verma      2022-02-07  5689      sector_t split_size;
4af21de77f50109 Vishal Verma      2022-02-07  5690      struct bio *split;
4af21de77f50109 Vishal Verma      2022-02-07  5691      unsigned int remainder;
4af21de77f50109 Vishal Verma      2022-02-07  5692      int d;
620125f2bf8ff0c Shaohua Li        2012-10-11  5693      int stripe_sectors;
620125f2bf8ff0c Shaohua Li        2012-10-11  5694  
bf2c411bb1cfc45 Vishal Verma      2021-12-21  5695      /* We need to handle 
this when io_uring supports discard/trim */
bf2c411bb1cfc45 Vishal Verma      2021-12-21  5696      if 
(WARN_ON_ONCE(bi->bi_opf & REQ_NOWAIT))
bf2c411bb1cfc45 Vishal Verma      2021-12-21  5697              return;
bf2c411bb1cfc45 Vishal Verma      2021-12-21  5698  
4af21de77f50109 Vishal Verma      2022-02-07  5699      /* Skip discard while 
reshape or resync is happening */
4af21de77f50109 Vishal Verma      2022-02-07  5700      if 
((mddev->reshape_position != MaxSector) ||
4af21de77f50109 Vishal Verma      2022-02-07  5701          
test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {
620125f2bf8ff0c Shaohua Li        2012-10-11  5702              return;
4af21de77f50109 Vishal Verma      2022-02-07  5703      }
620125f2bf8ff0c Shaohua Li        2012-10-11  5704  
620125f2bf8ff0c Shaohua Li        2012-10-11  5705      stripe_sectors = 
conf->chunk_sectors *
620125f2bf8ff0c Shaohua Li        2012-10-11  5706              
(conf->raid_disks - conf->max_degraded);
620125f2bf8ff0c Shaohua Li        2012-10-11  5707  
4af21de77f50109 Vishal Verma      2022-02-07  5708      if (bio_sectors(bi) < 
stripe_sectors * 2)
4af21de77f50109 Vishal Verma      2022-02-07  5709              return;
620125f2bf8ff0c Shaohua Li        2012-10-11  5710  
4af21de77f50109 Vishal Verma      2022-02-07  5711      bio_start = 
bi->bi_iter.bi_sector & ~((sector_t)RAID5_STRIPE_SECTORS(conf)-1);
4af21de77f50109 Vishal Verma      2022-02-07  5712      bio_end = 
bio_end_sector(bi);
4af21de77f50109 Vishal Verma      2022-02-07  5713  
4af21de77f50109 Vishal Verma      2022-02-07  5714      /*
4af21de77f50109 Vishal Verma      2022-02-07  5715       * Keep bio aligned 
with strip size.
4af21de77f50109 Vishal Verma      2022-02-07  5716       */
4af21de77f50109 Vishal Verma      2022-02-07  5717      div_u64_rem(bio_start, 
stripe_sectors, &remainder);
4af21de77f50109 Vishal Verma      2022-02-07  5718      if (remainder) {
4af21de77f50109 Vishal Verma      2022-02-07  5719              split_size = 
stripe_sectors - remainder;
4af21de77f50109 Vishal Verma      2022-02-07  5720              split = 
bio_split(bi, split_size, GFP_NOIO, &conf->bio_split);
4af21de77f50109 Vishal Verma      2022-02-07  5721              
bio_chain(split, bi);
4af21de77f50109 Vishal Verma      2022-02-07  5722              /* Resend the 
fist split part */
4af21de77f50109 Vishal Verma      2022-02-07  5723              
submit_bio_noacct(split);
4af21de77f50109 Vishal Verma      2022-02-07  5724      }
4af21de77f50109 Vishal Verma      2022-02-07  5725      
div_u64_rem(bio_end-bio_start, stripe_sectors, &remainder);
4af21de77f50109 Vishal Verma      2022-02-07  5726      if (remainder) {
4af21de77f50109 Vishal Verma      2022-02-07  5727              split_size = 
bio_sectors(bi) - remainder;
4af21de77f50109 Vishal Verma      2022-02-07  5728              split = 
bio_split(bi, split_size, GFP_NOIO, &conf->bio_split);
4af21de77f50109 Vishal Verma      2022-02-07  5729              
bio_chain(split, bi);
4af21de77f50109 Vishal Verma      2022-02-07  5730              /* Resend the 
second split part */
4af21de77f50109 Vishal Verma      2022-02-07  5731              
submit_bio_noacct(bi);
4af21de77f50109 Vishal Verma      2022-02-07  5732              bi = split;
620125f2bf8ff0c Shaohua Li        2012-10-11  5733      }
4af21de77f50109 Vishal Verma      2022-02-07  5734  
4af21de77f50109 Vishal Verma      2022-02-07  5735      bio_start = 
bi->bi_iter.bi_sector & ~((sector_t)RAID5_STRIPE_SECTORS(conf)-1);
4af21de77f50109 Vishal Verma      2022-02-07  5736      bio_end = 
bio_end_sector(bi);
4af21de77f50109 Vishal Verma      2022-02-07  5737  
4af21de77f50109 Vishal Verma      2022-02-07  5738      bi->bi_next = NULL;
4af21de77f50109 Vishal Verma      2022-02-07  5739  
4af21de77f50109 Vishal Verma      2022-02-07  5740      first_stripe_index = 
bio_start;
4af21de77f50109 Vishal Verma      2022-02-07  5741      
sector_div(first_stripe_index, stripe_sectors);
4af21de77f50109 Vishal Verma      2022-02-07  5742  
4af21de77f50109 Vishal Verma      2022-02-07  5743      last_stripe_index = 
bio_end;
4af21de77f50109 Vishal Verma      2022-02-07  5744      
sector_div(last_stripe_index, stripe_sectors);
4af21de77f50109 Vishal Verma      2022-02-07  5745  
4af21de77f50109 Vishal Verma      2022-02-07  5746      start_disk_index = 
(int)(bio_start - first_stripe_index * stripe_sectors) /
4af21de77f50109 Vishal Verma      2022-02-07  5747              
conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5748      start_disk_offset = 
((int)(bio_start - first_stripe_index * stripe_sectors) %
4af21de77f50109 Vishal Verma      2022-02-07  5749              
conf->chunk_sectors) +
4af21de77f50109 Vishal Verma      2022-02-07  5750              
first_stripe_index * conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5751      end_disk_index = 
(int)(bio_end - last_stripe_index * stripe_sectors) /
4af21de77f50109 Vishal Verma      2022-02-07  5752              
conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5753      end_disk_offset = 
((int)(bio_end - last_stripe_index * stripe_sectors) %
4af21de77f50109 Vishal Verma      2022-02-07  5754              
conf->chunk_sectors) +
4af21de77f50109 Vishal Verma      2022-02-07  5755              
last_stripe_index * conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5756  
620125f2bf8ff0c Shaohua Li        2012-10-11  5757      for (d = 0; d < 
conf->raid_disks; d++) {
4af21de77f50109 Vishal Verma      2022-02-07  5758              sector_t 
dev_start, dev_end;
4af21de77f50109 Vishal Verma      2022-02-07  5759              struct md_rdev 
*rdev = READ_ONCE(conf->disks[d].rdev);
4af21de77f50109 Vishal Verma      2022-02-07  5760  
4af21de77f50109 Vishal Verma      2022-02-07 @5761              dev_start = 
bio_start;
4af21de77f50109 Vishal Verma      2022-02-07 @5762              dev_end = 
bio_end;
4af21de77f50109 Vishal Verma      2022-02-07  5763  
4af21de77f50109 Vishal Verma      2022-02-07  5764              if (d < 
start_disk_index)
4af21de77f50109 Vishal Verma      2022-02-07  5765                      
dev_start = (first_stripe_index + 1) *
4af21de77f50109 Vishal Verma      2022-02-07  5766                              
conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5767              else if (d > 
start_disk_index)
4af21de77f50109 Vishal Verma      2022-02-07  5768                      
dev_start = first_stripe_index * conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5769              else
4af21de77f50109 Vishal Verma      2022-02-07  5770                      
dev_start = start_disk_offset;
4af21de77f50109 Vishal Verma      2022-02-07  5771  
4af21de77f50109 Vishal Verma      2022-02-07  5772              if (d < 
end_disk_index)
4af21de77f50109 Vishal Verma      2022-02-07  5773                      dev_end 
= (last_stripe_index + 1) * conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5774              else if (d > 
end_disk_index)
4af21de77f50109 Vishal Verma      2022-02-07  5775                      dev_end 
= last_stripe_index * conf->chunk_sectors;
4af21de77f50109 Vishal Verma      2022-02-07  5776              else
4af21de77f50109 Vishal Verma      2022-02-07  5777                      dev_end 
= end_disk_offset;
4af21de77f50109 Vishal Verma      2022-02-07  5778  
4af21de77f50109 Vishal Verma      2022-02-07  5779              if (dev_end <= 
dev_start)
620125f2bf8ff0c Shaohua Li        2012-10-11  5780                      
continue;
620125f2bf8ff0c Shaohua Li        2012-10-11  5781  
4af21de77f50109 Vishal Verma      2022-02-07  5782              
md_submit_discard_bio(mddev, rdev, bi,
4af21de77f50109 Vishal Verma      2022-02-07  5783                              
        dev_start + rdev->data_offset,
4af21de77f50109 Vishal Verma      2022-02-07  5784                              
        dev_end - dev_start);
620125f2bf8ff0c Shaohua Li        2012-10-11  5785      }
620125f2bf8ff0c Shaohua Li        2012-10-11  5786  
4246a0b63bd8f56 Christoph Hellwig 2015-07-20  5787      bio_endio(bi);
620125f2bf8ff0c Shaohua Li        2012-10-11  5788  }
620125f2bf8ff0c Shaohua Li        2012-10-11  5789  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to