All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@armlinux.org.uk>
To: Tyler Baicar <tbaicar@codeaurora.org>
Cc: mark.rutland@arm.com, linux-efi@vger.kernel.org,
	rkrcmar@redhat.com, matt@codeblueprint.co.uk,
	catalin.marinas@arm.com, will.deacon@arm.com,
	Richard Ruigrok <rruigrok@codeaurora.org>,
	paul.gortmaker@windriver.com, lv.zheng@intel.com,
	kvmarm@lists.cs.columbia.edu, fu.wei@linaro.org,
	"Jonathan (Zhixiong) Zhang" <zjzhang@codeaurora.org>,
	robert.moore@intel.com, linux-acpi@vger.kernel.org,
	shijie.huang@arm.com, lenb@kernel.org, marc.zyngier@arm.com,
	tomasz.nowicki@linaro.org, Naveen Kaje <nkaje@codeaurora.org>,
	rostedt@goodmis.org, sandeepa.s.prabhu@gmail.com,
	Dkvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	devel@acpica.org, rjw@rjwysocki.net,
	linux-kernel@vger.kernel.org, james.morse@arm.com,
	pbonzini@redhat.com, akpm@linux-foundation.org,
	bristot@redhat.com, christoffer.dall@linaro.org
Subject: Re: [PATCH V3 02/10] ras: acpi/apei: cper: generic error data entry v3 per ACPI 6.1
Date: Tue, 11 Oct 2016 19:52:36 +0100	[thread overview]
Message-ID: <20161011185236.GC1041@n2100.armlinux.org.uk> (raw)
In-Reply-To: <1475875882-2604-3-git-send-email-tbaicar@codeaurora.org>

On Fri, Oct 07, 2016 at 03:31:14PM -0600, Tyler Baicar wrote:
> +static void cper_estatus_print_section_v300(const char *pfx,
> +	const struct acpi_hest_generic_data_v300 *gdata)
> +{
> +	__u8 hour, min, sec, day, mon, year, century, *timestamp;
> +
> +	if (gdata->validation_bits & ACPI_HEST_GEN_VALID_TIMESTAMP) {
> +		timestamp = (__u8 *)&(gdata->time_stamp);
> +		memcpy(&sec, timestamp, 1);
> +		memcpy(&min, timestamp + 1, 1);
> +		memcpy(&hour, timestamp + 2, 1);
> +		memcpy(&day, timestamp + 4, 1);
> +		memcpy(&mon, timestamp + 5, 1);
> +		memcpy(&year, timestamp + 6, 1);
> +		memcpy(&century, timestamp + 7, 1);

This is utterly silly.  Why are you using memcpy() to access individual
bytes of a u8 pointer?  What's wrong with:

		sec = timestamp[0];
		min = timestamp[1];
		hour = timestamp[2];
		day = timestamp[4];
		mon = timestamp[5];
		year = timestamp[6];
		century = timestamp[7];

or even do the conversion here:

		sec = bcd2bin(timestamp[0]);
... etc ...

> +		printk("%stime: ", pfx);
> +		printk("%7s", 0x01 & *(timestamp + 3) ? "precise" : "");
> +		printk(" %02d:%02d:%02d %02d%02d-%02d-%02d\n",
> +			bcd2bin(hour), bcd2bin(min), bcd2bin(sec),
> +			bcd2bin(century), bcd2bin(year), bcd2bin(mon),
> +			bcd2bin(day));
> +	}

It's also a good idea to (as much as possible) keep to single printk()
statements - which makes the emission of the string more atomic wrt
other CPUs and contexts.  So, this should probably become (with the
conversion being done at the assignment of sec etc):

		printk("%stime: %7s %02d:%02d:%02d %02d%02d-%02d-%02d\n",
			pfx, 0x01 & timestamp[3] ? "precise" : "",
			hour, min, sec, century, year, mon, day);

which, IMHO, looks a lot nicer and doesn't risk some other printk()
getting between each individual part of the line.

> +}
> +
>  static void cper_estatus_print_section(
> -	const char *pfx, const struct acpi_hest_generic_data *gdata, int sec_no)
> +	const char *pfx, struct acpi_hest_generic_data *gdata, int sec_no)
>  {
>  	uuid_le *sec_type = (uuid_le *)gdata->section_type;
>  	__u16 severity;
>  	char newpfx[64];
>  
> +	if ((gdata->revision >> 8) >= 0x03)
> +		cper_estatus_print_section_v300(pfx,
> +			(const struct acpi_hest_generic_data_v300 *)gdata);
> +
>  	severity = gdata->error_severity;
>  	printk("%s""Error %d, type: %s\n", pfx, sec_no,
>  	       cper_severity_str(severity));

Not sure why you have the "" here - %sError works just as well and the
"" is just obfuscation - the compiler will eliminate the double-double
quote and merge the strings anyway.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

WARNING: multiple messages have this Message-ID (diff)
From: linux@armlinux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V3 02/10] ras: acpi/apei: cper: generic error data entry v3 per ACPI 6.1
Date: Tue, 11 Oct 2016 19:52:36 +0100	[thread overview]
Message-ID: <20161011185236.GC1041@n2100.armlinux.org.uk> (raw)
In-Reply-To: <1475875882-2604-3-git-send-email-tbaicar@codeaurora.org>

On Fri, Oct 07, 2016 at 03:31:14PM -0600, Tyler Baicar wrote:
> +static void cper_estatus_print_section_v300(const char *pfx,
> +	const struct acpi_hest_generic_data_v300 *gdata)
> +{
> +	__u8 hour, min, sec, day, mon, year, century, *timestamp;
> +
> +	if (gdata->validation_bits & ACPI_HEST_GEN_VALID_TIMESTAMP) {
> +		timestamp = (__u8 *)&(gdata->time_stamp);
> +		memcpy(&sec, timestamp, 1);
> +		memcpy(&min, timestamp + 1, 1);
> +		memcpy(&hour, timestamp + 2, 1);
> +		memcpy(&day, timestamp + 4, 1);
> +		memcpy(&mon, timestamp + 5, 1);
> +		memcpy(&year, timestamp + 6, 1);
> +		memcpy(&century, timestamp + 7, 1);

This is utterly silly.  Why are you using memcpy() to access individual
bytes of a u8 pointer?  What's wrong with:

		sec = timestamp[0];
		min = timestamp[1];
		hour = timestamp[2];
		day = timestamp[4];
		mon = timestamp[5];
		year = timestamp[6];
		century = timestamp[7];

or even do the conversion here:

		sec = bcd2bin(timestamp[0]);
... etc ...

> +		printk("%stime: ", pfx);
> +		printk("%7s", 0x01 & *(timestamp + 3) ? "precise" : "");
> +		printk(" %02d:%02d:%02d %02d%02d-%02d-%02d\n",
> +			bcd2bin(hour), bcd2bin(min), bcd2bin(sec),
> +			bcd2bin(century), bcd2bin(year), bcd2bin(mon),
> +			bcd2bin(day));
> +	}

It's also a good idea to (as much as possible) keep to single printk()
statements - which makes the emission of the string more atomic wrt
other CPUs and contexts.  So, this should probably become (with the
conversion being done at the assignment of sec etc):

		printk("%stime: %7s %02d:%02d:%02d %02d%02d-%02d-%02d\n",
			pfx, 0x01 & timestamp[3] ? "precise" : "",
			hour, min, sec, century, year, mon, day);

which, IMHO, looks a lot nicer and doesn't risk some other printk()
getting between each individual part of the line.

> +}
> +
>  static void cper_estatus_print_section(
> -	const char *pfx, const struct acpi_hest_generic_data *gdata, int sec_no)
> +	const char *pfx, struct acpi_hest_generic_data *gdata, int sec_no)
>  {
>  	uuid_le *sec_type = (uuid_le *)gdata->section_type;
>  	__u16 severity;
>  	char newpfx[64];
>  
> +	if ((gdata->revision >> 8) >= 0x03)
> +		cper_estatus_print_section_v300(pfx,
> +			(const struct acpi_hest_generic_data_v300 *)gdata);
> +
>  	severity = gdata->error_severity;
>  	printk("%s""Error %d, type: %s\n", pfx, sec_no,
>  	       cper_severity_str(severity));

Not sure why you have the "" here - %sError works just as well and the
"" is just obfuscation - the compiler will eliminate the double-double
quote and merge the strings anyway.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

WARNING: multiple messages have this Message-ID (diff)
From: Russell King - ARM Linux <linux@armlinux.org.uk>
To: Tyler Baicar <tbaicar@codeaurora.org>
Cc: christoffer.dall@linaro.org, marc.zyngier@arm.com,
	pbonzini@redhat.com, rkrcmar@redhat.com, catalin.marinas@arm.com,
	will.deacon@arm.com, rjw@rjwysocki.net, lenb@kernel.org,
	matt@codeblueprint.co.uk, robert.moore@intel.com,
	lv.zheng@intel.com, mark.rutland@arm.com, james.morse@arm.com,
	akpm@linux-foundation.org, sandeepa.s.prabhu@gmail.com,
	shijie.huang@arm.com, paul.gortmaker@windriver.com,
	tomasz.nowicki@linaro.org, fu.wei@linaro.org,
	rostedt@goodmis.org, bristot@redhat.com,
	linux-arm-kernel@lists.infradead.org,
	kvmarm@lists.cs.columbia.edu, Dkvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	linux-efi@vger.kernel.org, devel@acpica.org,
	"Jonathan (Zhixiong) Zhang" <zjzhang@codeaurora.org>,
	Richard Ruigrok <rruigrok@codeaurora.org>,
	Naveen Kaje <nkaje@codeaurora.org>
Subject: Re: [PATCH V3 02/10] ras: acpi/apei: cper: generic error data entry v3 per ACPI 6.1
Date: Tue, 11 Oct 2016 19:52:36 +0100	[thread overview]
Message-ID: <20161011185236.GC1041@n2100.armlinux.org.uk> (raw)
In-Reply-To: <1475875882-2604-3-git-send-email-tbaicar@codeaurora.org>

On Fri, Oct 07, 2016 at 03:31:14PM -0600, Tyler Baicar wrote:
> +static void cper_estatus_print_section_v300(const char *pfx,
> +	const struct acpi_hest_generic_data_v300 *gdata)
> +{
> +	__u8 hour, min, sec, day, mon, year, century, *timestamp;
> +
> +	if (gdata->validation_bits & ACPI_HEST_GEN_VALID_TIMESTAMP) {
> +		timestamp = (__u8 *)&(gdata->time_stamp);
> +		memcpy(&sec, timestamp, 1);
> +		memcpy(&min, timestamp + 1, 1);
> +		memcpy(&hour, timestamp + 2, 1);
> +		memcpy(&day, timestamp + 4, 1);
> +		memcpy(&mon, timestamp + 5, 1);
> +		memcpy(&year, timestamp + 6, 1);
> +		memcpy(&century, timestamp + 7, 1);

This is utterly silly.  Why are you using memcpy() to access individual
bytes of a u8 pointer?  What's wrong with:

		sec = timestamp[0];
		min = timestamp[1];
		hour = timestamp[2];
		day = timestamp[4];
		mon = timestamp[5];
		year = timestamp[6];
		century = timestamp[7];

or even do the conversion here:

		sec = bcd2bin(timestamp[0]);
... etc ...

> +		printk("%stime: ", pfx);
> +		printk("%7s", 0x01 & *(timestamp + 3) ? "precise" : "");
> +		printk(" %02d:%02d:%02d %02d%02d-%02d-%02d\n",
> +			bcd2bin(hour), bcd2bin(min), bcd2bin(sec),
> +			bcd2bin(century), bcd2bin(year), bcd2bin(mon),
> +			bcd2bin(day));
> +	}

It's also a good idea to (as much as possible) keep to single printk()
statements - which makes the emission of the string more atomic wrt
other CPUs and contexts.  So, this should probably become (with the
conversion being done at the assignment of sec etc):

		printk("%stime: %7s %02d:%02d:%02d %02d%02d-%02d-%02d\n",
			pfx, 0x01 & timestamp[3] ? "precise" : "",
			hour, min, sec, century, year, mon, day);

which, IMHO, looks a lot nicer and doesn't risk some other printk()
getting between each individual part of the line.

> +}
> +
>  static void cper_estatus_print_section(
> -	const char *pfx, const struct acpi_hest_generic_data *gdata, int sec_no)
> +	const char *pfx, struct acpi_hest_generic_data *gdata, int sec_no)
>  {
>  	uuid_le *sec_type = (uuid_le *)gdata->section_type;
>  	__u16 severity;
>  	char newpfx[64];
>  
> +	if ((gdata->revision >> 8) >= 0x03)
> +		cper_estatus_print_section_v300(pfx,
> +			(const struct acpi_hest_generic_data_v300 *)gdata);
> +
>  	severity = gdata->error_severity;
>  	printk("%s""Error %d, type: %s\n", pfx, sec_no,
>  	       cper_severity_str(severity));

Not sure why you have the "" here - %sError works just as well and the
"" is just obfuscation - the compiler will eliminate the double-double
quote and merge the strings anyway.

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

  parent reply	other threads:[~2016-10-11 18:52 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-07 21:31 [PATCH V3 00/10] Add UEFI 2.6 and ACPI 6.1 updates for RAS on ARM64 Tyler Baicar
2016-10-07 21:31 ` Tyler Baicar
2016-10-07 21:31 ` Tyler Baicar
2016-10-07 21:31 ` [PATCH V3 01/10] acpi: apei: read ack upon ghes record consumption Tyler Baicar
2016-10-07 21:31   ` Tyler Baicar
2016-10-12 15:39   ` Punit Agrawal
2016-10-12 15:39     ` Punit Agrawal
2016-10-12 15:39     ` Punit Agrawal
2016-10-13 13:49     ` Baicar, Tyler
2016-10-13 13:49       ` Baicar, Tyler
2016-10-13 13:49       ` Baicar, Tyler
2016-10-07 21:31 ` [PATCH V3 02/10] ras: acpi/apei: cper: generic error data entry v3 per ACPI 6.1 Tyler Baicar
2016-10-07 21:31   ` Tyler Baicar
2016-10-11 17:28   ` Suzuki K Poulose
2016-10-11 17:28     ` Suzuki K Poulose
2016-10-11 17:28     ` Suzuki K Poulose
2016-10-12 22:10     ` Baicar, Tyler
2016-10-12 22:10       ` Baicar, Tyler
2016-10-12 22:10       ` Baicar, Tyler
2016-10-13  8:50       ` Suzuki K Poulose
2016-10-13  8:50         ` Suzuki K Poulose
2016-10-13  8:50         ` Suzuki K Poulose
2016-10-13 19:37         ` Baicar, Tyler
2016-10-13 19:37           ` Baicar, Tyler
2016-10-13 19:37           ` Baicar, Tyler
     [not found]           ` <912acc88-fbaf-2576-8048-1fcc67439600-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-10-14 16:28             ` Suzuki K Poulose
2016-10-14 16:28               ` Suzuki K Poulose
2016-10-14 16:28               ` Suzuki K Poulose
2016-10-14 16:39               ` Mark Rutland
2016-10-14 16:39                 ` Mark Rutland
2016-10-14 16:39                 ` Mark Rutland
2016-10-11 18:52   ` Russell King - ARM Linux [this message]
2016-10-11 18:52     ` Russell King - ARM Linux
2016-10-11 18:52     ` Russell King - ARM Linux
     [not found]     ` <20161011185236.GC1041-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org>
2016-10-12 22:18       ` Baicar, Tyler
2016-10-12 22:18         ` Baicar, Tyler
2016-10-12 22:18         ` Baicar, Tyler
     [not found] ` <1475875882-2604-1-git-send-email-tbaicar-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-10-07 21:31   ` [PATCH V3 03/10] efi: parse ARMv8 processor error Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-07 21:31   ` [PATCH V3 05/10] acpi: apei: handle SEA notification type for ARMv8 Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-12 18:00     ` Punit Agrawal
2016-10-12 18:00       ` Punit Agrawal
2016-10-12 18:00       ` Punit Agrawal
2016-10-13 14:03       ` Baicar, Tyler
2016-10-13 14:03         ` Baicar, Tyler
2016-10-13 14:03         ` Baicar, Tyler
2016-10-14  9:39         ` Punit Agrawal
2016-10-14  9:39           ` Punit Agrawal
2016-10-14  9:39           ` Punit Agrawal
2016-10-18 12:44     ` Hanjun Guo
2016-10-18 12:44       ` [Devel] " Hanjun Guo
2016-10-18 12:44       ` Hanjun Guo
     [not found]       ` <496ddac3-a220-fd42-5ca1-3d0fb0238907-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-19 16:59         ` Abdulhamid, Harb
2016-10-19 16:59           ` Abdulhamid, Harb
2016-10-19 16:59           ` Abdulhamid, Harb
2016-10-23  9:13           ` Hanjun Guo
2016-10-23  9:13             ` Hanjun Guo
2016-10-23  9:13             ` Hanjun Guo
     [not found]     ` <1475875882-2604-6-git-send-email-tbaicar-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2016-10-18 13:04       ` Hanjun Guo
2016-10-18 13:04         ` [Devel] " Hanjun Guo
2016-10-18 13:04         ` Hanjun Guo
2016-10-18 13:04         ` Hanjun Guo
     [not found]         ` <57c81498-78f1-8aac-01b1-b5445415d822-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2016-10-19 17:12           ` Abdulhamid, Harb
2016-10-19 17:12             ` Abdulhamid, Harb
2016-10-19 17:12             ` Abdulhamid, Harb
2016-10-07 21:31   ` [PATCH V3 07/10] efi: print unrecognized CPER section Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-07 21:31   ` [PATCH V3 09/10] trace, ras: add ARM processor error trace event Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-07 21:31     ` Tyler Baicar
2016-10-07 21:39     ` Steven Rostedt
2016-10-07 21:39       ` Steven Rostedt
2016-10-07 21:39       ` Steven Rostedt
2016-10-12 21:23       ` Baicar, Tyler
2016-10-12 21:23         ` Baicar, Tyler
2016-10-07 21:31 ` [PATCH V3 04/10] arm64: exception: handle Synchronous External Abort Tyler Baicar
2016-10-07 21:31   ` Tyler Baicar
2016-10-12 17:46   ` Punit Agrawal
2016-10-12 17:46     ` Punit Agrawal
2016-10-12 17:46     ` Punit Agrawal
2016-10-13 13:56     ` Baicar, Tyler
2016-10-13 13:56       ` Baicar, Tyler
2016-10-07 21:31 ` [PATCH V3 06/10] acpi: apei: panic OS with fatal error status block Tyler Baicar
2016-10-07 21:31   ` Tyler Baicar
2016-10-13 13:00   ` Suzuki K Poulose
2016-10-13 13:00     ` Suzuki K Poulose
2016-10-13 23:34     ` Baicar, Tyler
2016-10-13 23:34       ` Baicar, Tyler
2016-10-07 21:31 ` [PATCH V3 08/10] ras: acpi / apei: generate trace event for unrecognized CPER section Tyler Baicar
2016-10-07 21:31   ` Tyler Baicar
2016-10-13 10:54   ` Punit Agrawal
2016-10-13 10:54     ` Punit Agrawal
2016-10-13 10:54     ` Punit Agrawal
2016-10-13 20:15     ` Baicar, Tyler
2016-10-13 20:15       ` Baicar, Tyler
2016-10-13 20:15       ` Baicar, Tyler
2016-10-07 21:31 ` [PATCH V3 10/10] arm64: KVM: add guest SEA support Tyler Baicar
2016-10-07 21:31   ` Tyler Baicar
2016-10-13 13:14   ` Punit Agrawal
2016-10-13 13:14     ` Punit Agrawal
2016-10-13 13:14     ` Punit Agrawal
     [not found]     ` <87h98gs853.fsf-Z9gB6HwUD+TZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2016-10-13 20:14       ` Baicar, Tyler
2016-10-13 20:14         ` Baicar, Tyler
2016-10-13 20:14         ` Baicar, Tyler
2016-10-14  9:38         ` Punit Agrawal
2016-10-14  9:38           ` Punit Agrawal
2016-10-14  9:38           ` Punit Agrawal
2016-10-14 21:58           ` Baicar, Tyler
2016-10-14 21:58             ` Baicar, Tyler

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=20161011185236.GC1041@n2100.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=Dkvm@vger.kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bristot@redhat.com \
    --cc=catalin.marinas@arm.com \
    --cc=christoffer.dall@linaro.org \
    --cc=devel@acpica.org \
    --cc=fu.wei@linaro.org \
    --cc=james.morse@arm.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=matt@codeblueprint.co.uk \
    --cc=nkaje@codeaurora.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=pbonzini@redhat.com \
    --cc=rjw@rjwysocki.net \
    --cc=rkrcmar@redhat.com \
    --cc=robert.moore@intel.com \
    --cc=rostedt@goodmis.org \
    --cc=rruigrok@codeaurora.org \
    --cc=sandeepa.s.prabhu@gmail.com \
    --cc=shijie.huang@arm.com \
    --cc=tbaicar@codeaurora.org \
    --cc=tomasz.nowicki@linaro.org \
    --cc=will.deacon@arm.com \
    --cc=zjzhang@codeaurora.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.