RE: [RFC PATCH V1 v4.10-rc3 1/1] acpi: apei: handle GSIV notification type
From: Shiju Jose <hidden>
Date: 2017-03-02 13:45:51
Also in:
kvm, kvmarm, linux-acpi, linux-arm-kernel
Possibly related (same subject, not in this thread)
- 2017-02-27 · [RFC PATCH V1 v4.10-rc3 1/1] acpi: apei: handle GSIV notification type · rostedt@goodmis.org (Steven Rostedt)
- 2017-02-27 · [RFC PATCH V1 v4.10-rc3 1/1] acpi: apei: handle GSIV notification type · Paul Gortmaker <hidden>
Hi James,
-----Original Message----- From: James Morse [mailto:james.morse@arm.com] Sent: 01 March 2017 17:04 To: Hanjun Guo; Shiju Jose Cc: christoffer.dall@linaro.org; marc.zyngier@arm.com; pbonzini@redhat.com; rkrcmar@redhat.com; linux@armlinux.org.uk; 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; nkaje@codeaurora.org; zjzhang@codeaurora.org; mark.rutland@arm.com; akpm@linux-foundation.org; eun.taik.lee@samsung.com; sandeepa.s.prabhu@gmail.com; labbott@redhat.com; shijie.huang@arm.com; rruigrok@codeaurora.org; paul.gortmaker@windriver.com; tn@semihalf.com; fu.wei@linaro.org; rostedt@goodmis.org; bristot@redhat.com; linux-arm- kernel@lists.infradead.org; kvmarm@lists.cs.columbia.edu; kvm@vger.kernel.org; linux-kernel@vger.kernel.org; linux- acpi@vger.kernel.org; linux-efi@vger.kernel.org; devel@acpica.org; Suzuki.Poulose@arm.com; punit.agrawal@arm.com; astone@redhat.com; harba@codeaurora.org; Tyler Baicar; joe@perches.com; John Garry; Gabriele Paoloni; Guohanjun (Hanjun Guo); wangxiongfeng (C); Zhengqiang (turing) Subject: Re: [RFC PATCH V1 v4.10-rc3 1/1] acpi: apei: handle GSIV notification type Hi Hanjun, On 01/03/17 08:27, Hanjun Guo wrote:quoted
On 2017/2/28 21:22, James Morse wrote:quoted
On 27/02/17 18:19, Shiju Jose wrote:quoted
Add a new GHES error source handling function for GSIV(GlobalSystemquoted
quoted
quoted
Interrupt Vector). If an error source's notification type is GSIV, then this handling function can be registered into the GSIV handler and it can parse and report error information when they occur.I'm missing some of the story here, but how is GSIV different from 'External Interrupt'? I'm guessing something other than the CPUtakes this 'interrupt'...quoted
Yes, it's the same from CPU side (they are interrupts!), but there is history behind them and the usage is different. I think External Interrupt was introduced before ACPI is available on ARM (hardware reduced platforms), so I guess it was used for errors reported to OS which were not using SCI mechanism, for example, some IO error reporting. For External Interrupt, we don't use the ACPI event system, so forthequoted
firmware, it just report the errors associate with the interrupt number, the kernel map the interrupt number and install the irq handler for it. For GSIV based event, it was introduced for hardware reduced platform in recent ACPI revision, and ARM64 is one of its consumers. When errors are reported via GSIV, ACPI event notification needs to be implemented and requires the platform to define a hardware error device (PNP0C33) in ACPI namespace, and also a generic event device ACPI0013.Okay, so for APEI this really means PNP0C33 was Notify()d. 'SCI' means the same but the route they take to get into APEI is different.quoted
For example, if we are using SPI (ARM GIC) 100 to report errors,therequoted
is a ACPI0013 driver in drivers/acpi/evged.c to register the irq,when Aha, this is where the interrupt-magic happens.quoted
error happened and trigger the interrupt, ACPI0013 driver will notify the error device (PNP0C33), then error device driver (drivers/acpi/hed.c) will process the error data form APEI table...quoted
quoted
The GHES GSIV code below is identical to the behaviour of the SCI Notification type... are these two names for the same thing? (I'm confused!)SCI is also an 'interrupt' but it's a special irq number for ACPI event, and it has GPE (general purpose event) registers behind it, which is used only on Intel platforms. SCI based event use Method(\_GPE._L0x) to notify the error device (PNP0C33), but GSIV is used for HW-reduced platform which has no GPEs.quoted
Hope it can clarify something :)Yes thanks! (the mist is slowly clearing...) If ACPI_HEST_NOTIFY_SCI and ACPI_HEST_NOTIFY_GSIV both mean 'receive notification from PNP0C33', is there any point having separate lists and add/remove functions for them? Instead, could we rename Linux's ghes_notifier_sci() and ghes_sci list to describe 'hed' instead, then group the two case statements together? There would be no need to add a selectable CONFIG_ACPI_APEI_GSIV, as SCI is already built-in and this way the code added is tiny. The only thing we would lose is the name 'GSIV' in the not-supported error message which we don't need if its always supported.
This method was tested ok. However we were not sure about reusing/changing the existing ghes_notifier_sci() for gsiv will be accepted. Thus added a separate handling function ghes_notifier_gsiv() for gsiv. Thanks, Shiju
Thanks, James