mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
hw/mem/cxl-type3: Refactor ct3_build_cdat_entries_for_mr to take mr size instead of mr as argument
The function ct3_build_cdat_entries_for_mr only uses size of the passed memory region argument, refactor the function definition to make the passed arguments more specific. Reviewed-by: Gregory Price <gregory.price@memverge.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Fan Ni <fan.ni@samsung.com> Message-Id: <20240523174651.1089554-8-nifan.cxl@gmail.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
f4fd91af3a
commit
69e4fb569d
1 changed files with 9 additions and 6 deletions
|
@ -44,7 +44,7 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ct3_build_cdat_entries_for_mr(CDATSubHeader **cdat_table,
|
static void ct3_build_cdat_entries_for_mr(CDATSubHeader **cdat_table,
|
||||||
int dsmad_handle, MemoryRegion *mr,
|
int dsmad_handle, uint64_t size,
|
||||||
bool is_pmem, uint64_t dpa_base)
|
bool is_pmem, uint64_t dpa_base)
|
||||||
{
|
{
|
||||||
CDATDsmas *dsmas;
|
CDATDsmas *dsmas;
|
||||||
|
@ -63,7 +63,7 @@ static void ct3_build_cdat_entries_for_mr(CDATSubHeader **cdat_table,
|
||||||
.DSMADhandle = dsmad_handle,
|
.DSMADhandle = dsmad_handle,
|
||||||
.flags = is_pmem ? CDAT_DSMAS_FLAG_NV : 0,
|
.flags = is_pmem ? CDAT_DSMAS_FLAG_NV : 0,
|
||||||
.DPA_base = dpa_base,
|
.DPA_base = dpa_base,
|
||||||
.DPA_length = memory_region_size(mr),
|
.DPA_length = size,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* For now, no memory side cache, plausiblish numbers */
|
/* For now, no memory side cache, plausiblish numbers */
|
||||||
|
@ -132,7 +132,7 @@ static void ct3_build_cdat_entries_for_mr(CDATSubHeader **cdat_table,
|
||||||
*/
|
*/
|
||||||
.EFI_memory_type_attr = is_pmem ? 2 : 1,
|
.EFI_memory_type_attr = is_pmem ? 2 : 1,
|
||||||
.DPA_offset = 0,
|
.DPA_offset = 0,
|
||||||
.DPA_length = memory_region_size(mr),
|
.DPA_length = size,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Header always at start of structure */
|
/* Header always at start of structure */
|
||||||
|
@ -149,6 +149,7 @@ static int ct3_build_cdat_table(CDATSubHeader ***cdat_table, void *priv)
|
||||||
g_autofree CDATSubHeader **table = NULL;
|
g_autofree CDATSubHeader **table = NULL;
|
||||||
CXLType3Dev *ct3d = priv;
|
CXLType3Dev *ct3d = priv;
|
||||||
MemoryRegion *volatile_mr = NULL, *nonvolatile_mr = NULL;
|
MemoryRegion *volatile_mr = NULL, *nonvolatile_mr = NULL;
|
||||||
|
uint64_t vmr_size = 0, pmr_size = 0;
|
||||||
int dsmad_handle = 0;
|
int dsmad_handle = 0;
|
||||||
int cur_ent = 0;
|
int cur_ent = 0;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
@ -163,6 +164,7 @@ static int ct3_build_cdat_table(CDATSubHeader ***cdat_table, void *priv)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
len += CT3_CDAT_NUM_ENTRIES;
|
len += CT3_CDAT_NUM_ENTRIES;
|
||||||
|
vmr_size = memory_region_size(volatile_mr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ct3d->hostpmem) {
|
if (ct3d->hostpmem) {
|
||||||
|
@ -171,21 +173,22 @@ static int ct3_build_cdat_table(CDATSubHeader ***cdat_table, void *priv)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
len += CT3_CDAT_NUM_ENTRIES;
|
len += CT3_CDAT_NUM_ENTRIES;
|
||||||
|
pmr_size = memory_region_size(nonvolatile_mr);
|
||||||
}
|
}
|
||||||
|
|
||||||
table = g_malloc0(len * sizeof(*table));
|
table = g_malloc0(len * sizeof(*table));
|
||||||
|
|
||||||
/* Now fill them in */
|
/* Now fill them in */
|
||||||
if (volatile_mr) {
|
if (volatile_mr) {
|
||||||
ct3_build_cdat_entries_for_mr(table, dsmad_handle++, volatile_mr,
|
ct3_build_cdat_entries_for_mr(table, dsmad_handle++, vmr_size,
|
||||||
false, 0);
|
false, 0);
|
||||||
cur_ent = CT3_CDAT_NUM_ENTRIES;
|
cur_ent = CT3_CDAT_NUM_ENTRIES;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nonvolatile_mr) {
|
if (nonvolatile_mr) {
|
||||||
uint64_t base = volatile_mr ? memory_region_size(volatile_mr) : 0;
|
uint64_t base = vmr_size;
|
||||||
ct3_build_cdat_entries_for_mr(&(table[cur_ent]), dsmad_handle++,
|
ct3_build_cdat_entries_for_mr(&(table[cur_ent]), dsmad_handle++,
|
||||||
nonvolatile_mr, true, base);
|
pmr_size, true, base);
|
||||||
cur_ent += CT3_CDAT_NUM_ENTRIES;
|
cur_ent += CT3_CDAT_NUM_ENTRIES;
|
||||||
}
|
}
|
||||||
assert(len == cur_ent);
|
assert(len == cur_ent);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue