[PATCH v2 09/11] ACPI: APEI: share GHES CPER helpers

kernel test robot lkp at intel.com
Fri Feb 20 12:37:24 PST 2026


Hi Ahmed,

kernel test robot noticed the following build errors:

[auto build test ERROR on 8bf22c33e7a172fbc72464f4cc484d23a6b412ba]

url:    https://github.com/intel-lab-lkp/linux/commits/Ahmed-Tiba/ACPI-APEI-GHES-share-macros-via-a-private-header/20260220-214812
base:   8bf22c33e7a172fbc72464f4cc484d23a6b412ba
patch link:    https://lore.kernel.org/r/20260220-topics-ahmtib01-ras_ffh_arm_internal_review-v2-9-347fa2d7351b%40arm.com
patch subject: [PATCH v2 09/11] ACPI: APEI: share GHES CPER helpers
config: x86_64-rhel-9.4 (https://download.01.org/0day-ci/archive/20260220/202602202148.CB8O9os9-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260220/202602202148.CB8O9os9-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 at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602202148.CB8O9os9-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/acpi/apei/ghes_cper.c: In function 'ghes_handle_arm_hw_error':
>> drivers/acpi/apei/ghes_cper.c:261:34: error: implicit declaration of function 'FIELD_GET' [-Wimplicit-function-declaration]
     261 |                                  FIELD_GET(CPER_ARM_ERR_TYPE_MASK, err_info->type),
         |                                  ^~~~~~~~~


vim +/FIELD_GET +261 drivers/acpi/apei/ghes_cper.c

   202	
   203	bool ghes_handle_arm_hw_error(struct acpi_hest_generic_data *gdata,
   204					     int sev, bool sync)
   205	{
   206		struct cper_sec_proc_arm *err = acpi_hest_get_payload(gdata);
   207		int flags = sync ? MF_ACTION_REQUIRED : 0;
   208		int length = gdata->error_data_length;
   209		char error_type[120];
   210		bool queued = false;
   211		int sec_sev, i;
   212		char *p;
   213	
   214		sec_sev = ghes_severity(gdata->error_severity);
   215		if (length >= sizeof(*err)) {
   216			log_arm_hw_error(err, sec_sev);
   217		} else {
   218			pr_warn(FW_BUG "arm error length: %d\n", length);
   219			pr_warn(FW_BUG "length is too small\n");
   220			pr_warn(FW_BUG "firmware-generated error record is incorrect\n");
   221			return false;
   222		}
   223	
   224		if (sev != GHES_SEV_RECOVERABLE || sec_sev != GHES_SEV_RECOVERABLE)
   225			return false;
   226	
   227		p = (char *)(err + 1);
   228		length -= sizeof(err);
   229	
   230		for (i = 0; i < err->err_info_num; i++) {
   231			struct cper_arm_err_info *err_info;
   232			bool is_cache, has_pa;
   233	
   234			/* Ensure we have enough data for the error info header */
   235			if (length < sizeof(*err_info))
   236				break;
   237	
   238			err_info = (struct cper_arm_err_info *)p;
   239	
   240			/* Validate the claimed length before using it */
   241			length -= err_info->length;
   242			if (length < 0)
   243				break;
   244	
   245			is_cache = err_info->type & CPER_ARM_CACHE_ERROR;
   246			has_pa = (err_info->validation_bits & CPER_ARM_INFO_VALID_PHYSICAL_ADDR);
   247	
   248			/*
   249			 * The field (err_info->error_info & BIT(26)) is fixed to set to
   250			 * 1 in some old firmware of HiSilicon Kunpeng920. We assume that
   251			 * firmware won't mix corrected errors in an uncorrected section,
   252			 * and don't filter out 'corrected' error here.
   253			 */
   254			if (is_cache && has_pa) {
   255				queued = ghes_do_memory_failure(err_info->physical_fault_addr, flags);
   256				p += err_info->length;
   257				continue;
   258			}
   259	
   260			cper_bits_to_str(error_type, sizeof(error_type),
 > 261					 FIELD_GET(CPER_ARM_ERR_TYPE_MASK, err_info->type),
   262					 cper_proc_error_type_strs,
   263					 ARRAY_SIZE(cper_proc_error_type_strs));
   264	
   265			pr_warn_ratelimited(FW_WARN GHES_PFX
   266					    "Unhandled processor error type 0x%02x: %s%s\n",
   267					    err_info->type, error_type,
   268					    (err_info->type & ~CPER_ARM_ERR_TYPE_MASK) ? " with reserved bit(s)" : "");
   269			p += err_info->length;
   270		}
   271	
   272		return queued;
   273	}
   274	

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



More information about the linux-arm-kernel mailing list