linux/arch/powerpc/platforms/powernv
Mahesh Salgaonkar 6507955c97 powerpc/powernv: Fallback to old HMI handling behavior for old firmware
Recently we moved HMI handling into Linux kernel instead of taking
HMI directly in OPAL. This new change is dependent on new OPAL call
for HMI recovery which was introduced in newer firmware. While this new
change works fine with latest OPAL firmware, we broke the HMI handling
if we run newer kernel on old OPAL firmware that results in system hang.

This patch fixes this issue by falling back to old HMI behavior on older
OPAL firmware.

This patch introduces a check for opal token OPAL_HANDLE_HMI to see
if we are running on newer firmware or old firmware. On newer firmware
this check would return OPAL_TOKEN_PRESENT, otherwise we are running on
old firmware and fallback to old HMI behavior.

Old firmware: POWER8 System Firmware Release as of today <= SV810_087
Action: Let OPAL handle HMIs

Newer firmware: in development/yet to be released.
Action: Let Linux host handle HMIs.

This patch depends on opal check token patch posted at ppc-devel
https://lists.ozlabs.org/pipermail/linuxppc-dev/2014-August/120224.html

Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
[mpe: Minor comment and printk rewording]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2014-10-13 18:09:50 +11:00
..
eeh-ioda.c powerpc/powernv: Fetch frozen PE on top level 2014-09-30 17:15:20 +10:00
eeh-powernv.c powerpc/eeh: Introduce eeh_ops::err_inject 2014-09-30 17:15:10 +10:00
Kconfig powerpc/powernv: Enable POWER8 doorbell IPIs 2014-06-11 17:05:12 +10:00
Makefile powerpc/powernv: Invoke opal call to handle hmi. 2014-08-05 16:33:52 +10:00
opal-async.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal-dump.c powerpc/powernv: Check OPAL dump calls exist before using 2014-09-25 23:14:36 +10:00
opal-elog.c powerpc/powernv: Check OPAL elog calls exist before using 2014-09-25 23:14:36 +10:00
opal-flash.c powerpc/powernv: Pass buffer size to OPAL validate flash call 2014-06-05 14:54:04 +10:00
opal-hmi.c powerpc: use machine_subsys_initcall() for opal_hmi_handler_init() 2014-09-09 19:02:46 +10:00
opal-lpc.c powerpc/powernv: Fix endian bug in LPC bus debugfs accessors 2014-10-07 16:01:18 +11:00
opal-memory-errors.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal-msglog.c powerpc/powernv: Fix reading of OPAL msglog 2014-06-11 17:03:36 +10:00
opal-nvram.c powerpc: Add printk levels to powernv platform code 2014-10-02 17:33:55 +10:00
opal-rtc.c powerpc/powernv: Check OPAL RTC calls exists before using 2014-09-25 23:14:35 +10:00
opal-sensor.c powerpc/powernv: Fix endian issues with sensor code 2014-04-09 12:52:49 +10:00
opal-sysparam.c powernv: Fix permissions on sysparam sysfs entries 2014-06-11 17:03:15 +10:00
opal-tracepoints.c powerpc/jump_label: use HAVE_JUMP_LABEL? 2014-09-25 23:14:45 +10:00
opal-wrappers.S powerpc/opal: Add PHB to cxl mode call 2014-10-08 20:15:52 +11:00
opal-xscom.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
opal.c powerpc/powernv: Fallback to old HMI handling behavior for old firmware 2014-10-13 18:09:50 +11:00
pci-ioda.c powerpc/powerpc: Add new PCIe functions for allocating cxl interrupts 2014-10-08 20:15:44 +11:00
pci-p5ioc2.c powerpc/powernv: Add a page size parameter to pnv_pci_setup_iommu_table() 2014-07-11 16:05:53 +10:00
pci.c powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
pci.h powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
powernv.h powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
rng.c powerpc/powernv: Switch powernv drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
setup.c powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
smp.c powerpc/powernv: Don't call generic code on offline cpus 2014-09-25 23:14:50 +10:00
subcore-asm.S powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.c powerpc: Ensure global functions include their prototype 2014-09-25 23:14:42 +10:00
subcore.h powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00