1111
1212#include "core.h"
1313#include "trace.h"
14+ #include "mce.h"
1415
1516static bool cxl_raw_allow_all ;
1617
@@ -871,7 +872,7 @@ void cxl_event_trace_record(const struct cxl_memdev *cxlmd,
871872 }
872873
873874 if (trace_cxl_general_media_enabled () || trace_cxl_dram_enabled ()) {
874- u64 dpa , hpa = ULLONG_MAX ;
875+ u64 dpa , hpa = ULLONG_MAX , hpa_alias = ULLONG_MAX ;
875876 struct cxl_region * cxlr ;
876877
877878 /*
@@ -884,14 +885,20 @@ void cxl_event_trace_record(const struct cxl_memdev *cxlmd,
884885
885886 dpa = le64_to_cpu (evt -> media_hdr .phys_addr ) & CXL_DPA_MASK ;
886887 cxlr = cxl_dpa_to_region (cxlmd , dpa );
887- if (cxlr )
888+ if (cxlr ) {
889+ u64 cache_size = cxlr -> params .cache_size ;
890+
888891 hpa = cxl_dpa_to_hpa (cxlr , cxlmd , dpa );
892+ if (cache_size )
893+ hpa_alias = hpa - cache_size ;
894+ }
889895
890896 if (event_type == CXL_CPER_EVENT_GEN_MEDIA )
891897 trace_cxl_general_media (cxlmd , type , cxlr , hpa ,
892- & evt -> gen_media );
898+ hpa_alias , & evt -> gen_media );
893899 else if (event_type == CXL_CPER_EVENT_DRAM )
894- trace_cxl_dram (cxlmd , type , cxlr , hpa , & evt -> dram );
900+ trace_cxl_dram (cxlmd , type , cxlr , hpa , hpa_alias ,
901+ & evt -> dram );
895902 }
896903}
897904EXPORT_SYMBOL_NS_GPL (cxl_event_trace_record , "CXL" );
@@ -1451,6 +1458,7 @@ EXPORT_SYMBOL_NS_GPL(cxl_mailbox_init, "CXL");
14511458struct cxl_memdev_state * cxl_memdev_state_create (struct device * dev )
14521459{
14531460 struct cxl_memdev_state * mds ;
1461+ int rc ;
14541462
14551463 mds = devm_kzalloc (dev , sizeof (* mds ), GFP_KERNEL );
14561464 if (!mds ) {
@@ -1464,6 +1472,10 @@ struct cxl_memdev_state *cxl_memdev_state_create(struct device *dev)
14641472 mds -> cxlds .reg_map .resource = CXL_RESOURCE_NONE ;
14651473 mds -> cxlds .type = CXL_DEVTYPE_CLASSMEM ;
14661474
1475+ rc = devm_cxl_register_mce_notifier (dev , & mds -> mce_notifier );
1476+ if (rc )
1477+ return ERR_PTR (rc );
1478+
14671479 return mds ;
14681480}
14691481EXPORT_SYMBOL_NS_GPL (cxl_memdev_state_create , "CXL" );
0 commit comments