Hi Rishabh,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v4.16-rc7 next-20180327]
[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/Rishabh-Bhatnagar/SDM845-System-Cache-Driver/20180325-233519
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-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=arm 

All errors (new ones prefixed by >>):

>> make[4]: *** No rule to make target 'drivers/soc/qcom/llcc-core.c', needed 
>> by 'drivers/soc/qcom/llcc-core.o'.
   make[4]: *** [drivers/soc/qcom/llcc-slice.o] Error 1
   make[4]: Target '__build' not remade because of errors.
--
>> drivers/soc/qcom/llcc-slice.c:130: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:137: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:163: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:143: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:206: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:157: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:245: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:162: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:283: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:148: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:299: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:153: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:368: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:166: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:441: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:172:19: note: previous definition of 
'qcom_llcc_remove' was here
    static inline int qcom_llcc_remove(struct platform_device *pdev)
                      ^~~~~~~~~~~~~~~~

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

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

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