From: Thomas Renninger <trenn@suse.de>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: Len Brown <lenb@kernel.org>, Huang Ying <ying.huang@intel.com>,
Bob Moore <robert.moore@intel.com>,
"Rafael J. Wysocki" <rjw@sisk.pl>,
linux-acpi@vger.kernel.org, bondd@us.ibm.com,
Myron Stowe <myron.stowe@redhat.com>
Subject: Re: [PATCH 2/2] ACPICA: support Generic Address Structure bit_offset in acpi_read/write
Date: Wed, 16 Nov 2011 20:58:08 +0100 [thread overview]
Message-ID: <201111162058.09549.trenn@suse.de> (raw)
In-Reply-To: <CAErSpo6E6ZLRMhLjE1zHjth=gO-LrhnTz=msRjY7mfG4ckCLfw@mail.gmail.com>
On Wednesday 16 November 2011 16:45:11 Bjorn Helgaas wrote:
> On Tue, Nov 15, 2011 at 9:49 AM, Thomas Renninger <trenn@suse.de> wrote:
> > On Tuesday, November 15, 2011 04:13:15 PM Bjorn Helgaas wrote:
> >> On Fri, Nov 11, 2011 at 4:05 PM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> >> > acpi_read(), acpi_write(), acpi_hw_read(), and acpi_hw_write() currently
> >> > ignore the GAS bit_offset field (but they do warn if it is non-zero).
> >> >
> >> > APEI tables are starting to use non-zero bit_offsets. APEI uses
> >> > special-purpose apei_exec_read_register() and apei_exec_write_register()
> >> > interfaces that apply the bit_offset.
> >> >
> >> > This patch adds bit_offset support to the generic interfaces, which is
> >> > one small step toward using them instead of the special-purpose APEI ones.
> >>
> >> Eww, brown paper bag time. Just pretend you never saw this lame
> >> implementation attempt.
> >>
> >> I do think we need to make acpi_read() smart enough to extract a bit
> >> field, but this try doesn't work.
> >
> > As a first step it would be great if Ying's and Myron's patches which
> > afaik conflict get serialized and pushed into an "acpi branch".
> > What the status there?
>
> Ying's patch ("Add RAM mapping support") fixes a real issue with using
> EINJ, so we need to do something with it. Myron's patches are a nice
> refactoring, but as far as I know, they don't fix any current issues,
> and there's still a lot of work to hash out how to handle bit_offset,
> bit_width, and access_width.
>
> I think we should regard Ying's patches as being first in line, and
> Myron's as work in progress. So I don't think we're ready to try to
> combine them and resolve conflicts yet -- Myron just has to update his
> work to follow whatever Ying does.
>
> > I'd like to add access width support to the APEI parts on top then.
>
> We should try very hard to treat APEI generic address structures the
> same way as all others. If that means some machines need firmware
> upgrades or some sort of quirks to work around BIOS bugs, we might
> have to accept that. I think a single set of GAS accessors plus a few
> quirks that fix the GAS structures is far better than having
> APEI-specific GAS accessors that are basically tailored to a few
> broken machines.
That does not account that Windows possibly also has duplicated GAS
parsing code in their APEI subsystem/driver.
Most APEI GAS structures have the mask value which makes bit_width
needless/redundant.
It's not unlikely that: Windows only ignores
bit width on APEI GAS structures with a mask value (HEST table only?).
Then quirking specific BIOSes is a bad idea, we want to resolve this
in a generic way and the only possibility (as so often) could be to
do it the same way we expect Windows does it. And if they have
duplicated GAS parsing code, we might need it as well.
Therefore I would not rush with making APEI code using the generic
interfaces. Possibly it's even wrong and will never happen.
I'd like to see an APEI GAS parsing code being able to handle all
(say as much as possible) APEI tables correctly first.
> To make acpi_read/acpi_write truly generic, we really need to nail
> down the semantics of GAS bit_offset, bit_width, and access_width.
>
> It would be useful to know how Windows deals with those. I don't
> think we have convincing information about it (all I remember is
> "here's a GAS that looks wrong, but Windows still works," but I don't
> think we know exactly *what* Windows is doing, or even whether it
> looks at the broken GAS). If we could figure out a way to feed a
> variety of structures to Windows and observe what happens with
> something like qemu, I think we'd learn a lot.
Sure, but we should not wait until someone (possibly never) comes up
with it, but make the APEI GAS parsing code to work with as much BIOSes
as possible in a generic way.
A 64 bit address cut down to 8 bits obviously is wrong. I agree that if
possible, such a condition should get checked and a firmware bug message
is appropriate.
> Or maybe we could learn enough from a conversation with BIOS writers
> about how they interpret the spec and what they expect to happen with
> non-zero bit_offset and bit_width.
You could try at a conference after some beers... This is extra difficult,
because of the NDA coverage of the Whea spec.
Thomas
next prev parent reply other threads:[~2011-11-16 19:58 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-11 23:05 [PATCH 0/2] acpi_read() bit_offset support Bjorn Helgaas
2011-11-11 23:05 ` [PATCH 1/2] ACPICA: acpi_read: update return value atomically Bjorn Helgaas
2011-11-11 23:05 ` [PATCH 2/2] ACPICA: support Generic Address Structure bit_offset in acpi_read/write Bjorn Helgaas
2011-11-15 15:13 ` Bjorn Helgaas
2011-11-15 16:49 ` Thomas Renninger
2011-11-16 15:45 ` Bjorn Helgaas
2011-11-16 19:58 ` Thomas Renninger [this message]
2011-11-17 0:15 ` Bjorn Helgaas
2011-12-12 15:39 ` Thomas Renninger
2011-11-16 23:27 ` Rafael J. Wysocki
2011-11-16 23:59 ` Bjorn Helgaas
2011-11-17 23:10 ` Rafael J. Wysocki
2011-11-17 0:51 ` Huang Ying
2011-11-17 20:27 ` Rafael J. Wysocki
2011-11-17 23:38 ` Thomas Renninger
2011-11-18 9:27 ` Rafael J. Wysocki
2011-11-18 1:04 ` Huang Ying
2011-11-18 9:25 ` Rafael J. Wysocki
2011-11-21 7:51 ` Huang Ying
2011-11-21 10:08 ` Russell King - ARM Linux
2011-11-28 23:03 ` Luck, Tony
2011-11-29 2:15 ` Huang Ying
2011-11-30 21:54 ` Luck, Tony
2011-12-01 0:49 ` Huang Ying
2011-12-01 0:53 ` Luck, Tony
2011-12-01 0:57 ` Huang Ying
2011-12-01 1:03 ` Luck, Tony
2011-12-01 1:11 ` Huang Ying
2011-12-01 17:35 ` Luck, Tony
2011-12-02 1:48 ` Huang Ying
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=201111162058.09549.trenn@suse.de \
--to=trenn@suse.de \
--cc=bhelgaas@google.com \
--cc=bondd@us.ibm.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=myron.stowe@redhat.com \
--cc=rjw@sisk.pl \
--cc=robert.moore@intel.com \
--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).