From: kernel test robot <lkp@intel.com>
To: Priyanka Singh <priyanka.singh@nxp.com>,
york.sun@nxp.com, bp@alien8.de, mchehab@kernel.org,
tony.luck@intel.com, james.morse@arm.com, rric@kernel.org
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org,
priyanka.jain@nxp.com, jaiprakash.singh@nxp.com,
rajan.gupta@nxp.com, rajesh.bhagat@nxp.com,
Priyanka Singh <priyanka.singh@nxp.com>
Subject: Re: [PATCH 1/1] drivers: edac: Fix bad bit shift operations
Date: Tue, 12 Apr 2022 09:01:28 +0800 [thread overview]
Message-ID: <202204120845.og2FaL10-lkp@intel.com> (raw)
In-Reply-To: <20220411105159.10746-1-priyanka.singh@nxp.com>
Hi Priyanka,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on ras/edac-for-next]
[also build test WARNING on next-20220411]
[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/intel-lab-lkp/linux/commits/Priyanka-Singh/drivers-edac-Fix-bad-bit-shift-operations/20220411-190157
base: https://git.kernel.org/pub/scm/linux/kernel/git/ras/ras.git edac-for-next
config: arm64-buildonly-randconfig-r001-20220411 (https://download.01.org/0day-ci/archive/20220412/202204120845.og2FaL10-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c6e83f560f06cdfe8aa47b248d8bdc58f947274b)
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 arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# https://github.com/intel-lab-lkp/linux/commit/c686e26cdea24d78450aaaff268558ea6842cd31
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Priyanka-Singh/drivers-edac-Fix-bad-bit-shift-operations/20220411-190157
git checkout c686e26cdea24d78450aaaff268558ea6842cd31
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/edac/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> drivers/edac/fsl_ddr_edac.c:353:14: warning: data argument not used by format string [-Wformat-extra-args]
cap_low, syndrome ^ (1 << bad_ecc_bit));
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/edac/fsl_ddr_edac.h:20:55: note: expanded from macro 'fsl_mc_printk'
edac_mc_chipset_printk(mci, level, "FSL_DDR", fmt, ##arg)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
drivers/edac/edac_mc.h:55:60: note: expanded from macro 'edac_mc_chipset_printk'
printk(level "EDAC " prefix " MC%d: " fmt, mci->mc_idx, ##arg)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
include/linux/printk.h:446:60: note: expanded from macro 'printk'
#define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
include/linux/printk.h:418:19: note: expanded from macro 'printk_index_wrap'
_p_func(_fmt, ##__VA_ARGS__); \
~~~~ ^
1 warning generated.
vim +353 drivers/edac/fsl_ddr_edac.c
276
277 static void fsl_mc_check(struct mem_ctl_info *mci)
278 {
279 struct fsl_mc_pdata *pdata = mci->pvt_info;
280 struct csrow_info *csrow;
281 u32 bus_width;
282 u32 err_detect;
283 u32 syndrome;
284 u64 err_addr;
285 u32 pfn;
286 int row_index;
287 u32 cap_high;
288 u32 cap_low;
289 int bad_data_bit;
290 int bad_ecc_bit;
291
292 err_detect = ddr_in32(pdata->mc_vbase + FSL_MC_ERR_DETECT);
293 if (!err_detect)
294 return;
295
296 fsl_mc_printk(mci, KERN_ERR, "Err Detect Register: %#8.8x\n",
297 err_detect);
298
299 /* no more processing if not ECC bit errors */
300 if (!(err_detect & (DDR_EDE_SBE | DDR_EDE_MBE))) {
301 ddr_out32(pdata->mc_vbase + FSL_MC_ERR_DETECT, err_detect);
302 return;
303 }
304
305 syndrome = ddr_in32(pdata->mc_vbase + FSL_MC_CAPTURE_ECC);
306
307 /* Mask off appropriate bits of syndrome based on bus width */
308 bus_width = (ddr_in32(pdata->mc_vbase + FSL_MC_DDR_SDRAM_CFG) &
309 DSC_DBW_MASK) ? 32 : 64;
310 if (bus_width == 64)
311 syndrome &= 0xff;
312 else
313 syndrome &= 0xffff;
314
315 err_addr = make64(
316 ddr_in32(pdata->mc_vbase + FSL_MC_CAPTURE_EXT_ADDRESS),
317 ddr_in32(pdata->mc_vbase + FSL_MC_CAPTURE_ADDRESS));
318 pfn = err_addr >> PAGE_SHIFT;
319
320 for (row_index = 0; row_index < mci->nr_csrows; row_index++) {
321 csrow = mci->csrows[row_index];
322 if ((pfn >= csrow->first_page) && (pfn <= csrow->last_page))
323 break;
324 }
325
326 cap_high = ddr_in32(pdata->mc_vbase + FSL_MC_CAPTURE_DATA_HI);
327 cap_low = ddr_in32(pdata->mc_vbase + FSL_MC_CAPTURE_DATA_LO);
328
329 /*
330 * Analyze single-bit errors on 64-bit wide buses
331 * TODO: Add support for 32-bit wide buses
332 */
333 if ((err_detect & DDR_EDE_SBE) && (bus_width == 64)) {
334 sbe_ecc_decode(cap_high, cap_low, syndrome,
335 &bad_data_bit, &bad_ecc_bit);
336
337 if (bad_data_bit >= 0)
338 fsl_mc_printk(mci, KERN_ERR,
339 "Faulty Data bit: %d\n", bad_data_bit);
340 if (bad_ecc_bit >= 0)
341 fsl_mc_printk(mci, KERN_ERR,
342 "Faulty ECC bit: %d\n", bad_ecc_bit);
343 if ((bad_data_bit > 0 && bad_data_bit < 32) && bad_ecc_bit > 0) {
344 fsl_mc_printk(mci, KERN_ERR,
345 "Expected Data / ECC:\t%#8.8x_%08x / %#2.2x\n",
346 cap_high, cap_low ^ (1 << bad_data_bit),
347 syndrome ^ (1 << bad_ecc_bit));
348 }
349 if (bad_data_bit >= 32 && bad_ecc_bit > 0) {
350 fsl_mc_printk(mci, KERN_ERR,
351 "Expected Data / ECC:\t%#8.8x / %#2.2x\n",
352 cap_high ^ (1 << (bad_data_bit - 32)),
> 353 cap_low, syndrome ^ (1 << bad_ecc_bit));
354 }
355 }
356
357 fsl_mc_printk(mci, KERN_ERR,
358 "Captured Data / ECC:\t%#8.8x_%08x / %#2.2x\n",
359 cap_high, cap_low, syndrome);
360 fsl_mc_printk(mci, KERN_ERR, "Err addr: %#8.8llx\n", err_addr);
361 fsl_mc_printk(mci, KERN_ERR, "PFN: %#8.8x\n", pfn);
362
363 /* we are out of range */
364 if (row_index == mci->nr_csrows)
365 fsl_mc_printk(mci, KERN_ERR, "PFN out of range!\n");
366
367 if (err_detect & DDR_EDE_SBE)
368 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
369 pfn, err_addr & ~PAGE_MASK, syndrome,
370 row_index, 0, -1,
371 mci->ctl_name, "");
372
373 if (err_detect & DDR_EDE_MBE)
374 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
375 pfn, err_addr & ~PAGE_MASK, syndrome,
376 row_index, 0, -1,
377 mci->ctl_name, "");
378
379 ddr_out32(pdata->mc_vbase + FSL_MC_ERR_DETECT, err_detect);
380 }
381
--
0-DAY CI Kernel Test Service
https://01.org/lkp
prev parent reply other threads:[~2022-04-12 1:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-11 10:51 [PATCH 1/1] drivers: edac: Fix bad bit shift operations Priyanka Singh
2022-04-12 0:20 ` kernel test robot
2022-04-12 1:01 ` kernel test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202204120845.og2FaL10-lkp@intel.com \
--to=lkp@intel.com \
--cc=bp@alien8.de \
--cc=jaiprakash.singh@nxp.com \
--cc=james.morse@arm.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=mchehab@kernel.org \
--cc=priyanka.jain@nxp.com \
--cc=priyanka.singh@nxp.com \
--cc=rajan.gupta@nxp.com \
--cc=rajesh.bhagat@nxp.com \
--cc=rric@kernel.org \
--cc=tony.luck@intel.com \
--cc=york.sun@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.