summaryrefslogtreecommitdiff
path: root/drivers/cxl/cxl.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2022-04-25 21:43:44 +0300
committerDan Williams <dan.j.williams@intel.com>2022-07-25 22:18:06 +0300
commit23a22cd1c98be518774fe7f7e8a5203af050525a (patch)
tree023f45987cce6345b543ac60ecdb32654735a1db /drivers/cxl/cxl.h
parent80d10a6cee05029cae9d9d6e8ddb799ea6d01e0c (diff)
downloadlinux-23a22cd1c98be518774fe7f7e8a5203af050525a.tar.xz
cxl/region: Allocate HPA capacity to regions
After a region's interleave parameters (ways and granularity) are set, add a way for regions to allocate HPA (host physical address space) from the free capacity in their parent root-decoder. The allocator for this capacity reuses the 'struct resource' based allocator used for CONFIG_DEVICE_PRIVATE. Once the tuple of "ways, granularity, [uuid], and size" is set the region configuration transitions to the CXL_CONFIG_INTERLEAVE_ACTIVE state which is a precursor to allowing endpoint decoders to be added to a region. Co-developed-by: Ben Widawsky <bwidawsk@kernel.org> Signed-off-by: Ben Widawsky <bwidawsk@kernel.org> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Link: https://lore.kernel.org/r/165784335630.1758207.420216490941955417.stgit@dwillia2-xfh.jf.intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/cxl/cxl.h')
-rw-r--r--drivers/cxl/cxl.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
index e36f7577978b..9518b57c19b6 100644
--- a/drivers/cxl/cxl.h
+++ b/drivers/cxl/cxl.h
@@ -341,6 +341,7 @@ enum cxl_config_state {
* @uuid: unique id for persistent regions
* @interleave_ways: number of endpoints in the region
* @interleave_granularity: capacity each endpoint contributes to a stripe
+ * @res: allocated iomem capacity for this region
*
* State transitions are protected by the cxl_region_rwsem
*/
@@ -349,6 +350,7 @@ struct cxl_region_params {
uuid_t uuid;
int interleave_ways;
int interleave_granularity;
+ struct resource *res;
};
/**