03 Aug, 2011

1 commit

  • EINJ parameter support is only usable for some specific BIOS.
    Originally, it is expected to have no harm for BIOS does not support
    it. But now, we found it will cause issue (memory overwriting) for
    some BIOS. So param support is disabled by default and only enabled
    when newly added module parameter named "param_extension" is
    explicitly specified.

    Signed-off-by: Huang Ying
    Cc: Matthew Garrett
    Acked-by: Don Zickus
    Acked-by: Tony Luck
    Signed-off-by: Len Brown

    Huang Ying
     

22 Mar, 2011

1 commit

  • The AER error information printing support is implemented in
    drivers/pci/pcie/aer/aer_print.c. So some string constants, functions
    and macros definitions can be re-used without being exported.

    The original PCIe AER error information printing function is not
    re-used directly because the overall format is quite different. And
    changing the original printing format may make some original users'
    scripts broken.

    Signed-off-by: Huang Ying
    CC: Jesse Barnes
    CC: Zhang Yanmin
    Signed-off-by: Len Brown

    Huang Ying
     

14 Dec, 2010

1 commit

  • 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:

    :=
    APEI generic hardware error status
    severity: ,
    section: , severity: ,
    flags:

    fru_id:
    fru_text:
    section_type:

    * := recoverable | fatal | corrected | info

    # :=
    [primary][, containment warning][, reset][, threshold exceeded]\
    [, resource not accessible][, latent error]

    := generic processor error | memory error | \
    PCIe error | unknown,

    :=
    | | \
    |

    :=
    [processor_type: , ]
    [processor_isa: , ]
    [error_type:
    ]
    [operation: , ]
    [flags:
    ]
    [level: ]
    [version_info: ]
    [processor_id: ]
    [target_address: ]
    [requestor_id: ]
    [responder_id: ]
    [IP: ]

    * := IA32/X64 | IA64

    * := IA32 | IA64 | X64

    # :=
    [cache error][, TLB error][, bus error][, micro-architectural error]

    * := unknown or generic | data read | data write | \
    instruction execution

    # :=
    [restartable][, precise IP][, overflow][, corrected]

    :=
    [error_status: ]
    [physical_address: ]
    [physical_address_mask: ]
    [node: ]
    [card: ]
    [module: ]
    [bank: ]
    [device: ]
    [row: ]
    [column: ]
    [bit_position: ]
    [requestor_id: ]
    [responder_id: ]
    [target_id: ]
    [error_type: , ]

    * :=
    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

    :=
    [port_type: , ]
    [version: .]
    [command: , status: ]
    [device_id: ::.
    slot:
    secondary_bus:
    vendor_id: , device_id:
    class_code: ]
    [serial number: , ]
    [bridge: secondary_status: , control: ]

    * := 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 description with * has the following format:

    field: ,

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

    All description with # has the following format:

    field:

    Where each string in corresponding to one set bit of
    . The bit position is the position of "string" in 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
    Signed-off-by: Len Brown

    Huang Ying
     

20 May, 2010

2 commits

  • Some hardware error injection needs parameters, for example, it is
    useful to specify memory address and memory address mask for memory
    errors.

    Some BIOSes allow parameters to be specified via an unpublished
    extension. This patch adds support to it. The parameters will be
    ignored on machines without necessary BIOS support.

    Signed-off-by: Huang Ying
    Signed-off-by: Andi Kleen
    Signed-off-by: Len Brown

    Huang Ying
     
  • Add document for APEI, including kernel parameters and EINJ debug file
    sytem interface.

    Signed-off-by: Huang Ying
    Signed-off-by: Andi Kleen
    Signed-off-by: Len Brown

    Huang Ying