lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202509170901.kyczSOdx-lkp@intel.com>
Date: Wed, 17 Sep 2025 09:32:07 +0800
From: kernel test robot <lkp@...el.com>
To: Ketan Patil <ketanp@...dia.com>, krzk@...nel.org,
	thierry.reding@...il.com, jonathanh@...dia.com
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
	linux-kernel@...r.kernel.org, linux-tegra@...r.kernel.org,
	Ketan Patil <ketanp@...dia.com>
Subject: Re: [PATCH 4/4] memory: tegra: Add MC error logging support for
 Tegra264

Hi Ketan,

kernel test robot noticed the following build warnings:

[auto build test WARNING on tegra/for-next]
[also build test WARNING on krzk-mem-ctrl/for-next linus/master v6.17-rc6 next-20250916]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ketan-Patil/memory-tegra-Group-mc-err-related-registers/20250916-132118
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git for-next
patch link:    https://lore.kernel.org/r/20250916051754.39250-5-ketanp%40nvidia.com
patch subject: [PATCH 4/4] memory: tegra: Add MC error logging support for Tegra264
config: arm64-allmodconfig (https://download.01.org/0day-ci/archive/20250917/202509170901.kyczSOdx-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250917/202509170901.kyczSOdx-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509170901.kyczSOdx-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/memory/tegra/tegra264.c:406:3: warning: variable 'addr_reg' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
     406 |                 default:
         |                 ^~~~~~~
   drivers/memory/tegra/tegra264.c:424:39: note: uninitialized use occurs here
     424 |                 addr_val = mc_ch_readl(mc, channel, addr_reg);
         |                                                     ^~~~~~~~
   drivers/memory/tegra/tegra264.c:332:44: note: initialize the variable 'addr_reg' to silence this warning
     332 |                 u32 status_reg, status1_reg = 0, addr_reg, addr_hi_reg = 0;
         |                                                          ^
         |                                                           = 0
>> drivers/memory/tegra/tegra264.c:406:3: warning: variable 'status_reg' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized]
     406 |                 default:
         |                 ^~~~~~~
   drivers/memory/tegra/tegra264.c:411:36: note: uninitialized use occurs here
     411 |                 value = mc_ch_readl(mc, channel, status_reg);
         |                                                  ^~~~~~~~~~
   drivers/memory/tegra/tegra264.c:332:17: note: initialize the variable 'status_reg' to silence this warning
     332 |                 u32 status_reg, status1_reg = 0, addr_reg, addr_hi_reg = 0;
         |                               ^
         |                                = 0
   2 warnings generated.


vim +/addr_reg +406 drivers/memory/tegra/tegra264.c

   324	
   325	static void mcf_log_fault(struct tegra_mc *mc, u32 channel, unsigned long mcf_ch_intstatus)
   326	{
   327		unsigned int bit;
   328	
   329		for_each_set_bit(bit, &mcf_ch_intstatus, 32) {
   330			const char *error = tegra264_mc_status_names[bit] ?: "unknown";
   331			u32 intmask = BIT(bit);
   332			u32 status_reg, status1_reg = 0, addr_reg, addr_hi_reg = 0;
   333			u32 addr_val, value, client_id, i, addr_hi_shift = 0, addr_hi_mask = 0, status1;
   334			const char *direction, *secure;
   335			const char *client = "unknown", *desc = "NA";
   336			phys_addr_t addr = 0;
   337			bool is_gsc = false, err_type_valid = false, err_rt_type_valid = false;
   338			u8 type;
   339			u32 mc_rw_bit = MC_ERR_STATUS_RW, mc_sec_bit = MC_ERR_STATUS_SECURITY;
   340	
   341			switch (intmask) {
   342			case MC_INT_DECERR_EMEM:
   343				status_reg = mc->soc->mc_regs->mc_err_status;
   344				addr_reg = mc->soc->mc_regs->mc_err_add;
   345				addr_hi_reg = mc->soc->mc_regs->mc_err_add_hi;
   346				err_type_valid = true;
   347				break;
   348	
   349			case MC_INT_SECURITY_VIOLATION:
   350				status_reg = mc->soc->mc_regs->mc_err_status;
   351				addr_reg = mc->soc->mc_regs->mc_err_add;
   352				addr_hi_reg = mc->soc->mc_regs->mc_err_add_hi;
   353				err_type_valid = true;
   354				break;
   355	
   356			case MC_INT_DECERR_VPR:
   357				status_reg = mc->soc->mc_regs->mc_err_vpr_status;
   358				addr_reg = mc->soc->mc_regs->mc_err_vpr_add;
   359				addr_hi_shift = MC_ERR_STATUS_ADR_HI_SHIFT;
   360				addr_hi_mask = mc->soc->mc_addr_hi_mask;
   361				break;
   362	
   363			case MC_INT_SECERR_SEC:
   364				status_reg = mc->soc->mc_regs->mc_err_sec_status;
   365				addr_reg = mc->soc->mc_regs->mc_err_sec_add;
   366				addr_hi_shift = MC_ERR_STATUS_ADR_HI_SHIFT;
   367				addr_hi_mask = mc->soc->mc_addr_hi_mask;
   368				break;
   369	
   370			case MC_INT_DECERR_MTS:
   371				status_reg = mc->soc->mc_regs->mc_err_mts_status;
   372				addr_reg = mc->soc->mc_regs->mc_err_mts_add;
   373				addr_hi_shift = MC_ERR_STATUS_ADR_HI_SHIFT;
   374				addr_hi_mask = mc->soc->mc_addr_hi_mask;
   375				break;
   376	
   377			case MC_INT_DECERR_GENERALIZED_CARVEOUT:
   378				status_reg = mc->soc->mc_regs->mc_err_gen_co_status;
   379				status1_reg = MC_ERR_GENERALIZED_CARVEOUT_STATUS_1_0;
   380				addr_reg = mc->soc->mc_regs->mc_err_gen_co_add;
   381				addr_hi_shift = MC_ERR_STATUS_GSC_ADR_HI_SHIFT;
   382				addr_hi_mask = MC_ERR_STATUS_GSC_ADR_HI_MASK;
   383				is_gsc = true;
   384				break;
   385	
   386			case MC_INT_DECERR_ROUTE_SANITY:
   387				status_reg = mc->soc->mc_regs->mc_err_route_status;
   388				addr_reg = mc->soc->mc_regs->mc_err_route_add;
   389				addr_hi_shift = MC_ERR_STATUS_RT_ADR_HI_SHIFT;
   390				addr_hi_mask = mc->soc->mc_addr_hi_mask;
   391				mc_sec_bit = MC_ERR_ROUTE_SANITY_SEC;
   392				mc_rw_bit = MC_ERR_ROUTE_SANITY_RW;
   393				err_rt_type_valid = true;
   394				break;
   395	
   396			case MC_INT_DECERR_ROUTE_SANITY_GIC_MSI:
   397				status_reg = mc->soc->mc_regs->mc_err_route_status;
   398				addr_reg = mc->soc->mc_regs->mc_err_route_add;
   399				addr_hi_shift = MC_ERR_STATUS_RT_ADR_HI_SHIFT;
   400				addr_hi_mask = mc->soc->mc_addr_hi_mask;
   401				mc_sec_bit = MC_ERR_ROUTE_SANITY_SEC;
   402				mc_rw_bit = MC_ERR_ROUTE_SANITY_RW;
   403				err_rt_type_valid = true;
   404				break;
   405	
 > 406			default:
   407				dev_err_ratelimited(mc->dev, "Incorrect MC interrupt mask\n");
   408				break;
   409			}
   410	
   411			value = mc_ch_readl(mc, channel, status_reg);
   412			if (addr_hi_reg) {
   413				addr = mc_ch_readl(mc, channel, addr_hi_reg);
   414			} else {
   415				if (!is_gsc) {
   416					addr = ((value >> addr_hi_shift) & addr_hi_mask);
   417				} else {
   418					status1 = mc_ch_readl(mc, channel, status1_reg);
   419					addr = ((status1 >> addr_hi_shift) & addr_hi_mask);
   420				}
   421			}
   422	
   423			addr <<= 32;
   424			addr_val = mc_ch_readl(mc, channel, addr_reg);
   425			addr |= addr_val;
   426	
   427			if (value & mc_rw_bit)
   428				direction = "write";
   429			else
   430				direction = "read";
   431	
   432			if (value & mc_sec_bit)
   433				secure = "secure";
   434			else
   435				secure = "non-secure";
   436	
   437			client_id = value & mc->soc->client_id_mask;
   438			for (i = 0; i < mc->soc->num_clients; i++) {
   439				if (mc->soc->clients[i].id == client_id) {
   440					client = mc->soc->clients[i].name;
   441					break;
   442				}
   443			}
   444	
   445			if (err_type_valid) {
   446				type = (value & mc->soc->mc_err_status_type_mask) >>
   447						MC_ERR_STATUS_TYPE_SHIFT;
   448				desc = tegra264_mc_error_names[type];
   449			} else if (err_rt_type_valid) {
   450				type = (value & MC_ERR_STATUS_RT_TYPE_MASK) >>
   451					MC_ERR_STATUS_RT_TYPE_SHIFT;
   452				desc = tegra_rt_error_names[type];
   453			}
   454	
   455			dev_err_ratelimited(mc->dev, "%s: %s %s @%pa: %s (%s)\n",
   456					    client, secure, direction, &addr, error, desc);
   457			if (is_gsc) {
   458				dev_err_ratelimited(mc->dev, "gsc_apr_id=%u gsc_co_apr_id=%u\n",
   459						    ((status1 >> ERR_GENERALIZED_APERTURE_ID_SHIFT)
   460						    & ERR_GENERALIZED_APERTURE_ID_MASK),
   461						    ((status1 >> ERR_GENERALIZED_CARVEOUT_APERTURE_ID_SHIFT)
   462						    & ERR_GENERALIZED_CARVEOUT_APERTURE_ID_MASK));
   463			}
   464		}
   465	
   466		/* clear interrupts */
   467		mc_ch_writel(mc, channel, mcf_ch_intstatus, MCF_INTSTATUS_0);
   468	}
   469	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ