From: Igor Mammedov <imammedo@redhat.com>
To: Robert Hoo <robert.hu@linux.intel.com>
Cc: mst@redhat.com, xiaoguangrong.eric@gmail.com,
qemu-devel@nongnu.org, robert.hu@intel.com,
Jingqi Liu <jingqi.liu@intel.com>
Subject: Re: [PATCH] acpi/nvdimm: Define trace events for NVDIMM and substitute nvdimm_debug()
Date: Thu, 7 Jul 2022 11:21:01 +0200 [thread overview]
Message-ID: <20220707112101.259acc3a@redhat.com> (raw)
In-Reply-To: <20220704085852.330005-1-robert.hu@linux.intel.com>
On Mon, 4 Jul 2022 16:58:52 +0800
Robert Hoo <robert.hu@linux.intel.com> wrote:
> Signed-off-by: Robert Hoo <robert.hu@linux.intel.com>
> Reviewed-by: Jingqi Liu <jingqi.liu@intel.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> This is separated from patch set
> https://lore.kernel.org/qemu-devel/20220616143542.3e049a13@redhat.com/
>
> hw/acpi/nvdimm.c | 35 ++++++++++++++++-------------------
> hw/acpi/trace-events | 13 +++++++++++++
> include/hw/mem/nvdimm.h | 8 --------
> 3 files changed, 29 insertions(+), 27 deletions(-)
>
> diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
> index 5f85b16327..31e46df0bd 100644
> --- a/hw/acpi/nvdimm.c
> +++ b/hw/acpi/nvdimm.c
> @@ -35,6 +35,7 @@
> #include "hw/nvram/fw_cfg.h"
> #include "hw/mem/nvdimm.h"
> #include "qemu/nvdimm-utils.h"
> +#include "trace.h"
>
> /*
> * define Byte Addressable Persistent Memory (PM) Region according to
> @@ -550,8 +551,8 @@ static void nvdimm_dsm_func_read_fit(NVDIMMState *state, NvdimmDsmIn *in,
>
> fit = fit_buf->fit;
>
> - nvdimm_debug("Read FIT: offset 0x%x FIT size 0x%x Dirty %s.\n",
> - read_fit->offset, fit->len, fit_buf->dirty ? "Yes" : "No");
> + trace_acpi_nvdimm_read_fit(read_fit->offset, fit->len,
> + fit_buf->dirty ? "Yes" : "No");
>
> if (read_fit->offset > fit->len) {
> func_ret_status = NVDIMM_DSM_RET_STATUS_INVALID;
> @@ -658,7 +659,7 @@ static void nvdimm_dsm_label_size(NVDIMMDevice *nvdimm, hwaddr dsm_mem_addr)
> label_size = nvdimm->label_size;
> mxfer = nvdimm_get_max_xfer_label_size();
>
> - nvdimm_debug("label_size 0x%x, max_xfer 0x%x.\n", label_size, mxfer);
> + trace_acpi_nvdimm_label_info(label_size, mxfer);
>
> label_size_out.func_ret_status = cpu_to_le32(NVDIMM_DSM_RET_STATUS_SUCCESS);
> label_size_out.label_size = cpu_to_le32(label_size);
> @@ -674,20 +675,18 @@ static uint32_t nvdimm_rw_label_data_check(NVDIMMDevice *nvdimm,
> uint32_t ret = NVDIMM_DSM_RET_STATUS_INVALID;
>
> if (offset + length < offset) {
> - nvdimm_debug("offset 0x%x + length 0x%x is overflow.\n", offset,
> - length);
> + trace_acpi_nvdimm_label_overflow(offset, length);
> return ret;
> }
>
> if (nvdimm->label_size < offset + length) {
> - nvdimm_debug("position 0x%x is beyond label data (len = %" PRIx64 ").\n",
> - offset + length, nvdimm->label_size);
> + trace_acpi_nvdimm_label_oversize(offset + length, nvdimm->label_size);
> return ret;
> }
>
> if (length > nvdimm_get_max_xfer_label_size()) {
> - nvdimm_debug("length (0x%x) is larger than max_xfer (0x%x).\n",
> - length, nvdimm_get_max_xfer_label_size());
> + trace_acpi_nvdimm_label_xfer_exceed(length,
> + nvdimm_get_max_xfer_label_size());
> return ret;
> }
>
> @@ -710,8 +709,8 @@ static void nvdimm_dsm_get_label_data(NVDIMMDevice *nvdimm, NvdimmDsmIn *in,
> get_label_data->offset = le32_to_cpu(get_label_data->offset);
> get_label_data->length = le32_to_cpu(get_label_data->length);
>
> - nvdimm_debug("Read Label Data: offset 0x%x length 0x%x.\n",
> - get_label_data->offset, get_label_data->length);
> + trace_acpi_nvdimm_read_label(get_label_data->offset,
> + get_label_data->length);
>
> status = nvdimm_rw_label_data_check(nvdimm, get_label_data->offset,
> get_label_data->length);
> @@ -749,8 +748,8 @@ static void nvdimm_dsm_set_label_data(NVDIMMDevice *nvdimm, NvdimmDsmIn *in,
> set_label_data->offset = le32_to_cpu(set_label_data->offset);
> set_label_data->length = le32_to_cpu(set_label_data->length);
>
> - nvdimm_debug("Write Label Data: offset 0x%x length 0x%x.\n",
> - set_label_data->offset, set_label_data->length);
> + trace_acpi_nvdimm_write_label(set_label_data->offset,
> + set_label_data->length);
>
> status = nvdimm_rw_label_data_check(nvdimm, set_label_data->offset,
> set_label_data->length);
> @@ -821,7 +820,7 @@ static void nvdimm_dsm_device(NvdimmDsmIn *in, hwaddr dsm_mem_addr)
> static uint64_t
> nvdimm_dsm_read(void *opaque, hwaddr addr, unsigned size)
> {
> - nvdimm_debug("BUG: we never read _DSM IO Port.\n");
> + trace_acpi_nvdimm_read_io_port();
> return 0;
> }
>
> @@ -832,7 +831,7 @@ nvdimm_dsm_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
> NvdimmDsmIn *in;
> hwaddr dsm_mem_addr = val;
>
> - nvdimm_debug("dsm memory address 0x%" HWADDR_PRIx ".\n", dsm_mem_addr);
> + trace_acpi_nvdimm_dsm_mem_addr(dsm_mem_addr);
>
> /*
> * The DSM memory is mapped to guest address space so an evil guest
> @@ -846,12 +845,10 @@ nvdimm_dsm_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
> in->function = le32_to_cpu(in->function);
> in->handle = le32_to_cpu(in->handle);
>
> - nvdimm_debug("Revision 0x%x Handler 0x%x Function 0x%x.\n", in->revision,
> - in->handle, in->function);
> + trace_acpi_nvdimm_dsm_info(in->revision, in->handle, in->function);
>
> if (in->revision != 0x1 /* Currently we only support DSM Spec Rev1. */) {
> - nvdimm_debug("Revision 0x%x is not supported, expect 0x%x.\n",
> - in->revision, 0x1);
> + trace_acpi_nvdimm_invalid_revision(in->revision);
> nvdimm_dsm_no_payload(NVDIMM_DSM_RET_STATUS_UNSUPPORT, dsm_mem_addr);
> goto exit;
> }
> diff --git a/hw/acpi/trace-events b/hw/acpi/trace-events
> index 2250126a22..eb60b04f9b 100644
> --- a/hw/acpi/trace-events
> +++ b/hw/acpi/trace-events
> @@ -70,3 +70,16 @@ acpi_erst_reset_out(unsigned record_count) "record_count %u"
> acpi_erst_post_load(void *header, unsigned slot_size) "header: 0x%p slot_size %u"
> acpi_erst_class_init_in(void)
> acpi_erst_class_init_out(void)
> +
> +# nvdimm.c
> +acpi_nvdimm_read_fit(uint32_t offset, uint32_t len, const char *dirty) "Read FIT: offset 0x%" PRIx32 " FIT size 0x%" PRIx32 " Dirty %s"
> +acpi_nvdimm_label_info(uint32_t label_size, uint32_t mxfer) "label_size 0x%" PRIx32 ", max_xfer 0x%" PRIx32
> +acpi_nvdimm_label_overflow(uint32_t offset, uint32_t length) "offset 0x%" PRIx32 " + length 0x%" PRIx32 " is overflow"
> +acpi_nvdimm_label_oversize(uint32_t pos, uint64_t size) "position 0x%" PRIx32 " is beyond label data (len = %" PRIu64 ")"
> +acpi_nvdimm_label_xfer_exceed(uint32_t length, uint32_t max_xfer) "length (0x%" PRIx32 ") is larger than max_xfer (0x%" PRIx32 ")"
> +acpi_nvdimm_read_label(uint32_t offset, uint32_t length) "Read Label Data: offset 0x%" PRIx32 " length 0x%" PRIx32
> +acpi_nvdimm_write_label(uint32_t offset, uint32_t length) "Write Label Data: offset 0x%" PRIx32 " length 0x%" PRIx32
> +acpi_nvdimm_read_io_port(void) "Alert: we never read _DSM IO Port"
> +acpi_nvdimm_dsm_mem_addr(uint64_t dsm_mem_addr) "dsm memory address 0x%" PRIx64
> +acpi_nvdimm_dsm_info(uint32_t revision, uint32_t handle, uint32_t function) "Revision 0x%" PRIx32 " Handle 0x%" PRIx32 " Function 0x%" PRIx32
> +acpi_nvdimm_invalid_revision(uint32_t revision) "Revision 0x%" PRIx32 " is not supported, expect 0x1"
> diff --git a/include/hw/mem/nvdimm.h b/include/hw/mem/nvdimm.h
> index cf8f59be44..acf887c83d 100644
> --- a/include/hw/mem/nvdimm.h
> +++ b/include/hw/mem/nvdimm.h
> @@ -29,14 +29,6 @@
> #include "hw/acpi/aml-build.h"
> #include "qom/object.h"
>
> -#define NVDIMM_DEBUG 0
> -#define nvdimm_debug(fmt, ...) \
> - do { \
> - if (NVDIMM_DEBUG) { \
> - fprintf(stderr, "nvdimm: " fmt, ## __VA_ARGS__); \
> - } \
> - } while (0)
> -
> /*
> * The minimum label data size is required by NVDIMM Namespace
> * specification, see the chapter 2 Namespaces:
>
> base-commit: e8e86b484eac70cd86e15fa10a2f0038a536cbba
next prev parent reply other threads:[~2022-07-07 9:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-04 8:58 [PATCH] acpi/nvdimm: Define trace events for NVDIMM and substitute nvdimm_debug() Robert Hoo
2022-07-07 9:21 ` Igor Mammedov [this message]
2022-07-18 7:12 ` Robert Hoo
2022-07-18 13:41 ` Igor Mammedov
2022-07-19 2:41 ` Robert Hoo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220707112101.259acc3a@redhat.com \
--to=imammedo@redhat.com \
--cc=jingqi.liu@intel.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=robert.hu@intel.com \
--cc=robert.hu@linux.intel.com \
--cc=xiaoguangrong.eric@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.