From: Michael Ellerman <michael@ellerman.id.au>
To: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Cc: jkenisto@linux.vnet.ibm.com, mahesh@linux.vnet.ibm.com,
linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
paulus@samba.org, anton@samba.org
Subject: Re: [PATCH 5/8] Read rtas partition via pstore
Date: Mon, 15 Apr 2013 18:01:02 +1000 [thread overview]
Message-ID: <20130415080101.GF30156@concordia> (raw)
In-Reply-To: <20130410072327.20150.42189.stgit@aruna-ThinkPad-T420>
On Wed, Apr 10, 2013 at 12:53:27PM +0530, Aruna Balakrishnaiah wrote:
> This patch exploits pstore infrastructure to read the details
> from NVRAM's rtas partition.
Does that mean it's exposed in the pstore filesystem?
> Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
> Reviewed-by: Jim Keniston <jkenisto@us.ibm.com>
> ---
> arch/powerpc/platforms/pseries/nvram.c | 33 +++++++++++++++++++++++++-------
> fs/pstore/inode.c | 3 +++
> include/linux/pstore.h | 2 ++
> 3 files changed, 31 insertions(+), 7 deletions(-)
>
> diff --git a/arch/powerpc/platforms/pseries/nvram.c b/arch/powerpc/platforms/pseries/nvram.c
> index 82d32a2..d420b1d 100644
> --- a/arch/powerpc/platforms/pseries/nvram.c
> +++ b/arch/powerpc/platforms/pseries/nvram.c
> @@ -144,9 +144,11 @@ static size_t oops_data_sz;
> #ifdef CONFIG_PSTORE
> static enum pstore_type_id nvram_type_ids[] = {
> PSTORE_TYPE_DMESG,
> + PSTORE_TYPE_RTAS,
> -1
> };
> static int read_type;
> +static unsigned long last_rtas_event;
> #endif
> /* Compression parameters */
> #define COMPR_LEVEL 6
> @@ -315,8 +317,13 @@ int nvram_write_error_log(char * buff, int length,
> {
> int rc = nvram_write_os_partition(&rtas_log_partition, buff, length,
> err_type, error_log_cnt);
> - if (!rc)
> + if (!rc) {
> last_unread_rtas_event = get_seconds();
> +#ifdef CONFIG_PSTORE
> + last_rtas_event = get_seconds();
> +#endif
> + }
> +
> return rc;
> }
>
> @@ -745,7 +752,7 @@ static int nvram_pstore_write(enum pstore_type_id type,
> }
>
> /*
> - * Reads the oops/panic report.
> + * Reads the oops/panic report and ibm,rtas-log partition.
> * Returns the length of the data we read from each partition.
> * Returns 0 if we've been called before.
> */
> @@ -765,6 +772,12 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
> part = &oops_log_partition;
> *type = PSTORE_TYPE_DMESG;
> break;
> + case PSTORE_TYPE_RTAS:
> + part = &rtas_log_partition;
> + *type = PSTORE_TYPE_RTAS;
> + time->tv_sec = last_rtas_event;
> + time->tv_nsec = 0;
> + break;
> default:
> return 0;
> }
> @@ -781,11 +794,17 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
>
> *count = 0;
> *id = id_no;
> - oops_hdr = (struct oops_log_info *)buff;
> - *buf = buff + sizeof(*oops_hdr);
> - time->tv_sec = oops_hdr->timestamp;
> - time->tv_nsec = 0;
> - return oops_hdr->report_length;
> +
> + if (nvram_type_ids[read_type] == PSTORE_TYPE_DMESG) {
> + oops_hdr = (struct oops_log_info *)buff;
> + *buf = buff + sizeof(*oops_hdr);
> + time->tv_sec = oops_hdr->timestamp;
> + time->tv_nsec = 0;
> + return oops_hdr->report_length;
> + }
> +
> + *buf = buff;
> + return part->size;
> }
> #else
> static int nvram_pstore_open(struct pstore_info *psi)
> diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c
> index e4bcb2c..59b1454 100644
> --- a/fs/pstore/inode.c
> +++ b/fs/pstore/inode.c
> @@ -324,6 +324,9 @@ int pstore_mkfile(enum pstore_type_id type, char *psname, u64 id, int count,
> case PSTORE_TYPE_MCE:
> sprintf(name, "mce-%s-%lld", psname, id);
> break;
> + case PSTORE_TYPE_RTAS:
> + sprintf(name, "rtas-%s-%lld", psname, id);
> + break;
> case PSTORE_TYPE_UNKNOWN:
> sprintf(name, "unknown-%s-%lld", psname, id);
> break;
> diff --git a/include/linux/pstore.h b/include/linux/pstore.h
> index 75d0176..4eb94c9 100644
> --- a/include/linux/pstore.h
> +++ b/include/linux/pstore.h
> @@ -35,6 +35,8 @@ enum pstore_type_id {
> PSTORE_TYPE_MCE = 1,
> PSTORE_TYPE_CONSOLE = 2,
> PSTORE_TYPE_FTRACE = 3,
> + /* PPC64 partition types */
> + PSTORE_TYPE_RTAS = 10,
> PSTORE_TYPE_UNKNOWN = 255
I think you should probably just continue at 4, and call it
PSTORE_TYPE_PPC_RTAS. But you must get an ACK from the pstore
maintainers for this and the previous hunk, and I don't see them on CC.
cheers
WARNING: multiple messages have this Message-ID (diff)
From: Michael Ellerman <michael@ellerman.id.au>
To: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
Cc: linuxppc-dev@ozlabs.org, paulus@samba.org,
linux-kernel@vger.kernel.org, benh@kernel.crashing.org,
jkenisto@linux.vnet.ibm.com, mahesh@linux.vnet.ibm.com,
anton@samba.org
Subject: Re: [PATCH 5/8] Read rtas partition via pstore
Date: Mon, 15 Apr 2013 18:01:02 +1000 [thread overview]
Message-ID: <20130415080101.GF30156@concordia> (raw)
In-Reply-To: <20130410072327.20150.42189.stgit@aruna-ThinkPad-T420>
On Wed, Apr 10, 2013 at 12:53:27PM +0530, Aruna Balakrishnaiah wrote:
> This patch exploits pstore infrastructure to read the details
> from NVRAM's rtas partition.
Does that mean it's exposed in the pstore filesystem?
> Signed-off-by: Aruna Balakrishnaiah <aruna@linux.vnet.ibm.com>
> Reviewed-by: Jim Keniston <jkenisto@us.ibm.com>
> ---
> arch/powerpc/platforms/pseries/nvram.c | 33 +++++++++++++++++++++++++-------
> fs/pstore/inode.c | 3 +++
> include/linux/pstore.h | 2 ++
> 3 files changed, 31 insertions(+), 7 deletions(-)
>
> diff --git a/arch/powerpc/platforms/pseries/nvram.c b/arch/powerpc/platforms/pseries/nvram.c
> index 82d32a2..d420b1d 100644
> --- a/arch/powerpc/platforms/pseries/nvram.c
> +++ b/arch/powerpc/platforms/pseries/nvram.c
> @@ -144,9 +144,11 @@ static size_t oops_data_sz;
> #ifdef CONFIG_PSTORE
> static enum pstore_type_id nvram_type_ids[] = {
> PSTORE_TYPE_DMESG,
> + PSTORE_TYPE_RTAS,
> -1
> };
> static int read_type;
> +static unsigned long last_rtas_event;
> #endif
> /* Compression parameters */
> #define COMPR_LEVEL 6
> @@ -315,8 +317,13 @@ int nvram_write_error_log(char * buff, int length,
> {
> int rc = nvram_write_os_partition(&rtas_log_partition, buff, length,
> err_type, error_log_cnt);
> - if (!rc)
> + if (!rc) {
> last_unread_rtas_event = get_seconds();
> +#ifdef CONFIG_PSTORE
> + last_rtas_event = get_seconds();
> +#endif
> + }
> +
> return rc;
> }
>
> @@ -745,7 +752,7 @@ static int nvram_pstore_write(enum pstore_type_id type,
> }
>
> /*
> - * Reads the oops/panic report.
> + * Reads the oops/panic report and ibm,rtas-log partition.
> * Returns the length of the data we read from each partition.
> * Returns 0 if we've been called before.
> */
> @@ -765,6 +772,12 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
> part = &oops_log_partition;
> *type = PSTORE_TYPE_DMESG;
> break;
> + case PSTORE_TYPE_RTAS:
> + part = &rtas_log_partition;
> + *type = PSTORE_TYPE_RTAS;
> + time->tv_sec = last_rtas_event;
> + time->tv_nsec = 0;
> + break;
> default:
> return 0;
> }
> @@ -781,11 +794,17 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
>
> *count = 0;
> *id = id_no;
> - oops_hdr = (struct oops_log_info *)buff;
> - *buf = buff + sizeof(*oops_hdr);
> - time->tv_sec = oops_hdr->timestamp;
> - time->tv_nsec = 0;
> - return oops_hdr->report_length;
> +
> + if (nvram_type_ids[read_type] == PSTORE_TYPE_DMESG) {
> + oops_hdr = (struct oops_log_info *)buff;
> + *buf = buff + sizeof(*oops_hdr);
> + time->tv_sec = oops_hdr->timestamp;
> + time->tv_nsec = 0;
> + return oops_hdr->report_length;
> + }
> +
> + *buf = buff;
> + return part->size;
> }
> #else
> static int nvram_pstore_open(struct pstore_info *psi)
> diff --git a/fs/pstore/inode.c b/fs/pstore/inode.c
> index e4bcb2c..59b1454 100644
> --- a/fs/pstore/inode.c
> +++ b/fs/pstore/inode.c
> @@ -324,6 +324,9 @@ int pstore_mkfile(enum pstore_type_id type, char *psname, u64 id, int count,
> case PSTORE_TYPE_MCE:
> sprintf(name, "mce-%s-%lld", psname, id);
> break;
> + case PSTORE_TYPE_RTAS:
> + sprintf(name, "rtas-%s-%lld", psname, id);
> + break;
> case PSTORE_TYPE_UNKNOWN:
> sprintf(name, "unknown-%s-%lld", psname, id);
> break;
> diff --git a/include/linux/pstore.h b/include/linux/pstore.h
> index 75d0176..4eb94c9 100644
> --- a/include/linux/pstore.h
> +++ b/include/linux/pstore.h
> @@ -35,6 +35,8 @@ enum pstore_type_id {
> PSTORE_TYPE_MCE = 1,
> PSTORE_TYPE_CONSOLE = 2,
> PSTORE_TYPE_FTRACE = 3,
> + /* PPC64 partition types */
> + PSTORE_TYPE_RTAS = 10,
> PSTORE_TYPE_UNKNOWN = 255
I think you should probably just continue at 4, and call it
PSTORE_TYPE_PPC_RTAS. But you must get an ACK from the pstore
maintainers for this and the previous hunk, and I don't see them on CC.
cheers
next prev parent reply other threads:[~2013-04-15 8:01 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-10 7:20 [PATCH 0/8] Nvram-to-pstore Aruna Balakrishnaiah
2013-04-10 7:20 ` Aruna Balakrishnaiah
2013-04-10 7:21 ` [PATCH 1/8] Remove syslog prefix in uncompressed oops text Aruna Balakrishnaiah
2013-04-10 7:21 ` Aruna Balakrishnaiah
2013-04-15 7:20 ` Michael Ellerman
2013-04-15 7:20 ` Michael Ellerman
2013-04-15 7:39 ` aruna
2013-04-15 7:39 ` aruna
2013-04-10 7:21 ` [PATCH 2/8] Add version and timestamp to oops header Aruna Balakrishnaiah
2013-04-10 7:21 ` Aruna Balakrishnaiah
2013-04-15 7:31 ` Michael Ellerman
2013-04-15 7:31 ` Michael Ellerman
2013-04-15 7:51 ` aruna
2013-04-15 7:51 ` aruna
2013-04-10 7:21 ` [PATCH 3/8] Introduce generic read function to read nvram-partitions Aruna Balakrishnaiah
2013-04-10 7:21 ` Aruna Balakrishnaiah
2013-04-15 7:35 ` Michael Ellerman
2013-04-15 7:35 ` Michael Ellerman
2013-04-10 7:23 ` [PATCH 4/8] Read/Write oops nvram partition via pstore Aruna Balakrishnaiah
2013-04-10 7:23 ` Aruna Balakrishnaiah
2013-04-15 7:55 ` Michael Ellerman
2013-04-15 7:55 ` Michael Ellerman
2013-04-16 6:20 ` Aruna Balakrishnaiah
2013-04-16 6:20 ` Aruna Balakrishnaiah
2013-04-16 7:14 ` Benjamin Herrenschmidt
2013-04-16 7:14 ` Benjamin Herrenschmidt
2013-04-16 7:59 ` Aruna Balakrishnaiah
2013-04-16 7:59 ` Aruna Balakrishnaiah
2013-04-17 5:19 ` Aruna Balakrishnaiah
2013-04-17 5:19 ` Aruna Balakrishnaiah
2013-04-10 7:23 ` [PATCH 5/8] Read rtas " Aruna Balakrishnaiah
2013-04-10 7:23 ` Aruna Balakrishnaiah
2013-04-15 8:01 ` Michael Ellerman [this message]
2013-04-15 8:01 ` Michael Ellerman
2013-04-16 6:21 ` Aruna Balakrishnaiah
2013-04-16 6:21 ` Aruna Balakrishnaiah
2013-04-10 7:23 ` [PATCH 6/8] Distinguish between a os-partition and non-os partition Aruna Balakrishnaiah
2013-04-10 7:23 ` Aruna Balakrishnaiah
2013-04-10 7:24 ` [PATCH 7/8] Read of-config partition via pstore Aruna Balakrishnaiah
2013-04-10 7:24 ` Aruna Balakrishnaiah
2013-04-10 7:24 ` [PATCH 8/8] Read common " Aruna Balakrishnaiah
2013-04-10 7:24 ` Aruna Balakrishnaiah
2013-04-15 7:36 ` [PATCH 0/8] Nvram-to-pstore Michael Ellerman
2013-04-15 7:36 ` Michael Ellerman
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=20130415080101.GF30156@concordia \
--to=michael@ellerman.id.au \
--cc=anton@samba.org \
--cc=aruna@linux.vnet.ibm.com \
--cc=jkenisto@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=mahesh@linux.vnet.ibm.com \
--cc=paulus@samba.org \
/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.