Hi Channagoud,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.15 next-20180126]
[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/Channagoud-Kadabi/SDM845-System-Cache-Driver/20180119-223446
config: arm64-allmodconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

>> drivers/soc/qcom/llcc-slice.c:138:25: error: redefinition of 
>> 'llcc_slice_getd'
    struct llcc_slice_desc *llcc_slice_getd(struct device *dev, const char 
*name)
                            ^~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:111:39: note: previous definition of 
'llcc_slice_getd' was here
    static inline struct llcc_slice_desc *llcc_slice_getd(struct device *dev,
                                          ^~~~~~~~~~~~~~~
>> drivers/soc/qcom/llcc-slice.c:171:6: error: redefinition of 'llcc_slice_putd'
    void llcc_slice_putd(struct llcc_slice_desc *desc)
         ^~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:117:20: note: previous definition of 
'llcc_slice_putd' was here
    static inline void llcc_slice_putd(struct llcc_slice_desc *desc)
                       ^~~~~~~~~~~~~~~
>> drivers/soc/qcom/llcc-slice.c:214:5: error: redefinition of 
>> 'llcc_slice_activate'
    int llcc_slice_activate(struct llcc_slice_desc *desc)
        ^~~~~~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:131:19: note: previous definition of 
'llcc_slice_activate' was here
    static inline int llcc_slice_activate(struct llcc_slice_desc *desc)
                      ^~~~~~~~~~~~~~~~~~~
>> drivers/soc/qcom/llcc-slice.c:257:5: error: redefinition of 
>> 'llcc_slice_deactivate'
    int llcc_slice_deactivate(struct llcc_slice_desc *desc)
        ^~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:136:19: note: previous definition of 
'llcc_slice_deactivate' was here
    static inline int llcc_slice_deactivate(struct llcc_slice_desc *desc)
                      ^~~~~~~~~~~~~~~~~~~~~
>> drivers/soc/qcom/llcc-slice.c:299:5: error: redefinition of 
>> 'llcc_get_slice_id'
    int llcc_get_slice_id(struct llcc_slice_desc *desc)
        ^~~~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:122:19: note: previous definition of 
'llcc_get_slice_id' was here
    static inline int llcc_get_slice_id(struct llcc_slice_desc *desc)
                      ^~~~~~~~~~~~~~~~~
>> drivers/soc/qcom/llcc-slice.c:315:8: error: redefinition of 
>> 'llcc_get_slice_size'
    size_t llcc_get_slice_size(struct llcc_slice_desc *desc)
           ^~~~~~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:127:22: note: previous definition of 
'llcc_get_slice_size' was here
    static inline size_t llcc_get_slice_size(struct llcc_slice_desc *desc)
                         ^~~~~~~~~~~~~~~~~~~
>> drivers/soc/qcom/llcc-slice.c:384:5: error: redefinition of 'qcom_llcc_probe'
    int qcom_llcc_probe(struct platform_device *pdev,
        ^~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:140:19: note: previous definition of 
'qcom_llcc_probe' was here
    static inline int qcom_llcc_probe(struct platform_device *pdev,
                      ^~~~~~~~~~~~~~~
>> drivers/soc/qcom/llcc-slice.c:443:5: error: redefinition of 
>> 'qcom_llcc_remove'
    int qcom_llcc_remove(struct platform_device *pdev)
        ^~~~~~~~~~~~~~~~
   In file included from drivers/soc/qcom/llcc-slice.c:28:0:
   include/linux/soc/qcom/llcc-qcom.h:146:19: note: previous definition of 
'qcom_llcc_remove' was here
    static inline int qcom_llcc_remove(struct platform_device *pdev)
                      ^~~~~~~~~~~~~~~~

vim +/llcc_slice_getd +138 drivers/soc/qcom/llcc-slice.c

   129  
   130  /**
   131   * llcc_slice_getd - get llcc slice descriptor
   132   * @dev: Device pointer of the client
   133   * @name: Name of the use case
   134   *
   135   * A pointer to llcc slice descriptor will be returned on success and
   136   * and error pointer is returned on failure
   137   */
 > 138  struct llcc_slice_desc *llcc_slice_getd(struct device *dev, const char 
 > *name)
   139  {
   140          struct device_node *np = dev->of_node;
   141          int index = 0;
   142          const char *slice_name;
   143          struct property *prop;
   144  
   145          if (!np) {
   146                  dev_err(dev, "%s() currently only supports DT\n", 
__func__);
   147                  return ERR_PTR(-ENOENT);
   148          }
   149  
   150          if (!of_get_property(np, "cache-slice-names", NULL)) {
   151                  dev_err(dev,
   152                          "%s() requires a \"cache-slice-names\" 
property\n",
   153                          __func__);
   154                  return ERR_PTR(-ENOENT);
   155          }
   156  
   157          of_property_for_each_string(np, "cache-slice-names", prop, 
slice_name) {
   158                  if (!strcmp(name, slice_name))
   159                          break;
   160                  index++;
   161          }
   162  
   163          return llcc_slice_get_entry(dev, index);
   164  }
   165  EXPORT_SYMBOL(llcc_slice_getd);
   166  
   167  /**
   168   * llcc_slice_putd - llcc slice descritpor
   169   * @desc: Pointer to llcc slice descriptor
   170   */
 > 171  void llcc_slice_putd(struct llcc_slice_desc *desc)
   172  {
   173          kfree(desc);
   174  }
   175  EXPORT_SYMBOL(llcc_slice_putd);
   176  
   177  static int llcc_update_act_ctrl(struct llcc_drv_data *drv, u32 sid,
   178                                  u32 act_ctrl_reg_val, u32 status)
   179  {
   180          u32 act_ctrl_reg;
   181          u32 status_reg;
   182          u32 slice_status;
   183          unsigned long timeout;
   184  
   185          act_ctrl_reg = drv->b_off + LLCC_TRP_ACT_CTRLn(sid);
   186          status_reg = drv->b_off + LLCC_TRP_STATUSn(sid);
   187  
   188          regmap_write(drv->llcc_map, act_ctrl_reg, act_ctrl_reg_val);
   189  
   190          /* Make sure the activate trigger is applied before clearing it 
*/
   191          mb();
   192  
   193          /* Clear the ACTIVE trigger */
   194          act_ctrl_reg_val &= ~ACT_CTRL_ACT_TRIG;
   195          regmap_write(drv->llcc_map, act_ctrl_reg, act_ctrl_reg_val);
   196  
   197          timeout = jiffies + usecs_to_jiffies(LLCC_STATUS_READ_DELAY);
   198          while (time_before(jiffies, timeout)) {
   199                  regmap_read(drv->llcc_map, status_reg, &slice_status);
   200                  if (!(slice_status & status))
   201                          return 0;
   202          }
   203  
   204          return -ETIMEDOUT;
   205  }
   206  
   207  /**
   208   * llcc_slice_activate - Activate the llcc slice
   209   * @desc: Pointer to llcc slice descriptor
   210   *
   211   * A value zero will be returned on success and a negative errno will
   212   * be returned in error cases
   213   */
 > 214  int llcc_slice_activate(struct llcc_slice_desc *desc)
   215  {
   216          int rc = -EINVAL;
   217          u32 act_ctrl_val;
   218          struct llcc_drv_data *drv;
   219  
   220          if (desc == NULL) {
   221                  pr_err("Input descriptor supplied is invalid\n");
   222                  return rc;
   223          }
   224  
   225          drv = dev_get_drvdata(desc->dev);
   226          if (!drv) {
   227                  pr_err("Invalid device pointer in the desc\n");
   228                  return rc;
   229          }
   230  
   231          mutex_lock(&drv->slice_mutex);
   232          if (test_bit(desc->llcc_slice_id, drv->llcc_slice_map)) {
   233                  mutex_unlock(&drv->slice_mutex);
   234                  return 0;
   235          }
   236  
   237          act_ctrl_val = ACT_CTRL_OPCODE_ACTIVATE << 
ACT_CTRL_OPCODE_SHIFT;
   238          act_ctrl_val |= ACT_CTRL_ACT_TRIG;
   239  
   240          rc = llcc_update_act_ctrl(drv, desc->llcc_slice_id, 
act_ctrl_val,
   241                                    DEACTIVATE);
   242  
   243          __set_bit(desc->llcc_slice_id, drv->llcc_slice_map);
   244          mutex_unlock(&drv->slice_mutex);
   245  
   246          return rc;
   247  }
   248  EXPORT_SYMBOL(llcc_slice_activate);
   249  
   250  /**
   251   * llcc_slice_deactivate - Deactivate the llcc slice
   252   * @desc: Pointer to llcc slice descriptor
   253   *
   254   * A value zero will be returned on success and a negative errno will
   255   * be returned in error cases
   256   */
 > 257  int llcc_slice_deactivate(struct llcc_slice_desc *desc)
   258  {
   259          u32 act_ctrl_val;
   260          int rc = -EINVAL;
   261          struct llcc_drv_data *drv;
   262  
   263          if (desc == NULL) {
   264                  pr_err("Input descriptor supplied is invalid\n");
   265                  return rc;
   266          }
   267  
   268          drv = dev_get_drvdata(desc->dev);
   269          if (!drv) {
   270                  pr_err("Invalid device pointer in the desc\n");
   271                  return rc;
   272          }
   273  
   274          mutex_lock(&drv->slice_mutex);
   275          if (!test_bit(desc->llcc_slice_id, drv->llcc_slice_map)) {
   276                  mutex_unlock(&drv->slice_mutex);
   277                  return 0;
   278          }
   279          act_ctrl_val = ACT_CTRL_OPCODE_DEACTIVATE << 
ACT_CTRL_OPCODE_SHIFT;
   280          act_ctrl_val |= ACT_CTRL_ACT_TRIG;
   281  
   282          rc = llcc_update_act_ctrl(drv, desc->llcc_slice_id, 
act_ctrl_val,
   283                                    ACTIVATE);
   284  
   285          __clear_bit(desc->llcc_slice_id, drv->llcc_slice_map);
   286          mutex_unlock(&drv->slice_mutex);
   287  
   288          return rc;
   289  }
   290  EXPORT_SYMBOL(llcc_slice_deactivate);
   291  
   292  /**
   293   * llcc_get_slice_id - return the slice id
   294   * @desc: Pointer to llcc slice descriptor
   295   *
   296   * A positive value will be returned on success and a negative errno 
will
   297   * be returned on error
   298   */
 > 299  int llcc_get_slice_id(struct llcc_slice_desc *desc)
   300  {
   301          if (!desc)
   302                  return -EINVAL;
   303  
   304          return desc->llcc_slice_id;
   305  }
   306  EXPORT_SYMBOL(llcc_get_slice_id);
   307  
   308  /**
   309   * llcc_get_slice_size - return the slice id
   310   * @desc: Pointer to llcc slice descriptor
   311   *
   312   * A positive value will be returned on success and zero will returned 
on
   313   * error
   314   */
 > 315  size_t llcc_get_slice_size(struct llcc_slice_desc *desc)
   316  {
   317          if (!desc)
   318                  return 0;
   319  
   320          return desc->llcc_slice_size;
   321  }
   322  EXPORT_SYMBOL(llcc_get_slice_size);
   323  

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

Attachment: .config.gz
Description: application/gzip

Reply via email to