Merge remote-tracking branch 'scott/next' into next
Freescale updates from Scott. Mostly support for critical and machine check exceptions on 64-bit BookE, some new PCI suspend/resume work and misc bits.
This commit is contained in:
@@ -46,9 +46,8 @@
|
||||
#define EX_CR (1 * 8)
|
||||
#define EX_R10 (2 * 8)
|
||||
#define EX_R11 (3 * 8)
|
||||
#define EX_R13 (4 * 8)
|
||||
#define EX_R14 (5 * 8)
|
||||
#define EX_R15 (6 * 8)
|
||||
#define EX_R14 (4 * 8)
|
||||
#define EX_R15 (5 * 8)
|
||||
|
||||
/*
|
||||
* The TLB miss exception uses different slots.
|
||||
@@ -173,16 +172,6 @@ exc_##label##_book3e:
|
||||
ld r9,EX_TLB_R9(r12); \
|
||||
ld r8,EX_TLB_R8(r12); \
|
||||
mtlr r16;
|
||||
#define TLB_MISS_PROLOG_STATS_BOLTED \
|
||||
mflr r10; \
|
||||
std r8,PACA_EXTLB+EX_TLB_R8(r13); \
|
||||
std r9,PACA_EXTLB+EX_TLB_R9(r13); \
|
||||
std r10,PACA_EXTLB+EX_TLB_LR(r13);
|
||||
#define TLB_MISS_RESTORE_STATS_BOLTED \
|
||||
ld r16,PACA_EXTLB+EX_TLB_LR(r13); \
|
||||
ld r9,PACA_EXTLB+EX_TLB_R9(r13); \
|
||||
ld r8,PACA_EXTLB+EX_TLB_R8(r13); \
|
||||
mtlr r16;
|
||||
#define TLB_MISS_STATS_D(name) \
|
||||
addi r9,r13,MMSTAT_DSTATS+name; \
|
||||
bl .tlb_stat_inc;
|
||||
|
||||
@@ -36,26 +36,21 @@
|
||||
* *(r8 + GPR11) = saved r11
|
||||
*
|
||||
* 64-bit host
|
||||
* Expected inputs (GEN/GDBELL/DBG/MC exception types):
|
||||
* Expected inputs (GEN/GDBELL/DBG/CRIT/MC exception types):
|
||||
* r10 = saved CR
|
||||
* r13 = PACA_POINTER
|
||||
* *(r13 + PACA_EX##type + EX_R10) = saved r10
|
||||
* *(r13 + PACA_EX##type + EX_R11) = saved r11
|
||||
* SPRN_SPRG_##type##_SCRATCH = saved r13
|
||||
*
|
||||
* Expected inputs (CRIT exception type):
|
||||
* r10 = saved CR
|
||||
* r13 = PACA_POINTER
|
||||
* *(r13 + PACA_EX##type + EX_R10) = saved r10
|
||||
* *(r13 + PACA_EX##type + EX_R11) = saved r11
|
||||
* *(r13 + PACA_EX##type + EX_R13) = saved r13
|
||||
*
|
||||
* Expected inputs (TLB exception type):
|
||||
* r10 = saved CR
|
||||
* r12 = extlb pointer
|
||||
* r13 = PACA_POINTER
|
||||
* *(r13 + PACA_EX##type + EX_TLB_R10) = saved r10
|
||||
* *(r13 + PACA_EX##type + EX_TLB_R11) = saved r11
|
||||
* SPRN_SPRG_GEN_SCRATCH = saved r13
|
||||
* *(r12 + EX_TLB_R10) = saved r10
|
||||
* *(r12 + EX_TLB_R11) = saved r11
|
||||
* *(r12 + EX_TLB_R13) = saved r13
|
||||
* SPRN_SPRG_GEN_SCRATCH = saved r12
|
||||
*
|
||||
* Only the bolted version of TLB miss exception handlers is supported now.
|
||||
*/
|
||||
|
||||
@@ -287,11 +287,14 @@ extern int mmu_linear_psize;
|
||||
extern int mmu_vmemmap_psize;
|
||||
|
||||
struct tlb_core_data {
|
||||
/*
|
||||
* Per-core spinlock for e6500 TLB handlers (no tlbsrx.)
|
||||
* Must be the first struct element.
|
||||
*/
|
||||
u8 lock;
|
||||
|
||||
/* For software way selection, as on Freescale TLB1 */
|
||||
u8 esel_next, esel_max, esel_first;
|
||||
|
||||
/* Per-core spinlock for e6500 TLB handlers (no tlbsrx.) */
|
||||
u8 lock;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
|
||||
@@ -116,8 +116,11 @@ struct paca_struct {
|
||||
/* Shared by all threads of a core -- points to tcd of first thread */
|
||||
struct tlb_core_data *tcd_ptr;
|
||||
|
||||
/* We can have up to 3 levels of reentrancy in the TLB miss handler */
|
||||
u64 extlb[3][EX_TLB_SIZE / sizeof(u64)];
|
||||
/*
|
||||
* We can have up to 3 levels of reentrancy in the TLB miss handler,
|
||||
* in each of four exception levels (normal, crit, mcheck, debug).
|
||||
*/
|
||||
u64 extlb[12][EX_TLB_SIZE / sizeof(u64)];
|
||||
u64 exmc[8]; /* used for machine checks */
|
||||
u64 excrit[8]; /* used for crit interrupts */
|
||||
u64 exdbg[8]; /* used for debug interrupts */
|
||||
@@ -146,7 +149,7 @@ struct paca_struct {
|
||||
u8 io_sync; /* writel() needs spin_unlock sync */
|
||||
u8 irq_work_pending; /* IRQ_WORK interrupt while soft-disable */
|
||||
u8 nap_state_lost; /* NV GPR values lost in power7_idle */
|
||||
u64 sprg3; /* Saved user-visible sprg */
|
||||
u64 sprg_vdso; /* Saved user-visible sprg */
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
u64 tm_scratch; /* TM scratch area for reclaim */
|
||||
#endif
|
||||
|
||||
@@ -577,9 +577,13 @@
|
||||
#define SPRN_SPRG3 0x113 /* Special Purpose Register General 3 */
|
||||
#define SPRN_USPRG3 0x103 /* SPRG3 userspace read */
|
||||
#define SPRN_SPRG4 0x114 /* Special Purpose Register General 4 */
|
||||
#define SPRN_USPRG4 0x104 /* SPRG4 userspace read */
|
||||
#define SPRN_SPRG5 0x115 /* Special Purpose Register General 5 */
|
||||
#define SPRN_USPRG5 0x105 /* SPRG5 userspace read */
|
||||
#define SPRN_SPRG6 0x116 /* Special Purpose Register General 6 */
|
||||
#define SPRN_USPRG6 0x106 /* SPRG6 userspace read */
|
||||
#define SPRN_SPRG7 0x117 /* Special Purpose Register General 7 */
|
||||
#define SPRN_USPRG7 0x107 /* SPRG7 userspace read */
|
||||
#define SPRN_SRR0 0x01A /* Save/Restore Register 0 */
|
||||
#define SPRN_SRR1 0x01B /* Save/Restore Register 1 */
|
||||
#define SRR1_ISI_NOPT 0x40000000 /* ISI: Not found in hash */
|
||||
@@ -882,11 +886,10 @@
|
||||
* 64-bit embedded
|
||||
* - SPRG0 generic exception scratch
|
||||
* - SPRG2 TLB exception stack
|
||||
* - SPRG3 critical exception scratch and
|
||||
* CPU and NUMA node for VDSO getcpu (user visible)
|
||||
* - SPRG3 critical exception scratch (user visible, sorry!)
|
||||
* - SPRG4 unused (user visible)
|
||||
* - SPRG6 TLB miss scratch (user visible, sorry !)
|
||||
* - SPRG7 critical exception scratch
|
||||
* - SPRG7 CPU and NUMA node for VDSO getcpu (user visible)
|
||||
* - SPRG8 machine check exception scratch
|
||||
* - SPRG9 debug exception scratch
|
||||
*
|
||||
@@ -943,6 +946,8 @@
|
||||
#define SPRN_SPRG_SCRATCH0 SPRN_SPRG2
|
||||
#define SPRN_SPRG_HPACA SPRN_HSPRG0
|
||||
#define SPRN_SPRG_HSCRATCH0 SPRN_HSPRG1
|
||||
#define SPRN_SPRG_VDSO_READ SPRN_USPRG3
|
||||
#define SPRN_SPRG_VDSO_WRITE SPRN_SPRG3
|
||||
|
||||
#define GET_PACA(rX) \
|
||||
BEGIN_FTR_SECTION_NESTED(66); \
|
||||
@@ -986,6 +991,8 @@
|
||||
#define SPRN_SPRG_TLB_SCRATCH SPRN_SPRG6
|
||||
#define SPRN_SPRG_GEN_SCRATCH SPRN_SPRG0
|
||||
#define SPRN_SPRG_GDBELL_SCRATCH SPRN_SPRG_GEN_SCRATCH
|
||||
#define SPRN_SPRG_VDSO_READ SPRN_USPRG7
|
||||
#define SPRN_SPRG_VDSO_WRITE SPRN_SPRG7
|
||||
|
||||
#define SET_PACA(rX) mtspr SPRN_SPRG_PACA,rX
|
||||
#define GET_PACA(rX) mfspr rX,SPRN_SPRG_PACA
|
||||
@@ -1105,6 +1112,8 @@
|
||||
#define PVR_8560 0x80200000
|
||||
#define PVR_VER_E500V1 0x8020
|
||||
#define PVR_VER_E500V2 0x8021
|
||||
#define PVR_VER_E500MC 0x8023
|
||||
#define PVR_VER_E5500 0x8024
|
||||
#define PVR_VER_E6500 0x8040
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user