cxl: Move QoS class to be calculated from the nearest CPU
authorDave Jiang <dave.jiang@intel.com>
Fri, 8 Mar 2024 21:59:26 +0000 (14:59 -0700)
committerDan Williams <dan.j.williams@intel.com>
Tue, 12 Mar 2024 19:34:11 +0000 (12:34 -0700)
Retrieve the qos_class (QTG ID) using the access coordinates from the
nearest CPU rather than the nearst initiator that may not be a CPU.
This may be the more appropriate number that applications care about.

For most cases, access0 and access1 have the same values.

Link: https://lore.kernel.org/linux-cxl/20240112113023.00006c50@Huawei.com/
Suggested-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/20240308220055.2172956-8-dave.jiang@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/core/cdat.c

index 04dfda9d1f1b4c60a45faf355e012354c4e50cee..02e97a90a43c35220def4e49dfe6649e3ce3fa70 100644 (file)
@@ -198,12 +198,12 @@ static int cxl_port_perf_data_calculate(struct cxl_port *port,
                 * coordinates in order to allow calculation of access class
                 * 0 and 1 for region later.
                 */
-               cxl_coordinates_combine(&coord[ACCESS_COORDINATE_LOCAL],
-                                       &coord[ACCESS_COORDINATE_LOCAL],
+               cxl_coordinates_combine(&coord[ACCESS_COORDINATE_CPU],
+                                       &coord[ACCESS_COORDINATE_CPU],
                                        &dent->coord);
                dent->entries = 1;
                rc = cxl_root->ops->qos_class(cxl_root,
-                                             &coord[ACCESS_COORDINATE_LOCAL],
+                                             &coord[ACCESS_COORDINATE_CPU],
                                              1, &qos_class);
                if (rc != 1)
                        continue;