]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
cxl/core: Fold cxl_trace_hpa() into cxl_dpa_to_hpa()
authorAlison Schofield <alison.schofield@intel.com>
Wed, 3 Jul 2024 05:29:49 +0000 (22:29 -0700)
committerDave Jiang <dave.jiang@intel.com>
Thu, 11 Jul 2024 23:29:42 +0000 (16:29 -0700)
Although cxl_trace_hpa() is used to populate TRACE EVENTs with HPA
addresses the work it performs is a DPA to HPA translation not a
trace. Tidy up this naming by moving the minimal work done in
cxl_trace_hpa() into cxl_dpa_to_hpa() and use cxl_dpa_to_hpa()
for trace event callbacks.

Suggested-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Robert Richter <rrichter@amd.com>
Link: https://patch.msgid.link/452a9b0c525b774c72d9d5851515ffa928750132.1719980933.git.alison.schofield@intel.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/core.h
drivers/cxl/core/mbox.c
drivers/cxl/core/region.c
drivers/cxl/core/trace.h

index 625394486459ee87f842b34b1e10f3c5e3f2996a..72a506c9dbd0a8390fe1edc6fdfcd028a7a3ca4e 100644 (file)
@@ -28,12 +28,12 @@ int cxl_region_init(void);
 void cxl_region_exit(void);
 int cxl_get_poison_by_endpoint(struct cxl_port *port);
 struct cxl_region *cxl_dpa_to_region(const struct cxl_memdev *cxlmd, u64 dpa);
-u64 cxl_trace_hpa(struct cxl_region *cxlr, const struct cxl_memdev *cxlmd,
-                 u64 dpa);
+u64 cxl_dpa_to_hpa(struct cxl_region *cxlr, const struct cxl_memdev *cxlmd,
+                  u64 dpa);
 
 #else
-static inline u64
-cxl_trace_hpa(struct cxl_region *cxlr, const struct cxl_memdev *cxlmd, u64 dpa)
+static inline u64 cxl_dpa_to_hpa(struct cxl_region *cxlr,
+                                const struct cxl_memdev *cxlmd, u64 dpa)
 {
        return ULLONG_MAX;
 }
index 2626f3fff201d849c185bd6637600527321e0a33..eb0b08e5136f2b60160129df3aa7e738152d05f0 100644 (file)
@@ -878,7 +878,7 @@ void cxl_event_trace_record(const struct cxl_memdev *cxlmd,
                dpa = le64_to_cpu(evt->common.phys_addr) & CXL_DPA_MASK;
                cxlr = cxl_dpa_to_region(cxlmd, dpa);
                if (cxlr)
-                       hpa = cxl_trace_hpa(cxlr, cxlmd, dpa);
+                       hpa = cxl_dpa_to_hpa(cxlr, cxlmd, dpa);
 
                if (event_type == CXL_CPER_EVENT_GEN_MEDIA)
                        trace_cxl_general_media(cxlmd, type, cxlr, hpa,
index 3c2b6144be23cd1a6af9988f1e77b51fd4d421a5..237c28d5f2cc048e45759f464ff21f99d4cdeab6 100644 (file)
@@ -2749,15 +2749,25 @@ static bool cxl_is_hpa_in_range(u64 hpa, struct cxl_region *cxlr, int pos)
        return false;
 }
 
-static u64 cxl_dpa_to_hpa(u64 dpa,  struct cxl_region *cxlr,
-                         struct cxl_endpoint_decoder *cxled)
+u64 cxl_dpa_to_hpa(struct cxl_region *cxlr, const struct cxl_memdev *cxlmd,
+                  u64 dpa)
 {
        u64 dpa_offset, hpa_offset, bits_upper, mask_upper, hpa;
        struct cxl_region_params *p = &cxlr->params;
-       int pos = cxled->pos;
+       struct cxl_endpoint_decoder *cxled = NULL;
        u16 eig = 0;
        u8 eiw = 0;
+       int pos;
+
+       for (int i = 0; i < p->nr_targets; i++) {
+               cxled = p->targets[i];
+               if (cxlmd == cxled_to_memdev(cxled))
+                       break;
+       }
+       if (!cxled || cxlmd != cxled_to_memdev(cxled))
+               return ULLONG_MAX;
 
+       pos = cxled->pos;
        ways_to_eiw(p->interleave_ways, &eiw);
        granularity_to_eig(p->interleave_granularity, &eig);
 
@@ -2797,23 +2807,6 @@ static u64 cxl_dpa_to_hpa(u64 dpa,  struct cxl_region *cxlr,
        return hpa;
 }
 
-u64 cxl_trace_hpa(struct cxl_region *cxlr, const struct cxl_memdev *cxlmd,
-                 u64 dpa)
-{
-       struct cxl_region_params *p = &cxlr->params;
-       struct cxl_endpoint_decoder *cxled = NULL;
-
-       for (int i = 0; i <  p->nr_targets; i++) {
-               cxled = p->targets[i];
-               if (cxlmd == cxled_to_memdev(cxled))
-                       break;
-       }
-       if (!cxled || cxlmd != cxled_to_memdev(cxled))
-               return ULLONG_MAX;
-
-       return cxl_dpa_to_hpa(dpa, cxlr, cxled);
-}
-
 static struct lock_class_key cxl_pmem_region_key;
 
 static int cxl_pmem_region_alloc(struct cxl_region *cxlr)
index ee5cd4eb2f16ccfdb9163caa772eb91b3daf6caf..21b76e9c5c60c23db0b4ebb9aa924fdd35739f38 100644 (file)
@@ -704,8 +704,8 @@ TRACE_EVENT(cxl_poison,
                if (cxlr) {
                        __assign_str(region);
                        memcpy(__entry->uuid, &cxlr->params.uuid, 16);
-                       __entry->hpa = cxl_trace_hpa(cxlr, cxlmd,
-                                                    __entry->dpa);
+                       __entry->hpa = cxl_dpa_to_hpa(cxlr, cxlmd,
+                                                     __entry->dpa);
                } else {
                        __assign_str(region);
                        memset(__entry->uuid, 0, 16);