If the option '--mgmt' is present, the command 'list' will list all PMEM regions for management usage.
Signed-off-by: Haozhong Zhang <haozhong.zh...@intel.com> --- Cc: Ian Jackson <ian.jack...@eu.citrix.com> Cc: Wei Liu <wei.l...@citrix.com> --- tools/misc/xen-ndctl.c | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/tools/misc/xen-ndctl.c b/tools/misc/xen-ndctl.c index 1289a83dbe..058f8ccaf5 100644 --- a/tools/misc/xen-ndctl.c +++ b/tools/misc/xen-ndctl.c @@ -57,9 +57,10 @@ static const struct xen_ndctl_cmd { .name = "list", - .syntax = "[--all | --raw ]", + .syntax = "[--all | --raw | --mgmt]", .help = "--all: the default option, list all PMEM regions of following types.\n" - "--raw: list all PMEM regions detected by Xen hypervisor.\n", + "--raw: list all PMEM regions detected by Xen hypervisor.\n" + "--mgmt: list all PMEM regions for management usage.\n", .handler = handle_list, .need_xc = true, }, @@ -162,12 +163,46 @@ static int handle_list_raw(void) return rc; } +static int handle_list_mgmt(void) +{ + int rc; + unsigned int nr = 0, i; + xen_sysctl_nvdimm_pmem_mgmt_region_t *mgmt_list; + + rc = xc_nvdimm_pmem_get_regions_nr(xch, PMEM_REGION_TYPE_MGMT, &nr); + if ( rc ) + { + fprintf(stderr, "Cannot get the number of PMEM regions: %s.\n", + strerror(-rc)); + return rc; + } + + mgmt_list = malloc(nr * sizeof(*mgmt_list)); + if ( !mgmt_list ) + return -ENOMEM; + + rc = xc_nvdimm_pmem_get_regions(xch, PMEM_REGION_TYPE_MGMT, mgmt_list, &nr); + if ( rc ) + goto out; + + printf("Management PMEM regions:\n"); + for ( i = 0; i < nr; i++ ) + printf(" %u: MFN 0x%lx - 0x%lx, used 0x%lx\n", + i, mgmt_list[i].smfn, mgmt_list[i].emfn, mgmt_list[i].used_mfns); + + out: + free(mgmt_list); + + return rc; +} + static const struct list_handlers { const char *option; int (*handler)(void); } list_hndrs[] = { { "--raw", handle_list_raw }, + { "--mgmt", handle_list_mgmt }, }; static const unsigned int nr_list_hndrs = -- 2.14.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel