linux_dsm_epyc7002/arch/powerpc/platforms/pseries
Balbir Singh e71ff982ae powerpc/pseries: Fix passing of pp0 in updatepp() and updateboltedpp()
Once upon a time there were only two PP (page protection) bits. In ISA
2.03 an additional PP bit was added, but because of the layout of the
HPTE it could not be made contiguous with the existing PP bits.

The result is that we now have three PP bits, named pp0, pp1, pp2,
where pp0 occupies bit 63 of dword 1 of the HPTE and pp1 and pp2
occupy bits 1 and 0 respectively. Until recently Linux hasn't used
pp0, however with the addition of _PAGE_KERNEL_RO we started using it.

The problem arises in the LPAR code, where we need to translate the PP
bits into the argument for the H_PROTECT hypercall. Currently the code
only passes bits 0-2 of newpp, which covers pp1, pp2 and N (no
execute), meaning pp0 is not passed to the hypervisor at all.

We can't simply pass it through in bit 63, as that would collide with a
different field in the flags argument, as defined in PAPR. Instead we
have to shift it down to bit 8 (IBM bit 55).

Fixes: e58e87adc8 ("powerpc/mm: Update _PAGE_KERNEL_RO")
Cc: stable@vger.kernel.org # v4.7+
Signed-off-by: Balbir Singh <bsingharora@gmail.com>
[mpe: Simplify the test, rework change log]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-07-03 23:12:19 +10:00
..
cmm.c powerpc/pseries: Fix typo in parameter description 2017-02-10 15:20:07 +11:00
dlpar.c powerpc/pseries: Fix of_node_put() underflow during DLPAR remove 2017-04-25 00:24:59 +10:00
dtl.c powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
eeh_pseries.c powerpc/pci: Always print PHB and PE numbers as hexadecimal 2016-11-22 11:57:07 +11:00
event_sources.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
firmware.c Merge branch 'topic/ppc-kvm' into next 2017-02-14 17:18:29 +11:00
hotplug-cpu.c powerpc: Fix some spelling mistakes 2017-06-05 16:50:15 +10:00
hotplug-memory.c Merge branch 'fixes' into next 2017-07-03 23:05:43 +10:00
hvCall_inst.c powerpc/pseries: Move struct hcall_stats to hvCall_inst.c 2017-03-20 19:02:49 +11:00
hvCall.S powerpc, jump_label: Include linux/jump_label.h to get HAVE_JUMP_LABEL define 2015-04-09 09:40:29 +02:00
hvconsole.c powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
hvcserver.c powerpc/pseries/hvcserver: don't memset pi_buff if it is null 2015-10-09 08:03:03 +11:00
ibmebus.c of: Add function for generating a DT modalias with a newline 2017-03-22 14:56:13 -05:00
io_event_irq.c powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
iommu.c powerpc/pseries: Enable VFIO 2017-04-28 21:26:54 +10:00
Kconfig powerpc/perf/hv-24x7: Support v2 of the hypervisor API 2017-07-02 20:40:33 +10:00
kexec.c powerpc/pseries: Remove MPIC from pseries kexec 2016-06-14 13:58:27 +10:00
lpar.c powerpc/pseries: Fix passing of pp0 in updatepp() and updateboltedpp() 2017-07-03 23:12:19 +10:00
lparcfg.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
Makefile powerpc: Change places using CONFIG_KEXEC to use CONFIG_KEXEC_CORE instead. 2016-11-30 23:15:11 +11:00
mobility.c powerpc/pseries: Update affinity for memory and cpus specified in a PRRN event 2017-02-02 20:36:38 +11:00
msi.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
nvram.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
of_helpers.c powerpc/pseries: Correct string length in pseries_of_derive_parent() 2015-10-28 12:08:18 +09:00
of_helpers.h powerpc/pseries: extract of_helpers module 2015-10-05 21:11:24 +11:00
offline_states.h powerpc/smp: soft-replugged CPUs must go back to start_secondary 2011-04-01 15:37:09 +11:00
pci_dlpar.c powerpc/pseries: use pci_host_bridge.release_fn() to kfree(phb) 2016-08-22 11:09:33 +10:00
pci.c powerpc/pseries: use pci_host_bridge.release_fn() to kfree(phb) 2016-08-22 11:09:33 +10:00
power.c powerpc/sparse: Include headers containing prototypes 2016-06-16 22:40:19 +10:00
pseries_energy.c powerpc/sparse: make some things static 2016-06-16 22:23:11 +10:00
pseries.h powerpc/pseries: Move CMO code from plapr_wrappers.h to platforms/pseries 2016-11-17 17:11:46 +11:00
ras.c powerpc/pseries: Implement NMI IPI with H_SIGNAL_SYS_RESET 2017-04-28 21:02:25 +10:00
reconfig.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
rng.c powerpc: Use hardware RNG for arch_get_random_seed_* not arch_get_random_* 2015-07-23 19:52:03 +10:00
scanlog.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
setup.c powerpc/mm: Add translation mode information in /proc/cpuinfo 2017-03-31 23:09:50 +11:00
smp.c powerpc/smp: Convert NR_CPUS to nr_cpu_ids 2017-06-28 13:08:16 +10:00
suspend.c powerpc/pseries: Switch pseries drivers to use machine_xxx_initcall() 2014-07-28 14:11:26 +10:00
vio.c powerpc/vfio_spapr_tce: Add reference counting to iommu_table 2017-03-30 21:42:11 +11:00