On Mon, Oct 26, 2020 at 11:54:49AM +0100, Philippe Mathieu-Daudé wrote: > Controllers have different capabilities and report them in the > CAP register. We are particularly interested by the page size > limits. > > Signed-off-by: Philippe Mathieu-Daudé <[email protected]> > --- > block/nvme.c | 10 ++++++++++ > block/trace-events | 1 + > 2 files changed, 11 insertions(+) > > diff --git a/block/nvme.c b/block/nvme.c > index 5abd7257cac..3b6d3972ec2 100644 > --- a/block/nvme.c > +++ b/block/nvme.c > @@ -720,6 +720,16 @@ static int nvme_init(BlockDriverState *bs, const char > *device, int namespace, > * Initialization". */ > > cap = le64_to_cpu(regs->cap); > + trace_nvme_controller_capability("Maximum Queue Entries Supported", > + NVME_CAP_MQES(cap)); > + trace_nvme_controller_capability("Contiguous Queues Required", > + NVME_CAP_CQR(cap)); > + trace_nvme_controller_capability("Subsystem Reset Supported", > + NVME_CAP_NSSRS(cap)); > + trace_nvme_controller_capability("Memory Page Size Minimum", > + NVME_CAP_MPSMIN(cap)); > + trace_nvme_controller_capability("Memory Page Size Maximum", > + NVME_CAP_MPSMAX(cap));
This works well for printf-style tracing but it can be tedious to
strcmp() or parse strings from SystemTap and other tracing scripts.
Another way of expressing these trace events is:
trace_nvme_controller_capabilities(NVME_CAP_MQES(cap),
NVME_CAP_CQR(cap),
...);
Or:
trace_nvme_controller_capability_mqes(NVME_CAP_MQES(cap));
trace_nvme_controller_capability_cqr(NVME_CAP_CQR(cap));
One view is that tracing is like printf (the style used in this patch).
Another view is that tracing produces records that scripts can process
(the style I showed). Trace events defined in one style may be hard to
use in the other style (i.e. less human-readable vs harder to process in
a script).
Reviewed-by: Stefan Hajnoczi <[email protected]>
signature.asc
Description: PGP signature
