|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
From f833845ce72490e4c80b3ccc9972d5329f69a381 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
From: Dan Williams <dan.j.williams@intel.com>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Date: Sun, 23 Jan 2022 16:52:31 -0800
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Subject: [PATCH 094/217] cxl/list: Introduce cxl_filter_walk()
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
In preparation for introducing more objects and filtering options for 'cxl
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
list' introduce cxl_filter_walk() to centralize CXL topology walks. It
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
fills the same role as ndctl_filter_walk() as a way to distribute topology
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
interrogation beyond 'cxl list' to other commands, and serve as the
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
template for CXL object hierarchy in JSON output payloads.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Use the common dbg() logger for log messages.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Link: https://lore.kernel.org/r/164298555121.3021641.16127840206319352254.stgit@dwillia2-desk3.amr.corp.intel.com
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
---
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Documentation/cxl/cxl-list.txt | 2 +
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
cxl/filter.c | 50 ++++++++++++++++
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
cxl/filter.h | 18 +++++-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
cxl/list.c | 102 +++++++--------------------------
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
cxl/meson.build | 1 +
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
5 files changed, 90 insertions(+), 83 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
diff --git a/Documentation/cxl/cxl-list.txt b/Documentation/cxl/cxl-list.txt
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
index 686e0ea..4d409ba 100644
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
--- a/Documentation/cxl/cxl-list.txt
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+++ b/Documentation/cxl/cxl-list.txt
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -15,6 +15,8 @@ SYNOPSIS
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
Walk the CXL capable device hierarchy in the system and list all device
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
instances along with some of their major attributes.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+Options can be specified to limit the output to specific objects.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
EXAMPLE
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-------
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
----
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
diff --git a/cxl/filter.c b/cxl/filter.c
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
index 405b653..d1ff4b6 100644
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
--- a/cxl/filter.c
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+++ b/cxl/filter.c
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -1,10 +1,16 @@
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
// SPDX-License-Identifier: GPL-2.0
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
// Copyright (C) 2015-2020 Intel Corporation. All rights reserved.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+#include <errno.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include <stdio.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include <string.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include <stdlib.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+#include <util/log.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+#include <util/json.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include <cxl/libcxl.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+#include <json-c/json.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include "filter.h"
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+#include "json.h"
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
static const char *which_sep(const char *filter)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
{
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -48,3 +54,47 @@ struct cxl_memdev *util_cxl_memdev_filter(struct cxl_memdev *memdev,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
return memdev;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
return NULL;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+static unsigned long params_to_flags(struct cxl_filter_params *param)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+{
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ unsigned long flags = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (param->idle)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ flags |= UTIL_JSON_IDLE;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (param->human)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ flags |= UTIL_JSON_HUMAN;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (param->health)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ flags |= UTIL_JSON_HEALTH;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ return flags;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+int cxl_filter_walk(struct cxl_ctx *ctx, struct cxl_filter_params *p)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+{
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ struct json_object *jplatform = json_object_new_array();
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ unsigned long flags = params_to_flags(p);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ struct cxl_memdev *memdev;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (!jplatform) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ dbg(p, "platform object allocation failure\n");
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ return -ENOMEM;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ cxl_memdev_foreach(ctx, memdev) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ struct json_object *jdev;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (!util_cxl_memdev_filter(memdev, p->memdev_filter))
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ continue;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (p->memdevs) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ jdev = util_cxl_memdev_to_json(memdev, flags);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (!jdev) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ dbg(p, "memdev object allocation failure\n");
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ continue;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ json_object_array_add(jplatform, jdev);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ util_display_json_array(stdout, jplatform, flags);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ return 0;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
diff --git a/cxl/filter.h b/cxl/filter.h
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
index da80033..664b74b 100644
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
--- a/cxl/filter.h
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+++ b/cxl/filter.h
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -1,7 +1,21 @@
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
/* SPDX-License-Identifier: GPL-2.0 */
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-/* Copyright (C) 2015-2020 Intel Corporation. All rights reserved. */
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+/* Copyright (C) 2021 Intel Corporation. All rights reserved. */
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#ifndef _CXL_UTIL_FILTER_H_
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#define _CXL_UTIL_FILTER_H_
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+#include <stdbool.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+#include <util/log.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+struct cxl_filter_params {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ const char *memdev_filter;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ bool memdevs;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ bool idle;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ bool human;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ bool health;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ struct log_ctx ctx;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+};
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
struct cxl_memdev *util_cxl_memdev_filter(struct cxl_memdev *memdev,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- const char *ident);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ const char *ident);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+int cxl_filter_walk(struct cxl_ctx *ctx, struct cxl_filter_params *param);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#endif /* _CXL_UTIL_FILTER_H_ */
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
diff --git a/cxl/list.c b/cxl/list.c
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
index 7f7a04d..1730307 100644
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
--- a/cxl/list.c
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+++ b/cxl/list.c
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -9,60 +9,27 @@
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include <json-c/json.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include <cxl/libcxl.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include <util/parse-options.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-#include <ccan/array_size/array_size.h>
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-#include "json.h"
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
#include "filter.h"
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-static struct {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- bool memdevs;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- bool idle;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- bool human;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- bool health;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-} list;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-static unsigned long listopts_to_flags(void)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-{
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- unsigned long flags = 0;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (list.idle)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- flags |= UTIL_JSON_IDLE;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (list.human)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- flags |= UTIL_JSON_HUMAN;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (list.health)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- flags |= UTIL_JSON_HEALTH;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- return flags;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-static struct {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- const char *memdev;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-} param;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-static int did_fail;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-#define fail(fmt, ...) \
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-do { \
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- did_fail = 1; \
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- fprintf(stderr, "cxl-%s:%s:%d: " fmt, \
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- VERSION, __func__, __LINE__, ##__VA_ARGS__); \
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-} while (0)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+static struct cxl_filter_params param;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
static int num_list_flags(void)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
{
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- return list.memdevs;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ return param.memdevs;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
int cmd_list(int argc, const char **argv, struct cxl_ctx *ctx)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
{
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
const struct option options[] = {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- OPT_STRING('m', "memdev", ¶m.memdev, "memory device name",
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ OPT_STRING('m', "memdev", ¶m.memdev_filter, "memory device name",
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
"filter by CXL memory device name"),
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- OPT_BOOLEAN('M', "memdevs", &list.memdevs,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ OPT_BOOLEAN('M', "memdevs", ¶m.memdevs,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
"include CXL memory device info"),
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- OPT_BOOLEAN('i', "idle", &list.idle, "include idle devices"),
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- OPT_BOOLEAN('u', "human", &list.human,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ OPT_BOOLEAN('i', "idle", ¶m.idle, "include disabled devices"),
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ OPT_BOOLEAN('u', "human", ¶m.human,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
"use human friendly number formats "),
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- OPT_BOOLEAN('H', "health", &list.health,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ OPT_BOOLEAN('H', "health", ¶m.health,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
"include memory device health information "),
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
OPT_END(),
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
};
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -70,9 +37,6 @@ int cmd_list(int argc, const char **argv, struct cxl_ctx *ctx)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
"cxl list [<options>]",
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
NULL
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
};
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- struct json_object *jdevs = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- unsigned long list_flags;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- struct cxl_memdev *memdev;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
int i;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
argc = parse_options(argc, argv, options, u, 0);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -83,46 +47,22 @@ int cmd_list(int argc, const char **argv, struct cxl_ctx *ctx)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
usage_with_options(u, options);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
if (num_list_flags() == 0) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- /*
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- * TODO: We likely want to list regions by default if nothing
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- * was explicitly asked for. But until we have region support,
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- * print this error asking for devices explicitly.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- * Once region support is added, this TODO can be removed.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- */
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- error("please specify entities to list, e.g. using -m/-M\n");
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- usage_with_options(u, options);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- list_flags = listopts_to_flags();
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- cxl_memdev_foreach(ctx, memdev) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- struct json_object *jdev = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (!util_cxl_memdev_filter(memdev, param.memdev))
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- continue;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (list.memdevs) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (!jdevs) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- jdevs = json_object_new_array();
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (!jdevs) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- fail("\n");
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- continue;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
-
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- jdev = util_cxl_memdev_to_json(memdev, list_flags);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (!jdev) {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- fail("\n");
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- continue;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- }
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- json_object_array_add(jdevs, jdev);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ if (param.memdev_filter)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ param.memdevs = true;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ else {
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ /*
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ * TODO: We likely want to list regions by default if
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ * nothing was explicitly asked for. But until we have
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ * region support, print this error asking for devices
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ * explicitly. Once region support is added, this TODO
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ * can be removed.
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ */
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ error("please specify entities to list, e.g. using -m/-M\n");
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ usage_with_options(u, options);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (jdevs)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- util_display_json_array(stdout, jdevs, list_flags);
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ log_init(¶m.ctx, "cxl list", "CXL_LIST_LOG");
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- if (did_fail)
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- return -ENOMEM;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
- return 0;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ return cxl_filter_walk(ctx, ¶m;;
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
}
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
diff --git a/cxl/meson.build b/cxl/meson.build
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
index 805924b..fc7ee71 100644
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
--- a/cxl/meson.build
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+++ b/cxl/meson.build
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
@@ -3,6 +3,7 @@ cxl_src = [
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
'list.c',
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
'memdev.c',
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
'../util/json.c',
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
+ '../util/log.c',
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
'json.c',
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
'filter.c',
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
]
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
--
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
2.27.0
|
|
![](https://seccdn.libravatar.org/avatar/e9a507678aa95ef1a85b8d3939d526545e03c5d44f3a7d4e5247de29fff9c563?s=16&d=retro) |
e0018b |
|