Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a55feeb1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull powerpc fixes from Michael Ellerman:

 - Fix the MCE code to use CONFIG_KVM_BOOK3S_64_HANDLER

 - Little endian fixes for post mobility device tree update

 - Add PVR for POWER8NVL processor

 - Fixes for hypervisor doorbell handling

* tag 'powerpc-4.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux:
  powerpc/book3s: Fix the MCE code to use CONFIG_KVM_BOOK3S_64_HANDLER
  powerpc/pseries: Little endian fixes for post mobility device tree update
  powerpc: Add PVR for POWER8NVL processor
  powerpc/powernv: Fixes for hypervisor doorbell handling
parents 0d33cd0a 44d5f6f5
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -153,6 +153,7 @@
#define PPC_INST_MFSPR_PVR_MASK		0xfc1fffff
#define PPC_INST_MFSPR_PVR_MASK		0xfc1fffff
#define PPC_INST_MFTMR			0x7c0002dc
#define PPC_INST_MFTMR			0x7c0002dc
#define PPC_INST_MSGSND			0x7c00019c
#define PPC_INST_MSGSND			0x7c00019c
#define PPC_INST_MSGCLR			0x7c0001dc
#define PPC_INST_MSGSNDP		0x7c00011c
#define PPC_INST_MSGSNDP		0x7c00011c
#define PPC_INST_MTTMR			0x7c0003dc
#define PPC_INST_MTTMR			0x7c0003dc
#define PPC_INST_NOP			0x60000000
#define PPC_INST_NOP			0x60000000
@@ -309,6 +310,8 @@
					___PPC_RB(b) | __PPC_EH(eh))
					___PPC_RB(b) | __PPC_EH(eh))
#define PPC_MSGSND(b)		stringify_in_c(.long PPC_INST_MSGSND | \
#define PPC_MSGSND(b)		stringify_in_c(.long PPC_INST_MSGSND | \
					___PPC_RB(b))
					___PPC_RB(b))
#define PPC_MSGCLR(b)		stringify_in_c(.long PPC_INST_MSGCLR | \
					___PPC_RB(b))
#define PPC_MSGSNDP(b)		stringify_in_c(.long PPC_INST_MSGSNDP | \
#define PPC_MSGSNDP(b)		stringify_in_c(.long PPC_INST_MSGSNDP | \
					___PPC_RB(b))
					___PPC_RB(b))
#define PPC_POPCNTB(a, s)	stringify_in_c(.long PPC_INST_POPCNTB | \
#define PPC_POPCNTB(a, s)	stringify_in_c(.long PPC_INST_POPCNTB | \
+3 −0
Original line number Original line Diff line number Diff line
@@ -608,13 +608,16 @@
#define   SRR1_ISI_N_OR_G	0x10000000 /* ISI: Access is no-exec or G */
#define   SRR1_ISI_N_OR_G	0x10000000 /* ISI: Access is no-exec or G */
#define   SRR1_ISI_PROT		0x08000000 /* ISI: Other protection fault */
#define   SRR1_ISI_PROT		0x08000000 /* ISI: Other protection fault */
#define   SRR1_WAKEMASK		0x00380000 /* reason for wakeup */
#define   SRR1_WAKEMASK		0x00380000 /* reason for wakeup */
#define   SRR1_WAKEMASK_P8	0x003c0000 /* reason for wakeup on POWER8 */
#define   SRR1_WAKESYSERR	0x00300000 /* System error */
#define   SRR1_WAKESYSERR	0x00300000 /* System error */
#define   SRR1_WAKEEE		0x00200000 /* External interrupt */
#define   SRR1_WAKEEE		0x00200000 /* External interrupt */
#define   SRR1_WAKEMT		0x00280000 /* mtctrl */
#define   SRR1_WAKEMT		0x00280000 /* mtctrl */
#define	  SRR1_WAKEHMI		0x00280000 /* Hypervisor maintenance */
#define	  SRR1_WAKEHMI		0x00280000 /* Hypervisor maintenance */
#define   SRR1_WAKEDEC		0x00180000 /* Decrementer interrupt */
#define   SRR1_WAKEDEC		0x00180000 /* Decrementer interrupt */
#define   SRR1_WAKEDBELL	0x00140000 /* Privileged doorbell on P8 */
#define   SRR1_WAKETHERM	0x00100000 /* Thermal management interrupt */
#define   SRR1_WAKETHERM	0x00100000 /* Thermal management interrupt */
#define	  SRR1_WAKERESET	0x00100000 /* System reset */
#define	  SRR1_WAKERESET	0x00100000 /* System reset */
#define   SRR1_WAKEHDBELL	0x000c0000 /* Hypervisor doorbell on P8 */
#define	  SRR1_WAKESTATE	0x00030000 /* Powersave exit mask [46:47] */
#define	  SRR1_WAKESTATE	0x00030000 /* Powersave exit mask [46:47] */
#define	  SRR1_WS_DEEPEST	0x00030000 /* Some resources not maintained,
#define	  SRR1_WS_DEEPEST	0x00030000 /* Some resources not maintained,
					  * may not be recoverable */
					  * may not be recoverable */
+20 −0
Original line number Original line Diff line number Diff line
@@ -437,6 +437,26 @@ static struct cpu_spec __initdata cpu_specs[] = {
		.machine_check_early	= __machine_check_early_realmode_p8,
		.machine_check_early	= __machine_check_early_realmode_p8,
		.platform		= "power8",
		.platform		= "power8",
	},
	},
	{	/* Power8NVL */
		.pvr_mask		= 0xffff0000,
		.pvr_value		= 0x004c0000,
		.cpu_name		= "POWER8NVL (raw)",
		.cpu_features		= CPU_FTRS_POWER8,
		.cpu_user_features	= COMMON_USER_POWER8,
		.cpu_user_features2	= COMMON_USER2_POWER8,
		.mmu_features		= MMU_FTRS_POWER8,
		.icache_bsize		= 128,
		.dcache_bsize		= 128,
		.num_pmcs		= 6,
		.pmc_type		= PPC_PMC_IBM,
		.oprofile_cpu_type	= "ppc64/power8",
		.oprofile_type		= PPC_OPROFILE_INVALID,
		.cpu_setup		= __setup_cpu_power8,
		.cpu_restore		= __restore_cpu_power8,
		.flush_tlb		= __flush_tlb_power8,
		.machine_check_early	= __machine_check_early_realmode_p8,
		.platform		= "power8",
	},
	{	/* Power8 DD1: Does not support doorbell IPIs */
	{	/* Power8 DD1: Does not support doorbell IPIs */
		.pvr_mask		= 0xffffff00,
		.pvr_mask		= 0xffffff00,
		.pvr_value		= 0x004d0100,
		.pvr_value		= 0x004d0100,
+2 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@


#include <asm/dbell.h>
#include <asm/dbell.h>
#include <asm/irq_regs.h>
#include <asm/irq_regs.h>
#include <asm/kvm_ppc.h>


#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
void doorbell_setup_this_cpu(void)
void doorbell_setup_this_cpu(void)
@@ -41,6 +42,7 @@ void doorbell_exception(struct pt_regs *regs)


	may_hard_irq_enable();
	may_hard_irq_enable();


	kvmppc_set_host_ipi(smp_processor_id(), 0);
	__this_cpu_inc(irq_stat.doorbell_irqs);
	__this_cpu_inc(irq_stat.doorbell_irqs);


	smp_ipi_demux();
	smp_ipi_demux();
+1 −1
Original line number Original line Diff line number Diff line
@@ -1408,7 +1408,7 @@ machine_check_handle_early:
	bne	9f			/* continue in V mode if we are. */
	bne	9f			/* continue in V mode if we are. */


5:
5:
#ifdef CONFIG_KVM_BOOK3S_64_HV
#ifdef CONFIG_KVM_BOOK3S_64_HANDLER
	/*
	/*
	 * We are coming from kernel context. Check if we are coming from
	 * We are coming from kernel context. Check if we are coming from
	 * guest. if yes, then we can continue. We will fall through
	 * guest. if yes, then we can continue. We will fall through
Loading