]> Git Repo - linux.git/commitdiff
Merge branch 'for-6.8/cxl-cdat' into for-6.8/cxl
authorDan Williams <[email protected]>
Tue, 2 Jan 2024 19:03:04 +0000 (11:03 -0800)
committerDan Williams <[email protected]>
Tue, 2 Jan 2024 19:03:04 +0000 (11:03 -0800)
Pick up the CDAT parsing and QOS class infrastructure for v6.8.

1  2 
drivers/cxl/core/mbox.c
drivers/cxl/core/region.c
drivers/cxl/cxlmem.h

diff --combined drivers/cxl/core/mbox.c
index b86dbd25740c38e5e452e02200414a9a17f946c2,fbaa508ab24516a505e2a9cbacc7a3d48a9ea075..d51a1f250c8cdd9e314dd54331ac65dda6d12844
@@@ -63,7 -63,6 +63,7 @@@ static struct cxl_mem_command cxl_mem_c
        CXL_CMD(GET_SHUTDOWN_STATE, 0, 0x1, 0),
        CXL_CMD(SET_SHUTDOWN_STATE, 0x1, 0, 0),
        CXL_CMD(GET_SCAN_MEDIA_CAPS, 0x10, 0x4, 0),
 +      CXL_CMD(GET_TIMESTAMP, 0, 0x8, 0),
  };
  
  /*
@@@ -1405,6 -1404,8 +1405,8 @@@ struct cxl_memdev_state *cxl_memdev_sta
        mds->cxlds.reg_map.host = dev;
        mds->cxlds.reg_map.resource = CXL_RESOURCE_NONE;
        mds->cxlds.type = CXL_DEVTYPE_CLASSMEM;
+       INIT_LIST_HEAD(&mds->ram_perf_list);
+       INIT_LIST_HEAD(&mds->pmem_perf_list);
  
        return mds;
  }
index 0e88f1aed01847561b5ec86656754f278cfe58d1,3e817a6f94c6a4d2ac5113558a6c7633f7120821..57a5901d5a60548cae99a1b6eb4ddc991ee32351
@@@ -552,9 -552,8 +552,9 @@@ static int alloc_hpa(struct cxl_region 
        res = alloc_free_mem_region(cxlrd->res, size, SZ_256M,
                                    dev_name(&cxlr->dev));
        if (IS_ERR(res)) {
 -              dev_dbg(&cxlr->dev, "failed to allocate HPA: %ld\n",
 -                      PTR_ERR(res));
 +              dev_dbg(&cxlr->dev,
 +                      "HPA allocation error (%ld) for size:%pap in %s %pr\n",
 +                      PTR_ERR(res), &size, cxlrd->res->name, cxlrd->res);
                return PTR_ERR(res);
        }
  
@@@ -2084,13 -2083,13 +2084,13 @@@ static struct cxl_region *to_cxl_region
        return container_of(dev, struct cxl_region, dev);
  }
  
 -static void unregister_region(void *dev)
 +static void unregister_region(void *_cxlr)
  {
 -      struct cxl_region *cxlr = to_cxl_region(dev);
 +      struct cxl_region *cxlr = _cxlr;
        struct cxl_region_params *p = &cxlr->params;
        int i;
  
 -      device_del(dev);
 +      device_del(&cxlr->dev);
  
        /*
         * Now that region sysfs is shutdown, the parameter block is now
                detach_target(cxlr, i);
  
        cxl_region_iomem_release(cxlr);
 -      put_device(dev);
 +      put_device(&cxlr->dev);
  }
  
  static struct lock_class_key cxl_region_key;
@@@ -2468,10 -2467,6 +2468,6 @@@ int cxl_get_poison_by_endpoint(struct c
        struct cxl_poison_context ctx;
        int rc = 0;
  
-       rc = down_read_interruptible(&cxl_region_rwsem);
-       if (rc)
-               return rc;
        ctx = (struct cxl_poison_context) {
                .port = port
        };
                rc = cxl_get_poison_unmapped(to_cxl_memdev(port->uport_dev),
                                             &ctx);
  
-       up_read(&cxl_region_rwsem);
        return rc;
  }
  
diff --combined drivers/cxl/cxlmem.h
index 6a6becee402b98958724bafaace3bec359373678,205bc2a016b2ba8264710f15e955a029f0e196e3..1125d4f988e107e464d6ca40c11965935751ae36
@@@ -6,6 -6,7 +6,7 @@@
  #include <linux/cdev.h>
  #include <linux/uuid.h>
  #include <linux/rcuwait.h>
+ #include <linux/node.h>
  #include "cxl.h"
  
  /* CXL 2.0 8.2.8.5.1.1 Memory Device Status Register */
@@@ -391,6 -392,20 +392,20 @@@ enum cxl_devtype 
        CXL_DEVTYPE_CLASSMEM,
  };
  
+ /**
+  * struct cxl_dpa_perf - DPA performance property entry
+  * @list - list entry
+  * @dpa_range - range for DPA address
+  * @coord - QoS performance data (i.e. latency, bandwidth)
+  * @qos_class - QoS Class cookies
+  */
+ struct cxl_dpa_perf {
+       struct list_head list;
+       struct range dpa_range;
+       struct access_coordinate coord;
+       int qos_class;
+ };
  /**
   * struct cxl_dev_state - The driver device state
   *
@@@ -455,6 -470,8 +470,8 @@@ struct cxl_dev_state 
   * @security: security driver state info
   * @fw: firmware upload / activation state
   * @mbox_send: @dev specific transport for transmitting mailbox commands
+  * @ram_perf_list: performance data entries matched to RAM
+  * @pmem_perf_list: performance data entries matched to PMEM
   *
   * See CXL 3.0 8.2.9.8.2 Capacity Configuration and Label Storage for
   * details on capacity parameters.
@@@ -475,6 -492,10 +492,10 @@@ struct cxl_memdev_state 
        u64 active_persistent_bytes;
        u64 next_volatile_bytes;
        u64 next_persistent_bytes;
+       struct list_head ram_perf_list;
+       struct list_head pmem_perf_list;
        struct cxl_event_state event;
        struct cxl_poison_state poison;
        struct cxl_security_state security;
@@@ -503,7 -524,6 +524,7 @@@ enum cxl_opcode 
        CXL_MBOX_OP_GET_FW_INFO         = 0x0200,
        CXL_MBOX_OP_TRANSFER_FW         = 0x0201,
        CXL_MBOX_OP_ACTIVATE_FW         = 0x0202,
 +      CXL_MBOX_OP_GET_TIMESTAMP       = 0x0300,
        CXL_MBOX_OP_SET_TIMESTAMP       = 0x0301,
        CXL_MBOX_OP_GET_SUPPORTED_LOGS  = 0x0400,
        CXL_MBOX_OP_GET_LOG             = 0x0401,
This page took 0.086894 seconds and 4 git commands to generate.