linux/drivers/acpi
Huang Ying f59c55d04b ACPI, APEI, Add APEI generic error status printing support
In APEI, Hardware error information reported by firmware to Linux
kernel is in the data structure of APEI generic error status (struct
acpi_hes_generic_status).  While now printk is used by Linux kernel to
report hardware error information to user space.

So, this patch adds printing support for the data structure, so that
the corresponding hardware error information can be reported to user
space via printk.

PCIe AER information printing is not implemented yet.  Will refactor the
original PCIe AER information printing code to avoid code duplicating.

The output format is as follow:

<error record> :=
APEI generic hardware error status
severity: <integer>, <severity string>
section: <integer>, severity: <integer>, <severity string>
flags: <integer>
<section flags strings>
fru_id: <uuid string>
fru_text: <string>
section_type: <section type string>
<section data>

<severity string>* := recoverable | fatal | corrected | info

<section flags strings># :=
[primary][, containment warning][, reset][, threshold exceeded]\
[, resource not accessible][, latent error]

<section type string> := generic processor error | memory error | \
PCIe error | unknown, <uuid string>

<section data> :=
<generic processor section data> | <memory section data> | \
<pcie section data> | <null>

<generic processor section data> :=
[processor_type: <integer>, <proc type string>]
[processor_isa: <integer>, <proc isa string>]
[error_type: <integer>
<proc error type strings>]
[operation: <integer>, <proc operation string>]
[flags: <integer>
<proc flags strings>]
[level: <integer>]
[version_info: <integer>]
[processor_id: <integer>]
[target_address: <integer>]
[requestor_id: <integer>]
[responder_id: <integer>]
[IP: <integer>]

<proc type string>* := IA32/X64 | IA64

<proc isa string>* := IA32 | IA64 | X64

<processor error type strings># :=
[cache error][, TLB error][, bus error][, micro-architectural error]

<proc operation string>* := unknown or generic | data read | data write | \
instruction execution

<proc flags strings># :=
[restartable][, precise IP][, overflow][, corrected]

<memory section data> :=
[error_status: <integer>]
[physical_address: <integer>]
[physical_address_mask: <integer>]
[node: <integer>]
[card: <integer>]
[module: <integer>]
[bank: <integer>]
[device: <integer>]
[row: <integer>]
[column: <integer>]
[bit_position: <integer>]
[requestor_id: <integer>]
[responder_id: <integer>]
[target_id: <integer>]
[error_type: <integer>, <mem error type string>]

<mem error type string>* :=
unknown | no error | single-bit ECC | multi-bit ECC | \
single-symbol chipkill ECC | multi-symbol chipkill ECC | master abort | \
target abort | parity error | watchdog timeout | invalid address | \
mirror Broken | memory sparing | scrub corrected error | \
scrub uncorrected error

<pcie section data> :=
[port_type: <integer>, <pcie port type string>]
[version: <integer>.<integer>]
[command: <integer>, status: <integer>]
[device_id: <integer>:<integer>:<integer>.<integer>
slot: <integer>
secondary_bus: <integer>
vendor_id: <integer>, device_id: <integer>
class_code: <integer>]
[serial number: <integer>, <integer>]
[bridge: secondary_status: <integer>, control: <integer>]

<pcie port type string>* := PCIe end point | legacy PCI end point | \
unknown | unknown | root port | upstream switch port | \
downstream switch port | PCIe to PCI/PCI-X bridge | \
PCI/PCI-X to PCIe bridge | root complex integrated endpoint device | \
root complex event collector

Where, [] designate corresponding content is optional

All <field string> description with * has the following format:

field: <integer>, <field string>

Where value of <integer> should be the position of "string" in <field
string> description. Otherwise, <field string> will be "unknown".

All <field strings> description with # has the following format:

field: <integer>
<field strings>

Where each string in <fields strings> corresponding to one set bit of
<integer>. The bit position is the position of "string" in <field
strings> description.

For more detailed explanation of every field, please refer to UEFI
specification version 2.3 or later, section Appendix N: Common
Platform Error Record.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2010-12-13 23:42:12 -05:00
..
acpica Merge branch 'gpe-defer' into release 2010-10-25 02:13:09 -04:00
apei ACPI, APEI, Add APEI generic error status printing support 2010-12-13 23:42:12 -05:00
ac.c ACPI ac/battery/sbs: sysfs I/F always built in, procfs I/F disabled by default 2010-10-15 22:02:38 -04:00
acpi_memhotplug.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
acpi_pad.c Merge branch 'x86-idle-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-10-21 13:45:38 -07:00
atomicio.c ACPI, APEI, Fix acpi_pre_map() return value 2010-09-29 14:02:16 -04:00
battery.c Merge branch 'battery' into release 2010-10-25 02:12:57 -04:00
blacklist.c Merge branch 'msi-dmi' into release 2010-10-08 22:37:46 -04:00
bus.c ACPI: install ACPI table handler before any dynamic tables being loaded 2010-10-26 04:55:29 -04:00
button.c ACPI/PNP: A HID value of an object never changes -> make it const 2010-10-01 19:28:51 -04:00
cm_sbs.c ACPI: Move definition of PREFIX from acpi_bus.h to internal..h 2009-08-28 19:57:27 -04:00
container.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
debugfs.c ACPI: debugfs custom_method open to non-root 2010-11-13 09:52:16 -08:00
dock.c Merge branch 'misc' into release 2010-10-26 14:51:00 -04:00
ec_sys.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
ec.c ACPI: Make Embedded Controller command timeout delay configurable 2010-10-22 01:21:30 -04:00
event.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
fan.c ACPI fan: remove deprecated procfs I/F 2010-10-15 22:02:47 -04:00
glue.c ACPI: Add the check of ADR flag in course of finding ACPI handle for PCI device 2010-07-26 22:32:13 -04:00
hed.c ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
internal.h Merge branch 'linus' into release 2010-08-15 01:06:31 -04:00
Kconfig Merge branch 'misc' into release 2010-10-26 14:51:00 -04:00
Makefile Merge branch 'linus' into release 2010-08-15 01:06:31 -04:00
numa.c gcc-4.6: ACPI: fix unused but set variables in ACPI 2010-08-15 00:53:08 -04:00
osl.c Merge branch 'misc' into release 2010-10-26 14:51:00 -04:00
pci_bind.c PCI / ACPI / PM: Platform support for PCI PME wake-up 2010-02-22 16:21:02 -08:00
pci_irq.c ACPI: remove unused declaration of proc_fs.h 2010-10-15 22:03:36 -04:00
pci_link.c ACPI: remove unused declaration of proc_fs.h 2010-10-15 22:03:36 -04:00
pci_root.c ACPI: remove unused declaration of proc_fs.h 2010-10-15 22:03:36 -04:00
pci_slot.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
power_meter.c power_meter: acpi_device_class "power_meter_resource" too long 2010-05-06 02:38:24 -04:00
power.c ACPI / PM: Fix reference counting of power resources 2010-10-23 01:56:14 -04:00
proc.c ACPI: remove deprecated ACPI procfs I/F 2010-08-15 00:27:51 -04:00
processor_core.c Merge branch 'pdc-regression' into release 2010-10-08 22:35:02 -04:00
processor_driver.c Merge branch 'misc' into release 2010-10-26 14:51:00 -04:00
processor_idle.c Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-10-26 17:28:37 -07:00
processor_perflib.c ACPI: Fix typos 2010-09-28 21:38:19 -04:00
processor_thermal.c ACPI: thermal: remove unused limit code 2010-10-19 13:58:34 -04:00
processor_throttling.c ACPI processor: make /proc/acpi/processor/*/throttle depends on CONFIG_ACPI_PROCFS 2010-10-15 22:03:17 -04:00
reboot.c ACPI: reboot.c: use new acpi_reset interface 2008-12-31 01:15:00 -05:00
sbs.c ACPI ac/battery/sbs: sysfs I/F always built in, procfs I/F disabled by default 2010-10-15 22:02:38 -04:00
sbshc.c sbshc: acpi_device_class "smbus_host_controller" too long 2010-05-06 02:38:25 -04:00
sbshc.h ACPI: SBS: Ignore alarms coming from unknown devices 2007-12-14 15:14:06 -05:00
scan.c Merge branch 'gpe-defer' into release 2010-10-25 02:13:09 -04:00
sleep.c Merge branch 'misc' into release 2010-10-26 14:51:00 -04:00
sleep.h ACPI: static sleep_states[] and acpi_gts_bfs_check 2010-10-19 13:44:37 -04:00
sysfs.c ACPI: fix build warnings resulting from merge window conflict 2010-09-28 21:38:01 -04:00
tables.c ACPI: delete the "acpi=ht" boot option 2010-03-14 20:58:38 -04:00
thermal.c ACPI thermal: remove deprecated procfs I/F 2010-10-15 22:03:01 -04:00
utils.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
video_detect.c ACPI video: fix a poor warning message 2010-09-28 21:38:01 -04:00
video.c ACPI video: remove deprecated procfs I/F 2010-10-15 22:03:08 -04:00
wakeup.c Merge branch 'acpica-gpe' into release 2010-08-15 00:25:40 -04:00