1. 08 2月, 2019 2 次提交
  2. 21 12月, 2018 1 次提交
  3. 12 5月, 2018 1 次提交
  4. 02 5月, 2018 1 次提交
    • B
      ghes, EDAC: Fix ghes_edac registration · cc7f3f13
      Borislav Petkov 提交于
      Tony reported seeing
      
        "Internal error: Can't find EDAC structure"
      
      when injecting correctable errors due to the fact that ghes_edac would
      still load even if the whitelist won't hit. Drop the pr_err() in
      ghes_edac_report_mem_error() for now due to the hacky way how ghes_edac
      depends on ghes.c.
      
      While at it, make ghes_edac_register() return an error if it doesn't hit
      in the whitelist as it is the only sensible thing to do in that
      situation.
      
      Furthermore, move the call to it to happen last in ghes_probe() so that
      GHES initializing properly does not depend on ghes_edac init at all
      as latter is only reporting errors and not required for GHES's proper
      functioning.
      Reviewed-by: NToshi Kani <toshi.kani@hpe.com>
      Tested-by: NSughosh Ganu <sughosh.ganu@arm.com>
      Signed-off-by: NBorislav Petkov <bp@suse.de>
      Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
      Cc: Tony Luck <tony.luck@intel.com>
      Link: https://lkml.kernel.org/r/20180420182015.zao3olss4tvvlxki@agluck-desk
      cc7f3f13
  5. 24 1月, 2018 1 次提交
  6. 05 12月, 2017 3 次提交
  7. 07 11月, 2017 2 次提交
  8. 03 11月, 2017 1 次提交
    • K
      ACPI / APEI: Convert timers to use timer_setup() · d5272003
      Kees Cook 提交于
      In preparation for unconditionally passing the struct timer_list pointer to
      all timer callbacks, switch to using the new timer_setup() and from_timer()
      to pass the timer pointer explicitly.
      
      Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: Tyler Baicar <tbaicar@codeaurora.org>
      Cc: Will Deacon <will.deacon@arm.com>
      Cc: James Morse <james.morse@arm.com>
      Cc: "Jonathan (Zhixiong) Zhang" <zjzhang@codeaurora.org>
      Cc: Shiju Jose <shiju.jose@huawei.com>
      Cc: linux-acpi@vger.kernel.org
      Signed-off-by: NKees Cook <keescook@chromium.org>
      Tested-by: NTyler Baicar <tbaicar@codeaurora.org>
      d5272003
  9. 23 10月, 2017 1 次提交
  10. 11 10月, 2017 1 次提交
  11. 28 9月, 2017 1 次提交
  12. 30 8月, 2017 1 次提交
  13. 31 7月, 2017 1 次提交
  14. 23 6月, 2017 6 次提交
  15. 22 6月, 2017 2 次提交
  16. 06 6月, 2017 1 次提交
  17. 22 5月, 2017 1 次提交
  18. 19 4月, 2017 1 次提交
  19. 29 3月, 2017 1 次提交
  20. 02 3月, 2017 1 次提交
  21. 02 12月, 2016 1 次提交
    • P
      ACPI / APEI: Fix NMI notification handling · a545715d
      Prarit Bhargava 提交于
      When removing and adding cpu 0 on a system with GHES NMI the following stack
      trace is seen when re-adding the cpu:
      
      WARNING: CPU: 0 PID: 0 at arch/x86/kernel/apic/apic.c:1349 setup_local_APIC+
      Modules linked in: nfsv3 rpcsec_gss_krb5 nfsv4 nfs fscache coretemp intel_ra
      CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.9.0-rc6+ #2
      Call Trace:
       dump_stack+0x63/0x8e
       __warn+0xd1/0xf0
       warn_slowpath_null+0x1d/0x20
       setup_local_APIC+0x275/0x370
       apic_ap_setup+0xe/0x20
       start_secondary+0x48/0x180
       set_init_arg+0x55/0x55
       early_idt_handler_array+0x120/0x120
       x86_64_start_reservations+0x2a/0x2c
       x86_64_start_kernel+0x13d/0x14c
      
      During the cpu bringup, wakeup_cpu_via_init_nmi() is called and issues an
      NMI on CPU 0.  The GHES NMI handler, ghes_notify_nmi() runs the
      ghes_proc_irq_work work queue which ends up setting IRQ_WORK_VECTOR
      (0xf6).  The "faulty" IR line set at arch/x86/kernel/apic/apic.c:1349 is  also
      0xf6 (specifically APIC IRR for irqs 255 to 224 is 0x400000) which confirms
      that something has set the IRQ_WORK_VECTOR line prior to the APIC being
      initialized.
      
      Commit 2383844d ("GHES: Elliminate double-loop in the NMI handler")
      incorrectly modified the behavior such that the handler returns
      NMI_HANDLED only if an error was processed, and incorrectly runs the ghes
      work queue for every NMI.
      
      This patch modifies the ghes_proc_irq_work() to run as it did prior to
      2383844d ("GHES: Elliminate double-loop in the NMI handler") by
      properly returning NMI_HANDLED and only calling the work queue if
      NMI_HANDLED has been set.
      
      Fixes: 2383844d (GHES: Elliminate double-loop in the NMI handler)
      Signed-off-by: NPrarit Bhargava <prarit@redhat.com>
      Reviewed-by: NBorislav Petkov <bp@suse.de>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      a545715d
  22. 24 10月, 2016 1 次提交
  23. 21 9月, 2016 1 次提交
  24. 10 3月, 2016 1 次提交
    • P
      drivers/acpi: make apei/ghes.c more explicitly non-modular · 020bf066
      Paul Gortmaker 提交于
      The Kconfig currently controlling compilation of this code is:
      
      config ACPI_APEI_GHES
            bool "APEI Generic Hardware Error Source"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      Since module_init translates to device_initcall in the non-modular
      case, the init ordering remains unchanged with this commit.
      
      We replace module.h with moduleparam.h as we are keeping the
      pre-existing module_param that the file has, as currently that is
      the easiest way to maintain compatibility with the existing boot
      arg use cases.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      020bf066
  25. 14 9月, 2015 1 次提交
    • J
      acpi/apei: Use appropriate pgprot_t to map GHES memory · 8ece249a
      Jonathan (Zhixiong) Zhang 提交于
      If the ACPI APEI firmware handles hardware error first (called
      "firmware first handling"), the firmware updates the GHES memory
      region with hardware error record (called "generic hardware
      error record"). Essentially the firmware writes hardware error
      records in the GHES memory region, triggers an NMI/interrupt,
      then the GHES driver goes off and grabs the error record from
      the GHES region.
      
      The kernel currently maps the GHES memory region as cacheable
      (PAGE_KERNEL) for all architectures. However, on some arm64
      platforms, there is a mismatch between how the kernel maps the
      GHES region (PAGE_KERNEL) and how the firmware maps it
      (EFI_MEMORY_UC, ie. uncacheable), leading to the possibility of
      the kernel GHES driver reading stale data from the cache when it
      receives the interrupt.
      
      With stale data being read, the kernel is unaware there is new
      hardware error to be handled when there actually is; this may
      lead to further damage in various scenarios, such as error
      propagation caused data corruption. If uncorrected error (such
      as double bit ECC error) happened in memory operation and if the
      kernel is unaware of such an event happening, errorneous data may
      be propagated to the disk.
      
      Instead GHES memory region should be mapped with page protection
      type according to what is returned from arch_apei_get_mem_attribute().
      Signed-off-by: NJonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
      Signed-off-by: NMatt Fleming <matt.fleming@intel.com>
      [ Small stylistic tweaks. ]
      Reviewed-by: NMatt Fleming <matt@codeblueprint.co.uk>
      Acked-by: NBorislav Petkov <bp@suse.de>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/r/1441372302-23242-3-git-send-email-matt@codeblueprint.co.ukSigned-off-by: NIngo Molnar <mingo@kernel.org>
      8ece249a
  26. 08 7月, 2015 1 次提交
  27. 28 4月, 2015 4 次提交