linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Gary Hade <garyhade@us.ibm.com>
To: Jean Delvare <jdelvare@suse.de>
Cc: Huang Ying <ying.huang@intel.com>,
	Gary Hade <garyhade@us.ibm.com>, Len Brown <lenb@kernel.org>,
	linux-acpi@vger.kernel.org, hui.xiao@linux.intel.com
Subject: Re: [PATCH] ACPI, APEI: Fixup common access width firmware bug
Date: Wed, 13 Jun 2012 18:09:31 -0700	[thread overview]
Message-ID: <20120614010931.GA7378@us.ibm.com> (raw)
In-Reply-To: <1339490608.21507.5.camel@amber.site>

On Tue, Jun 12, 2012 at 10:43:28AM +0200, Jean Delvare wrote:
> Many firmwares have a common register definition bug where 8-bit
> access width is specified for a 32-bit register. Ideally this should
> be fixed in the BIOS, but earlier versions of the kernel did not
> complain, so fix that up silently.
> 
> This closes kernel bug #43282:
> https://bugzilla.kernel.org/show_bug.cgi?id=43282
> 
> Signed-off-by: Jean Delvare <jdelvare@suse.de>
> Cc: Gary Hade <garyhade@us.ibm.com>
> Cc: Len Brown <len.brown@intel.com>
> Cc: stable@vger.kernel.org [3.4+]
> ---
>  drivers/acpi/apei/apei-base.c |    5 +++++
>  1 file changed, 5 insertions(+)
> 
> --- linux-3.4.orig/drivers/acpi/apei/apei-base.c	2012-06-08 10:02:06.000000000 +0200
> +++ linux-3.4/drivers/acpi/apei/apei-base.c	2012-06-08 10:04:16.503779775 +0200
> @@ -586,6 +586,11 @@ static int apei_check_gar(struct acpi_ge
>  	}
>  	*access_bit_width = 1UL << (access_size_code + 2);
> 
> +	/* Fixup common BIOS bug */
> +	if (bit_width == 32 && bit_offset == 0 && (*paddr & 0x03) == 0 &&
> +	    *access_bit_width < 32)
> +		*access_bit_width = 32;
> +
>  	if ((bit_width + bit_offset) > *access_bit_width) {
>  		pr_warning(FW_BUG APEI_PFX
>  			   "Invalid bit width + offset in GAR [0x%llx/%u/%u/%u/%u]\n",

This seems reasonable but since the "Access Size < Register Bit Width"
condition has apparently been seen on a number of systems I have been
wondering if this might simply be a BIOS writer's way of telling us
not to touch some of the high bits in the register.  Reducing the
width of the register seems like a better way, but maybe not the
only way?

Jean, What do you (and others that are listening who know more
about this than I do) think about a change to sanity check only
the bit offset and not complain (at least for now) about cases
where an access using the specified access size will not address
every bit in the register?  

Perhaps something like:
--- linux-3.5-rc2/drivers/acpi/apei/apei-base.c.ORIG	2012-06-08 18:40:09.000000000 -0700
+++ linux-3.5-rc2/drivers/acpi/apei/apei-base.c	2012-06-13 16:32:49.000000000 -0700
@@ -586,9 +586,9 @@ static int apei_check_gar(struct acpi_ge
 	}
 	*access_bit_width = 1UL << (access_size_code + 2);
 
-	if ((bit_width + bit_offset) > *access_bit_width) {
+	if (bit_offset >= *access_bit_width) {
 		pr_warning(FW_BUG APEI_PFX
-			   "Invalid bit width + offset in GAR [0x%llx/%u/%u/%u/%u]\n",
+			   "Invalid bit offset in GAR [0x%llx/%u/%u/%u/%u]\n",
 			   *paddr, bit_width, bit_offset, access_size_code,
 			   space_id);
 		return -EINVAL;

Gary

-- 
Gary Hade
System x Enablement
IBM Linux Technology Center
503-578-4503  IBM T/L: 775-4503
garyhade@us.ibm.com
http://www.ibm.com/linux/ltc


  parent reply	other threads:[~2012-06-14  1:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-12  8:43 [PATCH] ACPI, APEI: Fixup common access width firmware bug Jean Delvare
2012-06-12  8:46 ` Huang Ying
2012-06-14  1:09 ` Gary Hade [this message]
2012-06-14  8:35   ` Jean Delvare
2012-06-14 17:07     ` Gary Hade
2012-06-15 11:40       ` Jean Delvare
2012-07-14 15:02         ` Len Brown

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=20120614010931.GA7378@us.ibm.com \
    --to=garyhade@us.ibm.com \
    --cc=hui.xiao@linux.intel.com \
    --cc=jdelvare@suse.de \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=ying.huang@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).