CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: "Thomas Weißschuh" <[email protected]>

Hi "Thomas,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on 622e96fb58d63985b028abc2cb9a873124bdac1e]

url:    
https://github.com/0day-ci/linux/commits/Thomas-Wei-schuh/bus-mhi-core-Load-firmware-asynchronous/20211211-001725
base:   622e96fb58d63985b028abc2cb9a873124bdac1e
:::::: branch date: 30 hours ago
:::::: commit date: 30 hours ago
config: riscv-randconfig-c006-20211210 
(https://download.01.org/0day-ci/archive/20211212/[email protected]/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
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
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # 
https://github.com/0day-ci/linux/commit/bc1fbdf39b0c8e31c64a703307a4e88a56efc8ca
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Thomas-Wei-schuh/bus-mhi-core-Load-firmware-asynchronous/20211211-001725
        git checkout bc1fbdf39b0c8e31c64a703307a4e88a56efc8ca
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 
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 >>)
                                               ^
   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'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   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'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   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'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   include/linux/list.h:284:9: note: Left side of '||' is true
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:38: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                                               ^
   include/linux/list.h:284:9: note: Taking false branch
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:2: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
           ^
   include/linux/compiler_types.h:335:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:323:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:315:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   include/linux/list.h:284:9: note: Loop condition is false.  Exiting loop
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:2: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
           ^
   include/linux/compiler_types.h:335:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:323:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:307:2: note: expanded from macro 
'__compiletime_assert'
           do {                                                            \
           ^
   include/linux/list.h:284:9: note: Use of memory after it is freed
           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))
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 5 warnings (5 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.
   6 warnings generated.
   drivers/bus/mhi/core/boot.c:154:2: warning: Value stored to 'ret' is never 
read [clang-analyzer-deadcode.DeadStores]
           ret = mhi_read_reg(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, 
&rx_status);
           ^     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/bus/mhi/core/boot.c:154:2: note: Value stored to 'ret' is never read
           ret = mhi_read_reg(mhi_cntrl, base, BHIE_RXVECSTATUS_OFFS, 
&rx_status);
           ^     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/bus/mhi/core/boot.c:462:2: warning: Null pointer passed as 1st 
>> argument to memory copy function [clang-analyzer-unix.cstring.NullArg]
           memcpy(buf, firmware->data, size);
           ^      ~~~
   drivers/bus/mhi/core/boot.c:448:9: note: Assuming field 'fbc_download' is 
false
           size = (mhi_cntrl->fbc_download) ? mhi_cntrl->sbl_size : 
firmware->size;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/bus/mhi/core/boot.c:448:9: note: '?' condition is false
   drivers/bus/mhi/core/boot.c:451:6: note: 'size' is <= field 'size'
           if (size > firmware->size)
               ^~~~
   drivers/bus/mhi/core/boot.c:451:2: note: Taking false branch
           if (size > firmware->size)
           ^
   drivers/bus/mhi/core/boot.c:454:8: note: Calling 'dma_alloc_coherent'
           buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dma-mapping.h:419:4: note: '?' condition is false
                           (gfp & __GFP_NOWARN) ? DMA_ATTR_NO_WARN : 0);
                           ^
   include/linux/dma-mapping.h:418:2: note: Returning pointer
           return dma_alloc_attrs(dev, size, dma_handle, gfp,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/bus/mhi/core/boot.c:454:8: note: Returning from 'dma_alloc_coherent'
           buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/bus/mhi/core/boot.c:454:2: note: Value assigned to 'buf'
           buf = dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/bus/mhi/core/boot.c:456:6: note: Assuming 'buf' is null
           if (!buf) {
               ^~~~
   drivers/bus/mhi/core/boot.c:456:2: note: Taking true branch
           if (!buf) {
           ^
   drivers/bus/mhi/core/boot.c:462:2: note: Null pointer passed as 1st argument 
to memory copy function
           memcpy(buf, firmware->data, size);
           ^      ~~~
   Suppressed 4 warnings (4 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.
   5 warnings generated.
   drivers/phy/phy-core.c:307:2: warning: Value stored to 'ret' is never read 
[clang-analyzer-deadcode.DeadStores]
           ret = 0; /* Override possible ret == -ENOTSUPP */
           ^     ~
   drivers/phy/phy-core.c:307:2: note: Value stored to 'ret' is never read
           ret = 0; /* Override possible ret == -ENOTSUPP */
           ^     ~
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   5 warnings generated.
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:815:20: warning: The left 
operand of '==' is a garbage value 
[clang-analyzer-core.UndefinedBinaryOperatorResult]
           if (pu == 0 && pd == 0) {
                             ^
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:927:6: note: Assuming field 
'pull_type' is null
           if (hw->soc->pull_type)
               ^~~~~~~~~~~~~~~~~~
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:927:2: note: Taking false 
branch
           if (hw->soc->pull_type)
           ^
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:932:2: note: Taking true 
branch
           if (try_all_type & MTK_PULL_RSEL_TYPE) {
           ^
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:933:9: note: Calling 
'mtk_pinconf_bias_get_rsel'
                   err = mtk_pinconf_bias_get_rsel(hw, desc, pullup, enable);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:803:10: note: 'pd' declared 
without an initial value
           int pu, pd, rsel, err;
                   ^~
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:805:8: note: Calling 
'mtk_hw_get_value'
           err = mtk_hw_get_value(hw, desc, PINCTRL_PIN_REG_RSEL, &rsel);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:221:8: note: Calling 
'mtk_hw_pin_field_get'
           err = mtk_hw_pin_field_get(hw, desc, field, &pf);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:149:6: note: 'field' is >= 0
           if (field < 0 || field >= PINCTRL_PIN_REG_MAX) {
               ^~~~~
   drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c:149:6: note: Left side of 
'||' is false

vim +462 drivers/bus/mhi/core/boot.c

cd457afb166705 Manivannan Sadhasivam 2020-02-20  434  
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  435  static void 
mhi_fw_load_callback(const struct firmware *firmware, void *context)
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  436  {
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  437    struct 
mhi_fw_load_callback_ctx *ctx = context;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  438    const char *fw_name = 
ctx->fw_name;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  439    struct mhi_controller 
*mhi_cntrl = ctx->mhi_cntrl;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  440    struct device *dev = 
&mhi_cntrl->mhi_dev->dev;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  441    dma_addr_t dma_addr;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  442    size_t size;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  443    void *buf;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  444    int ret;
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  445  
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  446    kfree(context);
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  447  
cd457afb166705 Manivannan Sadhasivam 2020-02-20  448    size = 
(mhi_cntrl->fbc_download) ? mhi_cntrl->sbl_size : firmware->size;
cd457afb166705 Manivannan Sadhasivam 2020-02-20  449  
cd457afb166705 Manivannan Sadhasivam 2020-02-20  450    /* SBL size provided is 
maximum size, not necessarily the image size */
cd457afb166705 Manivannan Sadhasivam 2020-02-20  451    if (size > 
firmware->size)
cd457afb166705 Manivannan Sadhasivam 2020-02-20  452            size = 
firmware->size;
cd457afb166705 Manivannan Sadhasivam 2020-02-20  453  
2e36190de69cb4 Bhaumik Bhatt         2021-08-02  454    buf = 
dma_alloc_coherent(mhi_cntrl->cntrl_dev, size, &dma_addr,
2e36190de69cb4 Bhaumik Bhatt         2021-08-02  455                            
 GFP_KERNEL);
cd457afb166705 Manivannan Sadhasivam 2020-02-20  456    if (!buf) {
cd457afb166705 Manivannan Sadhasivam 2020-02-20  457            
release_firmware(firmware);
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  458            
mhi_fw_load_finish(mhi_cntrl, MHI_FW_ERROR_FW_LOAD);
cd457afb166705 Manivannan Sadhasivam 2020-02-20  459    }
cd457afb166705 Manivannan Sadhasivam 2020-02-20  460  
1b55c16a5e4718 Bhaumik Bhatt         2020-11-09  461    /* Download image using 
BHI */
cd457afb166705 Manivannan Sadhasivam 2020-02-20 @462    memcpy(buf, 
firmware->data, size);
1b55c16a5e4718 Bhaumik Bhatt         2020-11-09  463    ret = 
mhi_fw_load_bhi(mhi_cntrl, dma_addr, size);
2e36190de69cb4 Bhaumik Bhatt         2021-08-02  464    
dma_free_coherent(mhi_cntrl->cntrl_dev, size, buf, dma_addr);
cd457afb166705 Manivannan Sadhasivam 2020-02-20  465  
cd457afb166705 Manivannan Sadhasivam 2020-02-20  466    /* Error or in EDL 
mode, we're done */
0a895f091ebd94 Bhaumik Bhatt         2020-05-21  467    if (ret) {
1b55c16a5e4718 Bhaumik Bhatt         2020-11-09  468            dev_err(dev, 
"MHI did not load image over BHI, ret: %d\n", ret);
12e050c77be036 Bhaumik Bhatt         2020-11-09  469            
release_firmware(firmware);
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  470            
mhi_fw_load_finish(mhi_cntrl, MHI_FW_ERROR_FW_LOAD);
0a895f091ebd94 Bhaumik Bhatt         2020-05-21  471    }
0a895f091ebd94 Bhaumik Bhatt         2020-05-21  472  
4f214496ac7421 Bhaumik Bhatt         2021-03-29  473    /* Wait for ready since 
EDL image was loaded */
418bec695696ab Bhaumik Bhatt         2021-03-29  474    if (fw_name == 
mhi_cntrl->edl_image) {
12e050c77be036 Bhaumik Bhatt         2020-11-09  475            
release_firmware(firmware);
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  476            
mhi_fw_load_finish(mhi_cntrl, MHI_FW_LOAD_READY_STATE);
12e050c77be036 Bhaumik Bhatt         2020-11-09  477    }
cd457afb166705 Manivannan Sadhasivam 2020-02-20  478  
cd457afb166705 Manivannan Sadhasivam 2020-02-20  479    
write_lock_irq(&mhi_cntrl->pm_lock);
cd457afb166705 Manivannan Sadhasivam 2020-02-20  480    mhi_cntrl->dev_state = 
MHI_STATE_RESET;
cd457afb166705 Manivannan Sadhasivam 2020-02-20  481    
write_unlock_irq(&mhi_cntrl->pm_lock);
cd457afb166705 Manivannan Sadhasivam 2020-02-20  482  
cd457afb166705 Manivannan Sadhasivam 2020-02-20  483    /*
cd457afb166705 Manivannan Sadhasivam 2020-02-20  484     * If we're doing fbc, 
populate vector tables while
cd457afb166705 Manivannan Sadhasivam 2020-02-20  485     * device transitioning 
into MHI READY state
cd457afb166705 Manivannan Sadhasivam 2020-02-20  486     */
cd457afb166705 Manivannan Sadhasivam 2020-02-20  487    if 
(mhi_cntrl->fbc_download) {
cd457afb166705 Manivannan Sadhasivam 2020-02-20  488            ret = 
mhi_alloc_bhie_table(mhi_cntrl, &mhi_cntrl->fbc_image,
cd457afb166705 Manivannan Sadhasivam 2020-02-20  489                            
           firmware->size);
12e050c77be036 Bhaumik Bhatt         2020-11-09  490            if (ret) {
12e050c77be036 Bhaumik Bhatt         2020-11-09  491                    
release_firmware(firmware);
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  492                    
mhi_fw_load_finish(mhi_cntrl, MHI_FW_ERROR_FW_LOAD);
12e050c77be036 Bhaumik Bhatt         2020-11-09  493            }
cd457afb166705 Manivannan Sadhasivam 2020-02-20  494  
cd457afb166705 Manivannan Sadhasivam 2020-02-20  495            /* Load the 
firmware into BHIE vec table */
cd457afb166705 Manivannan Sadhasivam 2020-02-20  496            
mhi_firmware_copy(mhi_cntrl, firmware, mhi_cntrl->fbc_image);
cd457afb166705 Manivannan Sadhasivam 2020-02-20  497    }
cd457afb166705 Manivannan Sadhasivam 2020-02-20  498  
12e050c77be036 Bhaumik Bhatt         2020-11-09  499    
release_firmware(firmware);
12e050c77be036 Bhaumik Bhatt         2020-11-09  500  
bc1fbdf39b0c8e Thomas Weißschuh      2021-12-10  501    
mhi_fw_load_finish(mhi_cntrl, MHI_FW_LOAD_READY_STATE);
0a895f091ebd94 Bhaumik Bhatt         2020-05-21  502  }
cd457afb166705 Manivannan Sadhasivam 2020-02-20  503  

---
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