From: Lin Ming <ming.m.lin@intel.com>
To: jirislaby@gmail.com
Cc: robert.moore@intel.com, lenb@kernel.org,
linux-acpi@vger.kernel.org, "Rafael J. Wysocki" <rjw@sisk.pl>,
linux-kernel <linux-kernel@vger.kernel.org>,
torvalds@linux-foundation.org
Subject: Re: 2.6.29 acpi regression: acpi_ex_extract_from_field -- div by zero
Date: Mon, 16 Mar 2009 11:42:23 +0800 [thread overview]
Message-ID: <1237174943.4193.37.camel@minggr.sh.intel.com> (raw)
In-Reply-To: <d3f22a0903152046m891dc0aq6ca01eed32a9eb32@mail.gmail.com>
> Hi,
>
> sometimes, when booting up/resuming from disk, I get an oops[1].
>
> obj_desc->common_field.access_bit_width is zero, but even after the
> loop. Division before the loop is apparently OK.
Would please try below debug patch to see which region filed is
accessed?
diff --git a/drivers/acpi/acpica/exfldio.c b/drivers/acpi/acpica/exfldio.c
index ef58ac4..10ac0c8 100644
--- a/drivers/acpi/acpica/exfldio.c
+++ b/drivers/acpi/acpica/exfldio.c
@@ -683,6 +683,7 @@ acpi_ex_extract_from_field(union acpi_operand_object *obj_desc,
u32 datum_count;
u32 field_datum_count;
u32 i;
+ struct acpi_buffer name_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
ACPI_FUNCTION_TRACE(ex_extract_from_field);
@@ -765,6 +766,20 @@ acpi_ex_extract_from_field(union acpi_operand_object *obj_desc,
raw_datum >> obj_desc->common_field.start_field_bit_offset;
}
+ if (obj_desc->common_field.bit_length == 0 ||
+ obj_desc->common_field.access_bit_width == 0) {
+ status = acpi_get_name(obj_desc->common_field.node,
+ ACPI_FULL_PATHNAME, &name_buffer);
+ if (ACPI_FAILURE(status)) {
+ printk(KERN_DEBUG "ACPI Debug: %s\n",
+ acpi_format_exception(status));
+ } else {
+ printk(KERN_DEBUG "ACPI Debug: field node path: %s\n",
+ (char *) name_buffer.pointer);
+ kfree(name_buffer.pointer);
+ }
+ }
+
/* Mask off any extra bits in the last datum */
buffer_tail_bits = obj_desc->common_field.bit_length %
---
Lin Ming
>
> This is the case:
> /* Mask off any extra bits in the last datum */
>
> buffer_tail_bits = obj_desc->common_field.bit_length %
> obj_desc->common_field.access_bit_width;
>
> .L39:
> xorl %edx, %edx #
> movzbl 37(%rbx), %esi #
> <variable>.common_field.access_bit_width,
> <variable>.common_field.access_bit_width
> movl 24(%rbx), %eax # <variable>.common_field.bit_length,
> <variable>.common_field.bit_length
> --------------- here:
> divl %esi # <variable>.common_field.access_bit_width
> movl %edx, %ecx #, tmp121
> testl %edx, %edx # tmp121
> je .L41 #,
>
> [1] http://www.fi.muni.cz/~xslaby/sklad/panics/acpi_oops.png
> --
next prev parent reply other threads:[~2009-03-16 3:51 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-15 10:47 2.6.29 acpi regression: acpi_ex_extract_from_field -- div by zero Jiri Slaby
2009-03-15 17:49 ` Linus Torvalds
2009-03-15 19:08 ` Moore, Robert
2009-03-15 19:32 ` Jiri Slaby
[not found] ` <d3f22a0903152046m891dc0aq6ca01eed32a9eb32@mail.gmail.com>
2009-03-16 3:42 ` Lin Ming [this message]
2009-03-16 16:31 ` Jiri Slaby
2009-03-18 8:08 ` Jiri Slaby
2009-03-19 16:06 ` Jiri Slaby
2009-03-20 0:48 ` Lin Ming
2009-03-20 4:53 ` Lin Ming
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=1237174943.4193.37.camel@minggr.sh.intel.com \
--to=ming.m.lin@intel.com \
--cc=jirislaby@gmail.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=robert.moore@intel.com \
--cc=torvalds@linux-foundation.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.