Message ID | 20210617221620.1904031-4-ira.weiny@intel.com |
---|---|
State | New, archived |
Headers | show |
Series | Query and use Partition Info | expand |
On Thu, 17 Jun 2021 15:16:20 -0700 <ira.weiny@intel.com> wrote: > From: Ira Weiny <ira.weiny@intel.com> > > CXL spec defines the volatile DPA range to be 0 to Volatile memory size. > It further defines the persistent DPA range to follow directly after the > end of the Volatile DPA through the persistent memory size. Reference would be good for anyone sanity checking against the spec. I think it's Table 176 that says this. > Essentially > > Volatile DPA range = [0, Volatile size) > Persistent DPA range = [Volatile size, Volatile size + Persistent size) > > Adjust the pmem_range start to reflect this and remote the TODO. remove > > Signed-off-by: Ira Weiny <ira.weiny@intel.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > drivers/cxl/pci.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c > index 341885345b53..a1fd7923dfb9 100644 > --- a/drivers/cxl/pci.c > +++ b/drivers/cxl/pci.c > @@ -1635,8 +1635,9 @@ static int cxl_mem_create_range_info(struct cxl_mem *cxlm) > if (cxlm->partition_align_bytes == 0) { > cxlm->ram_range.start = 0; > cxlm->ram_range.end = cxlm->volatile_only_bytes - 1; > - cxlm->pmem_range.start = 0; > - cxlm->pmem_range.end = cxlm->persistent_only_bytes - 1; > + cxlm->pmem_range.start = cxlm->volatile_only_bytes; > + cxlm->pmem_range.end = cxlm->volatile_only_bytes + > + cxlm->persistent_only_bytes - 1; > return 0; > } > > @@ -1660,15 +1661,12 @@ static int cxl_mem_create_range_info(struct cxl_mem *cxlm) > cxlm->next_volatile_bytes, > cxlm->next_persistent_bytes); > > - /* > - * TODO: enumerate DPA map, as 'ram' and 'pmem' do not alias. > - * For now, only the capacity is exported in sysfs > - */ > cxlm->ram_range.start = 0; > cxlm->ram_range.end = cxlm->active_volatile_bytes - 1; > > - cxlm->pmem_range.start = 0; > - cxlm->pmem_range.end = cxlm->active_persistent_bytes - 1; > + cxlm->pmem_range.start = cxlm->active_volatile_bytes; > + cxlm->pmem_range.end = cxlm->active_volatile_bytes + > + cxlm->active_persistent_bytes - 1; > > return 0; > }
diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c index 341885345b53..a1fd7923dfb9 100644 --- a/drivers/cxl/pci.c +++ b/drivers/cxl/pci.c @@ -1635,8 +1635,9 @@ static int cxl_mem_create_range_info(struct cxl_mem *cxlm) if (cxlm->partition_align_bytes == 0) { cxlm->ram_range.start = 0; cxlm->ram_range.end = cxlm->volatile_only_bytes - 1; - cxlm->pmem_range.start = 0; - cxlm->pmem_range.end = cxlm->persistent_only_bytes - 1; + cxlm->pmem_range.start = cxlm->volatile_only_bytes; + cxlm->pmem_range.end = cxlm->volatile_only_bytes + + cxlm->persistent_only_bytes - 1; return 0; } @@ -1660,15 +1661,12 @@ static int cxl_mem_create_range_info(struct cxl_mem *cxlm) cxlm->next_volatile_bytes, cxlm->next_persistent_bytes); - /* - * TODO: enumerate DPA map, as 'ram' and 'pmem' do not alias. - * For now, only the capacity is exported in sysfs - */ cxlm->ram_range.start = 0; cxlm->ram_range.end = cxlm->active_volatile_bytes - 1; - cxlm->pmem_range.start = 0; - cxlm->pmem_range.end = cxlm->active_persistent_bytes - 1; + cxlm->pmem_range.start = cxlm->active_volatile_bytes; + cxlm->pmem_range.end = cxlm->active_volatile_bytes + + cxlm->active_persistent_bytes - 1; return 0; }