Hi,

[auto build test WARNING on robh/for-next]
[also build test WARNING on v4.7-rc2 next-20160607]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Peter-Griffin/Add-support-for-FDMA-DMA-controller-and-slim-core-rproc-found-on-STi-chipsets/20160608-002710
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux for-next
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

   drivers/remoteproc/remoteproc_core.c: In function '__rproc_boot':
>> drivers/remoteproc/remoteproc_core.c:887:20: warning: 'loaded_table' may be 
>> used uninitialized in this function [-Wmaybe-uninitialized]
      rproc->table_ptr = loaded_table;
      ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
   drivers/remoteproc/remoteproc_core.c:803:33: note: 'loaded_table' was 
declared here
     struct resource_table *table, *loaded_table;
                                    ^~~~~~~~~~~~
   drivers/remoteproc/remoteproc_core.c: In function 'rproc_trigger_recovery':
>> drivers/remoteproc/remoteproc_core.c:1012:9: warning: 'ret' may be used 
>> uninitialized in this function [-Wmaybe-uninitialized]
     return ret;
            ^~~

vim +/loaded_table +887 drivers/remoteproc/remoteproc_core.c

a2b950ac Ohad Ben-Cohen       2013-04-07   881          /*
a2b950ac Ohad Ben-Cohen       2013-04-07   882           * Update table_ptr so 
that all subsequent vring allocations and
a2b950ac Ohad Ben-Cohen       2013-04-07   883           * virtio fields 
manipulation update the actual loaded resource table
a2b950ac Ohad Ben-Cohen       2013-04-07   884           * in device memory.
a2b950ac Ohad Ben-Cohen       2013-04-07   885           */
ea76063f Peter Griffin        2016-06-07   886          if (rproc->has_rsctable)
a2b950ac Ohad Ben-Cohen       2013-04-07  @887                  
rproc->table_ptr = loaded_table;
a2b950ac Ohad Ben-Cohen       2013-04-07   888  
400e64df Ohad Ben-Cohen       2011-10-20   889          rproc->state = 
RPROC_RUNNING;
400e64df Ohad Ben-Cohen       2011-10-20   890  
400e64df Ohad Ben-Cohen       2011-10-20   891          dev_info(dev, "remote 
processor %s is now up\n", rproc->name);
400e64df Ohad Ben-Cohen       2011-10-20   892  
400e64df Ohad Ben-Cohen       2011-10-20   893          return 0;
400e64df Ohad Ben-Cohen       2011-10-20   894  
400e64df Ohad Ben-Cohen       2011-10-20   895  clean_up:
400e64df Ohad Ben-Cohen       2011-10-20   896          
rproc_resource_cleanup(rproc);
400e64df Ohad Ben-Cohen       2011-10-20   897          
rproc_disable_iommu(rproc);
400e64df Ohad Ben-Cohen       2011-10-20   898          return ret;
400e64df Ohad Ben-Cohen       2011-10-20   899  }
400e64df Ohad Ben-Cohen       2011-10-20   900  
400e64df Ohad Ben-Cohen       2011-10-20   901  /*
400e64df Ohad Ben-Cohen       2011-10-20   902   * take a firmware and look for 
virtio devices to register.
400e64df Ohad Ben-Cohen       2011-10-20   903   *
400e64df Ohad Ben-Cohen       2011-10-20   904   * Note: this function is 
called asynchronously upon registration of the
400e64df Ohad Ben-Cohen       2011-10-20   905   * remote processor (so we must 
wait until it completes before we try
400e64df Ohad Ben-Cohen       2011-10-20   906   * to unregister the device. 
one other option is just to use kref here,
400e64df Ohad Ben-Cohen       2011-10-20   907   * that might be cleaner).
400e64df Ohad Ben-Cohen       2011-10-20   908   */
400e64df Ohad Ben-Cohen       2011-10-20   909  static void 
rproc_fw_config_virtio(const struct firmware *fw, void *context)
400e64df Ohad Ben-Cohen       2011-10-20   910  {
400e64df Ohad Ben-Cohen       2011-10-20   911          struct rproc *rproc = 
context;
1e3e2c7c Ohad Ben-Cohen       2012-02-13   912          struct resource_table 
*table;
1e3e2c7c Ohad Ben-Cohen       2012-02-13   913          int ret, tablesz;
400e64df Ohad Ben-Cohen       2011-10-20   914  
400e64df Ohad Ben-Cohen       2011-10-20   915          if 
(rproc_fw_sanity_check(rproc, fw) < 0)
400e64df Ohad Ben-Cohen       2011-10-20   916                  goto out;
400e64df Ohad Ben-Cohen       2011-10-20   917  
1e3e2c7c Ohad Ben-Cohen       2012-02-13   918          /* look for the 
resource table */
bd484984 Sjur Brændeland      2012-06-19   919          table = 
rproc_find_rsc_table(rproc, fw,  &tablesz);
1e3e2c7c Ohad Ben-Cohen       2012-02-13   920          if (!table)
1e3e2c7c Ohad Ben-Cohen       2012-02-13   921                  goto out;
1e3e2c7c Ohad Ben-Cohen       2012-02-13   922  
a2b950ac Ohad Ben-Cohen       2013-04-07   923          rproc->table_csum = 
crc32(0, table, tablesz);
a2b950ac Ohad Ben-Cohen       2013-04-07   924  
a2b950ac Ohad Ben-Cohen       2013-04-07   925          /*
a2b950ac Ohad Ben-Cohen       2013-04-07   926           * Create a copy of the 
resource table. When a virtio device starts
a2b950ac Ohad Ben-Cohen       2013-04-07   927           * and calls 
vring_new_virtqueue() the address of the allocated vring
a2b950ac Ohad Ben-Cohen       2013-04-07   928           * will be stored in 
the cached_table. Before the device is started,
a2b950ac Ohad Ben-Cohen       2013-04-07   929           * cached_table will be 
copied into devic memory.
a2b950ac Ohad Ben-Cohen       2013-04-07   930           */
95cee62c Thomas Meyer         2013-07-01   931          rproc->cached_table = 
kmemdup(table, tablesz, GFP_KERNEL);
a2b950ac Ohad Ben-Cohen       2013-04-07   932          if 
(!rproc->cached_table)
a2b950ac Ohad Ben-Cohen       2013-04-07   933                  goto out;
a2b950ac Ohad Ben-Cohen       2013-04-07   934  
a2b950ac Ohad Ben-Cohen       2013-04-07   935          rproc->table_ptr = 
rproc->cached_table;
a2b950ac Ohad Ben-Cohen       2013-04-07   936  
ba7290e0 Sjur Brændeland      2013-02-21   937          /* count the number of 
notify-ids */
ba7290e0 Sjur Brændeland      2013-02-21   938          rproc->max_notifyid = 
-1;
172e6ab1 Suman Anna           2015-02-27   939          ret = 
rproc_handle_resources(rproc, tablesz,
172e6ab1 Suman Anna           2015-02-27   940                                  
     rproc_count_vrings_handler);
1e3e2c7c Ohad Ben-Cohen       2012-02-13   941          if (ret)
400e64df Ohad Ben-Cohen       2011-10-20   942                  goto out;
400e64df Ohad Ben-Cohen       2011-10-20   943  
a2b950ac Ohad Ben-Cohen       2013-04-07   944          /* look for virtio 
devices and register them */
a2b950ac Ohad Ben-Cohen       2013-04-07   945          ret = 
rproc_handle_resources(rproc, tablesz, rproc_vdev_handler);
a2b950ac Ohad Ben-Cohen       2013-04-07   946  
400e64df Ohad Ben-Cohen       2011-10-20   947  out:
400e64df Ohad Ben-Cohen       2011-10-20   948          release_firmware(fw);
160e7c84 Ohad Ben-Cohen       2012-07-04   949          /* allow rproc_del() 
contexts, if any, to proceed */
400e64df Ohad Ben-Cohen       2011-10-20   950          
complete_all(&rproc->firmware_loading_complete);
400e64df Ohad Ben-Cohen       2011-10-20   951  }
400e64df Ohad Ben-Cohen       2011-10-20   952  
70b85ef8 Fernando Guzman Lugo 2012-08-30   953  static int 
rproc_add_virtio_devices(struct rproc *rproc)
70b85ef8 Fernando Guzman Lugo 2012-08-30   954  {
70b85ef8 Fernando Guzman Lugo 2012-08-30   955          int ret;
70b85ef8 Fernando Guzman Lugo 2012-08-30   956  
70b85ef8 Fernando Guzman Lugo 2012-08-30   957          /* rproc_del() calls 
must wait until async loader completes */
70b85ef8 Fernando Guzman Lugo 2012-08-30   958          
init_completion(&rproc->firmware_loading_complete);
70b85ef8 Fernando Guzman Lugo 2012-08-30   959  
70b85ef8 Fernando Guzman Lugo 2012-08-30   960          /*
70b85ef8 Fernando Guzman Lugo 2012-08-30   961           * We must retrieve 
early virtio configuration info from
70b85ef8 Fernando Guzman Lugo 2012-08-30   962           * the firmware (e.g. 
whether to register a virtio device,
70b85ef8 Fernando Guzman Lugo 2012-08-30   963           * what virtio features 
does it support, ...).
70b85ef8 Fernando Guzman Lugo 2012-08-30   964           *
70b85ef8 Fernando Guzman Lugo 2012-08-30   965           * We're initiating an 
asynchronous firmware loading, so we can
70b85ef8 Fernando Guzman Lugo 2012-08-30   966           * be built-in kernel 
code, without hanging the boot process.
70b85ef8 Fernando Guzman Lugo 2012-08-30   967           */
70b85ef8 Fernando Guzman Lugo 2012-08-30   968          ret = 
request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG,
70b85ef8 Fernando Guzman Lugo 2012-08-30   969                                  
      rproc->firmware, &rproc->dev, GFP_KERNEL,
70b85ef8 Fernando Guzman Lugo 2012-08-30   970                                  
      rproc, rproc_fw_config_virtio);
70b85ef8 Fernando Guzman Lugo 2012-08-30   971          if (ret < 0) {
70b85ef8 Fernando Guzman Lugo 2012-08-30   972                  
dev_err(&rproc->dev, "request_firmware_nowait err: %d\n", ret);
70b85ef8 Fernando Guzman Lugo 2012-08-30   973                  
complete_all(&rproc->firmware_loading_complete);
70b85ef8 Fernando Guzman Lugo 2012-08-30   974          }
70b85ef8 Fernando Guzman Lugo 2012-08-30   975  
70b85ef8 Fernando Guzman Lugo 2012-08-30   976          return ret;
70b85ef8 Fernando Guzman Lugo 2012-08-30   977  }
70b85ef8 Fernando Guzman Lugo 2012-08-30   978  
70b85ef8 Fernando Guzman Lugo 2012-08-30   979  /**
70b85ef8 Fernando Guzman Lugo 2012-08-30   980   * rproc_trigger_recovery() - 
recover a remoteproc
70b85ef8 Fernando Guzman Lugo 2012-08-30   981   * @rproc: the remote processor
70b85ef8 Fernando Guzman Lugo 2012-08-30   982   *
70b85ef8 Fernando Guzman Lugo 2012-08-30   983   * The recovery is done by 
reseting all the virtio devices, that way all the
70b85ef8 Fernando Guzman Lugo 2012-08-30   984   * rpmsg drivers will be 
reseted along with the remote processor making the
70b85ef8 Fernando Guzman Lugo 2012-08-30   985   * remoteproc functional again.
70b85ef8 Fernando Guzman Lugo 2012-08-30   986   *
70b85ef8 Fernando Guzman Lugo 2012-08-30   987   * This function can sleep, so 
it cannot be called from atomic context.
70b85ef8 Fernando Guzman Lugo 2012-08-30   988   */
70b85ef8 Fernando Guzman Lugo 2012-08-30   989  int 
rproc_trigger_recovery(struct rproc *rproc)
70b85ef8 Fernando Guzman Lugo 2012-08-30   990  {
70b85ef8 Fernando Guzman Lugo 2012-08-30   991          struct rproc_vdev 
*rvdev, *rvtmp;
ea76063f Peter Griffin        2016-06-07   992          int ret;
70b85ef8 Fernando Guzman Lugo 2012-08-30   993  
70b85ef8 Fernando Guzman Lugo 2012-08-30   994          dev_err(&rproc->dev, 
"recovering %s\n", rproc->name);
70b85ef8 Fernando Guzman Lugo 2012-08-30   995  
70b85ef8 Fernando Guzman Lugo 2012-08-30   996          
init_completion(&rproc->crash_comp);
70b85ef8 Fernando Guzman Lugo 2012-08-30   997  
70b85ef8 Fernando Guzman Lugo 2012-08-30   998          /* clean up remote vdev 
entries */
70b85ef8 Fernando Guzman Lugo 2012-08-30   999          
list_for_each_entry_safe(rvdev, rvtmp, &rproc->rvdevs, node)
70b85ef8 Fernando Guzman Lugo 2012-08-30  1000                  
rproc_remove_virtio_dev(rvdev);
70b85ef8 Fernando Guzman Lugo 2012-08-30  1001  
70b85ef8 Fernando Guzman Lugo 2012-08-30  1002          /* wait until there is 
no more rproc users */
70b85ef8 Fernando Guzman Lugo 2012-08-30  1003          
wait_for_completion(&rproc->crash_comp);
70b85ef8 Fernando Guzman Lugo 2012-08-30  1004  
a2b950ac Ohad Ben-Cohen       2013-04-07  1005          /* Free the copy of the 
resource table */
a2b950ac Ohad Ben-Cohen       2013-04-07  1006          
kfree(rproc->cached_table);
ea76063f Peter Griffin        2016-06-07  1007          rproc->cached_table = 
NULL;
ea76063f Peter Griffin        2016-06-07  1008  
ea76063f Peter Griffin        2016-06-07  1009          if (rproc->has_rsctable)
ea76063f Peter Griffin        2016-06-07  1010                  ret = 
rproc_add_virtio_devices(rproc);
a2b950ac Ohad Ben-Cohen       2013-04-07  1011  
ea76063f Peter Griffin        2016-06-07 @1012          return ret;
70b85ef8 Fernando Guzman Lugo 2012-08-30  1013  }
70b85ef8 Fernando Guzman Lugo 2012-08-30  1014  
400e64df Ohad Ben-Cohen       2011-10-20  1015  /**

:::::: The code at line 887 was first introduced by commit
:::::: a2b950ac7b1e6442919ee9e79c4963e134698869 remoteproc: perserve resource 
table data

:::::: TO: Ohad Ben-Cohen <[email protected]>
:::::: CC: Ohad Ben-Cohen <[email protected]>

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

Attachment: .config.gz
Description: Binary data

Reply via email to