From: Steven Rostedt <rostedt@goodmis.org>
To: Borislav Petkov <bp@alien8.de>
Cc: "Chen, Gong" <gong.chen@linux.intel.com>,
tony.luck@intel.com, m.chehab@samsung.com,
linux-acpi@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 5/7 v6] trace, RAS: Add eMCA trace event interface
Date: Wed, 28 May 2014 12:56:25 -0400 [thread overview]
Message-ID: <20140528125625.6f6dcf7f@gandalf.local.home> (raw)
In-Reply-To: <20140528163452.GF17196@pd.tnic>
On Wed, 28 May 2014 18:34:52 +0200
Borislav Petkov <bp@alien8.de> wrote:
> Well, they're constructed from a bunch of values which are checked for
> validity first:
>
> http://lkml.kernel.org/r/1400142646-10127-4-git-send-email-gong.chen@linux.intel.com
OK, looks like you are saving a bunch of integers.
>
> We probably could get rid of the fru* things by reading them out from
> ACPI and enumerating them and issuing only an index here which the slow
> path decodes.
>
> The others we can split into fields again which should definitely make
> the record smaller. Fields are defined in struct cper_sec_mem_err.
>
> The thing is, this TP needs to be designed properly before we expose it
> to the world and so that hoperfully most future uses are covered.
My concern is passing in a large string and wasting a lot of the ring
buffer space. The max you can hold per event is just under a page size
(4k). And all these strings add up. If it happens to be 512bytes, then
you end up with one event per page.
Instead of making that a huge string, what about a dynamic array of
special structures?
struct __attribute__((__packed__)) cper_sec_mem_rec {
short type;
int data;
};
static struct cper_sec_mem_rec mem_location[CPER_REC_LEN];
then have the:
if (mem->validation_bits & CPER_MEM_VALID_NODE) {
msg[n].type = CPER_MEM_VALID_NODE_TYPE;
msg[n++].data = mem->node;
}
if (mem->validation_bits & CPER_MEM_VALID_CARD) {
msg[n].type = CPER_MEM_VALID_CARD_TYPE;
msg[n++].data = mem->card;
}
if (mem->validation_bits & CPER_MEM_VALID_MODULE) {
[ and so on ]
Then return the array of msg and the length and you can record this
into the dynamic array in the tracepoint.
Then you have the type and data saved, the TP_printk() can parse it.
You can create your own handler for it to do it nicely (see the ftrace
version of __print_symbol() and friends).
Makes the tracepoint much more compact.
-- Steve
next prev parent reply other threads:[~2014-05-28 16:56 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-15 8:30 New eMCA trace event interface Chen, Gong
2014-05-15 8:30 ` [PATCH 1/7 v5] trace, RAS: Add basic RAS trace event Chen, Gong
2014-05-15 8:30 ` [PATCH 2/7 v3] trace, AER: Move trace into unified interface Chen, Gong
2014-05-21 10:19 ` Borislav Petkov
2014-05-22 0:03 ` Chen, Gong
2014-05-22 10:41 ` Borislav Petkov
2014-05-15 8:30 ` [PATCH 3/7 v4] CPER: Adjust code flow of some functions Chen, Gong
2014-05-21 11:05 ` Borislav Petkov
2014-05-21 23:51 ` Chen, Gong
2014-05-22 10:52 ` Borislav Petkov
2014-05-23 1:49 ` Chen, Gong
2014-05-23 9:37 ` Borislav Petkov
2014-05-23 10:11 ` Borislav Petkov
2014-05-26 1:59 ` Chen, Gong
2014-05-26 10:21 ` Borislav Petkov
2014-05-26 10:42 ` Chen, Gong
2014-05-26 2:07 ` Chen, Gong
2014-05-26 10:23 ` Borislav Petkov
2014-05-15 8:30 ` [PATCH 4/7 v2] RAS, debugfs: Add debugfs interface for RAS subsystem Chen, Gong
2014-05-15 8:30 ` [PATCH 5/7 v5] trace, RAS: Add eMCA trace event interface Chen, Gong
2014-05-15 8:30 ` [PATCH 6/7 v3] trace, eMCA: Add a knob to adjust where to save event log Chen, Gong
2014-05-21 11:06 ` Borislav Petkov
2014-05-21 23:46 ` Chen, Gong
2014-05-22 11:11 ` Borislav Petkov
2014-05-23 1:40 ` Chen, Gong
2014-05-28 3:27 ` [PATCH 6/7 v4] " Chen, Gong
2014-05-15 8:30 ` [PATCH 7/7] RAS, extlog: Adjust init flow Chen, Gong
2014-05-28 3:32 ` new trace output format Chen, Gong
2014-05-28 3:32 ` [PATCH 5/7 v6] trace, RAS: Add eMCA trace event interface Chen, Gong
2014-05-28 15:28 ` Steven Rostedt
2014-05-28 16:34 ` Borislav Petkov
2014-05-28 16:56 ` Steven Rostedt [this message]
2014-05-29 7:43 ` Chen, Gong
2014-05-29 10:35 ` Borislav Petkov
2014-05-29 13:12 ` Steven Rostedt
2014-05-30 2:56 ` Chen, Gong
2014-05-30 9:22 ` Chen, Gong
2014-05-30 10:07 ` Borislav Petkov
2014-05-30 21:16 ` Tony Luck
2014-05-30 21:26 ` Borislav Petkov
2014-05-30 23:03 ` Luck, Tony
2014-05-31 1:07 ` Steven Rostedt
2014-06-02 16:22 ` Luck, Tony
2014-06-02 16:57 ` Steven Rostedt
2014-06-03 8:36 ` Chen, Gong
2014-06-03 14:35 ` Steven Rostedt
2014-06-04 18:32 ` Steven Rostedt
2014-06-06 6:51 ` Chen, Gong
2014-06-06 15:21 ` Steven Rostedt
2014-06-09 1:10 ` Chen, Gong
2014-06-09 10:22 ` Borislav Petkov
2014-05-28 16:23 ` new trace output format Borislav Petkov
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=20140528125625.6f6dcf7f@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=bp@alien8.de \
--cc=gong.chen@linux.intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=m.chehab@samsung.com \
--cc=tony.luck@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).