Hi Jonathan, I love your patch! Yet something to improve: [auto build test ERROR on efi/next] [cannot apply to v5.4-rc7 next-20191112] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Jonathan-Cameron/efi-ras-CCIX-Memory-error-reporting/20191113-133322 base: https://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git next config: x86_64-randconfig-a004-201945 (attached as .config) compiler: gcc-7 (Debian 7.4.0-14) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot All errors (new ones prefixed by >>): ld: drivers/ras/ras.o: in function `perf_trace_ccix_memory_error_event': include/trace/../../include/ras/ras_event.h:352: undefined reference to `cper_ccix_mem_err_pack' ld: drivers/ras/ras.o: in function `trace_event_raw_event_ccix_memory_error_event': include/trace/../../include/ras/ras_event.h:352: undefined reference to `cper_ccix_mem_err_pack' ld: drivers/ras/ras.o: in function `trace_raw_output_ccix_memory_error_event': include/trace/../../include/ras/ras_event.h:352: undefined reference to `cper_ccix_mem_err_unpack' ld: include/trace/../../include/ras/ras_event.h:352: undefined reference to `cper_ccix_comp_type_str' ld: include/trace/../../include/ras/ras_event.h:352: undefined reference to `cper_severity_str' ld: drivers/ras/ras.o: in function `perf_trace_ccix_cache_error_event': >> include/trace/../../include/ras/ras_event.h:418: undefined reference to `cper_ccix_cache_err_pack' ld: drivers/ras/ras.o: in function `trace_raw_output_ccix_cache_error_event': >> include/trace/../../include/ras/ras_event.h:418: undefined reference to `cper_ccix_cache_err_unpack' ld: include/trace/../../include/ras/ras_event.h:418: undefined reference to `cper_ccix_comp_type_str' ld: include/trace/../../include/ras/ras_event.h:418: undefined reference to `cper_severity_str' ld: drivers/ras/ras.o: in function `trace_event_raw_event_ccix_cache_error_event': >> include/trace/../../include/ras/ras_event.h:418: undefined reference to `cper_ccix_cache_err_pack' vim +418 include/trace/../../include/ras/ras_event.h 341 342 /* 343 * CCIX PER log memory error trace event 344 * 345 * These events are generated when hardware detects a corrected or 346 * uncorrected event. 347 * 348 * Some elements of the record are not included 349 * - PER version (tracepoint should remain compatible across versions) 350 * - Multiple Error 351 */ > 352 TRACE_EVENT(ccix_memory_error_event, 353 TP_PROTO(struct cper_ccix_mem_error *mem, 354 u32 err_seq, 355 u8 sev, 356 u16 ven_len), 357 358 TP_ARGS(mem, err_seq, sev, ven_len), 359 360 TP_STRUCT__entry( 361 __field(u32, err_seq) 362 __field(u8, sev) 363 __field(u8, sevdetail) 364 __field(u8, source) 365 __field(u8, component) 366 __field(u64, pa) 367 __field(u8, pa_mask_lsb) 368 __field_struct(struct cper_ccix_mem_err_compact, data) 369 __field(u16, vendor_data_length) 370 __dynamic_array(u8, vendor_data, ven_len) 371 ), 372 373 TP_fast_assign( 374 __entry->err_seq = err_seq; 375 __entry->sev = sev; 376 __entry->sevdetail = 377 FIELD_GET(CCIX_PER_LOG_DW1_SEV_UE_M | 378 CCIX_PER_LOG_DW1_SEV_NO_COMM_M | 379 CCIX_PER_LOG_DW1_SEV_DEGRADED_M | 380 CCIX_PER_LOG_DW1_SEV_DEFFERABLE_M, 381 mem->ccix_header[1]); 382 if (mem->header.validation_bits & 0x1) 383 __entry->source = mem->header.source_id; 384 else 385 __entry->source = ~0; 386 __entry->component = FIELD_GET(CCIX_PER_LOG_DW1_COMP_TYPE_M, 387 mem->ccix_header[1]); 388 if (mem->ccix_header[1] & CCIX_PER_LOG_DW1_ADDR_VAL_M) { 389 __entry->pa = (u64)mem->ccix_header[2] << 32 | 390 (mem->ccix_header[3] & 0xfffffffc); 391 __entry->pa_mask_lsb = mem->ccix_header[4] & 0xff; 392 } else { 393 __entry->pa = ~0ull; 394 __entry->pa_mask_lsb = ~0; 395 } 396 __entry->vendor_data_length = ven_len ? ven_len - 4 : 0; 397 cper_ccix_mem_err_pack(&mem->mem_record, &__entry->data, 398 __entry->vendor_data_length, 399 __get_dynamic_array(vendor_data)); 400 ), 401 402 TP_printk("{%d} %s CCIX PER Memory Error in %s SevUE:%d SevNoComm:%d SevDegraded:%d SevDeferred:%d physical addr: %016llx (mask: %x) %s vendor:%s", 403 __entry->err_seq, 404 cper_severity_str(__entry->sev), 405 cper_ccix_comp_type_str(__entry->component), 406 __entry->sevdetail & BIT(0) ? 1 : 0, 407 __entry->sevdetail & BIT(1) ? 1 : 0, 408 __entry->sevdetail & BIT(2) ? 1 : 0, 409 __entry->sevdetail & BIT(3) ? 1 : 0, 410 __entry->pa, 411 __entry->pa_mask_lsb, 412 cper_ccix_mem_err_unpack(p, &__entry->data), 413 __print_hex(__get_dynamic_array(vendor_data), 414 __entry->vendor_data_length) 415 ) 416 ); 417 > 418 TRACE_EVENT(ccix_cache_error_event, 419 TP_PROTO(struct cper_ccix_cache_error *err, 420 u32 err_seq, 421 u8 sev, 422 u16 ven_len), 423 424 TP_ARGS(err, err_seq, sev, ven_len), 425 426 TP_STRUCT__entry( 427 __field(u32, err_seq) 428 __field(u8, sev) 429 __field(u8, sevdetail) 430 __field(u8, source) 431 __field(u8, component) 432 __field(u64, pa) 433 __field(u8, pa_mask_lsb) 434 __field_struct(struct cper_ccix_cache_err_compact, data) 435 __field(u16, vendor_data_length) 436 __dynamic_array(u8, vendor_data, ven_len) 437 ), 438 439 TP_fast_assign( 440 __entry->err_seq = err_seq; 441 442 __entry->sev = sev; 443 __entry->sevdetail = FIELD_GET(CCIX_PER_LOG_DW1_SEV_UE_M | 444 CCIX_PER_LOG_DW1_SEV_NO_COMM_M | 445 CCIX_PER_LOG_DW1_SEV_DEGRADED_M | 446 CCIX_PER_LOG_DW1_SEV_DEFFERABLE_M, 447 err->ccix_header[1]); 448 if (err->header.validation_bits & 0x1) 449 __entry->source = err->header.source_id; 450 else 451 __entry->source = ~0; 452 __entry->component = FIELD_GET(CCIX_PER_LOG_DW1_COMP_TYPE_M, 453 err->ccix_header[1]); 454 if (err->ccix_header[1] & CCIX_PER_LOG_DW1_ADDR_VAL_M) { 455 __entry->pa = (u64)err->ccix_header[2] << 32 | 456 (err->ccix_header[3] & 0xfffffffc); 457 __entry->pa_mask_lsb = err->ccix_header[4] & 0xff; 458 } else { 459 __entry->pa = ~0ull; 460 __entry->pa_mask_lsb = ~0; 461 } 462 463 __entry->vendor_data_length = ven_len ? ven_len - 4 : 0; 464 cper_ccix_cache_err_pack(&err->cache_record, &__entry->data, 465 __entry->vendor_data_length, 466 __get_dynamic_array(vendor_data)); 467 ), 468 469 TP_printk("{%d} %s CCIX PER Cache Error in %s SevUE:%d SevNoComm:%d SevDegraded:%d SevDeferred:%d physical addr: %016llx (mask: %x) %s vendor:%s", 470 __entry->err_seq, 471 cper_severity_str(__entry->sev), 472 cper_ccix_comp_type_str(__entry->component), 473 __entry->sevdetail & BIT(0) ? 1 : 0, 474 __entry->sevdetail & BIT(1) ? 1 : 0, 475 __entry->sevdetail & BIT(2) ? 1 : 0, 476 __entry->sevdetail & BIT(3) ? 1 : 0, 477 __entry->pa, 478 __entry->pa_mask_lsb, 479 cper_ccix_cache_err_unpack(p, &__entry->data), 480 __print_hex(__get_dynamic_array(vendor_data), 481 __entry->vendor_data_length) 482 ) 483 ); 484 /* 485 * memory-failure recovery action result event 486 * 487 * unsigned long pfn - Page Frame Number of the corrupted page 488 * int type - Page types of the corrupted page 489 * int result - Result of recovery action 490 */ 491 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation