diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-25 14:08:17 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-07-25 14:08:17 -0400 |
| commit | 5047887caf1806f31652210df27fb62a7c43f27d (patch) | |
| tree | 4098ead40c1aa7b904167f67cff87a247cfa0b6c /include/asm-powerpc | |
| parent | 996abf053eec4d67136be8b911bbaaf989cfb99c (diff) | |
| parent | 973b7d83ebeb1e34b8bee69208916e5f0e2353c3 (diff) | |
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (34 commits)
powerpc: Wireup new syscalls
Move update_mmu_cache() declaration from tlbflush.h to pgtable.h
powerpc/pseries: Remove kmalloc call in handling writes to lparcfg
powerpc/pseries: Update arch vector to indicate support for CMO
ibmvfc: Add support for collaborative memory overcommit
ibmvscsi: driver enablement for CMO
ibmveth: enable driver for CMO
ibmveth: Automatically enable larger rx buffer pools for larger mtu
powerpc/pseries: Verify CMO memory entitlement updates with virtual I/O
powerpc/pseries: vio bus support for CMO
powerpc/pseries: iommu enablement for CMO
powerpc/pseries: Add CMO paging statistics
powerpc/pseries: Add collaborative memory manager
powerpc/pseries: Utilities to set firmware page state
powerpc/pseries: Enable CMO feature during platform setup
powerpc/pseries: Split retrieval of processor entitlement data into a helper routine
powerpc/pseries: Add memory entitlement capabilities to /proc/ppc64/lparcfg
powerpc/pseries: Split processor entitlement retrieval and gathering to helper routines
powerpc/pseries: Remove extraneous error reporting for hcall failures in lparcfg
powerpc: Fix compile error with binutils 2.15
...
Fixed up conflict in arch/powerpc/platforms/52xx/Kconfig manually.
Diffstat (limited to 'include/asm-powerpc')
| -rw-r--r-- | include/asm-powerpc/cputable.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/elf.h | 8 | ||||
| -rw-r--r-- | include/asm-powerpc/firmware.h | 3 | ||||
| -rw-r--r-- | include/asm-powerpc/hvcall.h | 23 | ||||
| -rw-r--r-- | include/asm-powerpc/lppaca.h | 5 | ||||
| -rw-r--r-- | include/asm-powerpc/machdep.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/mpc52xx_psc.h | 40 | ||||
| -rw-r--r-- | include/asm-powerpc/pgtable.h | 13 | ||||
| -rw-r--r-- | include/asm-powerpc/syscalls.h | 1 | ||||
| -rw-r--r-- | include/asm-powerpc/systbl.h | 6 | ||||
| -rw-r--r-- | include/asm-powerpc/system.h | 2 | ||||
| -rw-r--r-- | include/asm-powerpc/tlbflush.h | 11 | ||||
| -rw-r--r-- | include/asm-powerpc/unistd.h | 8 | ||||
| -rw-r--r-- | include/asm-powerpc/vio.h | 27 |
14 files changed, 130 insertions, 21 deletions
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h index 2a3e9075a5a..ef8a248dfd5 100644 --- a/include/asm-powerpc/cputable.h +++ b/include/asm-powerpc/cputable.h | |||
| @@ -127,6 +127,8 @@ extern struct cpu_spec *identify_cpu(unsigned long offset, unsigned int pvr); | |||
| 127 | extern void do_feature_fixups(unsigned long value, void *fixup_start, | 127 | extern void do_feature_fixups(unsigned long value, void *fixup_start, |
| 128 | void *fixup_end); | 128 | void *fixup_end); |
| 129 | 129 | ||
| 130 | extern const char *powerpc_base_platform; | ||
| 131 | |||
| 130 | #endif /* __ASSEMBLY__ */ | 132 | #endif /* __ASSEMBLY__ */ |
| 131 | 133 | ||
| 132 | /* CPU kernel features */ | 134 | /* CPU kernel features */ |
diff --git a/include/asm-powerpc/elf.h b/include/asm-powerpc/elf.h index 89664675b46..80d1f399ee5 100644 --- a/include/asm-powerpc/elf.h +++ b/include/asm-powerpc/elf.h | |||
| @@ -217,6 +217,14 @@ typedef elf_vrregset_t elf_fpxregset_t; | |||
| 217 | 217 | ||
| 218 | #define ELF_PLATFORM (cur_cpu_spec->platform) | 218 | #define ELF_PLATFORM (cur_cpu_spec->platform) |
| 219 | 219 | ||
| 220 | /* While ELF_PLATFORM indicates the ISA supported by the platform, it | ||
| 221 | * may not accurately reflect the underlying behavior of the hardware | ||
| 222 | * (as in the case of running in Power5+ compatibility mode on a | ||
| 223 | * Power6 machine). ELF_BASE_PLATFORM allows ld.so to load libraries | ||
| 224 | * that are tuned for the real hardware. | ||
| 225 | */ | ||
| 226 | #define ELF_BASE_PLATFORM (powerpc_base_platform) | ||
| 227 | |||
| 220 | #ifdef __powerpc64__ | 228 | #ifdef __powerpc64__ |
| 221 | # define ELF_PLAT_INIT(_r, load_addr) do { \ | 229 | # define ELF_PLAT_INIT(_r, load_addr) do { \ |
| 222 | _r->gpr[2] = load_addr; \ | 230 | _r->gpr[2] = load_addr; \ |
diff --git a/include/asm-powerpc/firmware.h b/include/asm-powerpc/firmware.h index ef328995ba9..3a179827528 100644 --- a/include/asm-powerpc/firmware.h +++ b/include/asm-powerpc/firmware.h | |||
| @@ -46,6 +46,7 @@ | |||
| 46 | #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) | 46 | #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) |
| 47 | #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) | 47 | #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) |
| 48 | #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000002000000) | 48 | #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000002000000) |
| 49 | #define FW_FEATURE_CMO ASM_CONST(0x0000000004000000) | ||
| 49 | 50 | ||
| 50 | #ifndef __ASSEMBLY__ | 51 | #ifndef __ASSEMBLY__ |
| 51 | 52 | ||
| @@ -58,7 +59,7 @@ enum { | |||
| 58 | FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | | 59 | FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | |
| 59 | FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | | 60 | FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | |
| 60 | FW_FEATURE_BULK | FW_FEATURE_XDABR | FW_FEATURE_MULTITCE | | 61 | FW_FEATURE_BULK | FW_FEATURE_XDABR | FW_FEATURE_MULTITCE | |
| 61 | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR, | 62 | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | FW_FEATURE_CMO, |
| 62 | FW_FEATURE_PSERIES_ALWAYS = 0, | 63 | FW_FEATURE_PSERIES_ALWAYS = 0, |
| 63 | FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | 64 | FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, |
| 64 | FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | 65 | FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, |
diff --git a/include/asm-powerpc/hvcall.h b/include/asm-powerpc/hvcall.h index bf6cd7cb996..fbe2932fa9e 100644 --- a/include/asm-powerpc/hvcall.h +++ b/include/asm-powerpc/hvcall.h | |||
| @@ -92,6 +92,11 @@ | |||
| 92 | #define H_EXACT (1UL<<(63-24)) /* Use exact PTE or return H_PTEG_FULL */ | 92 | #define H_EXACT (1UL<<(63-24)) /* Use exact PTE or return H_PTEG_FULL */ |
| 93 | #define H_R_XLATE (1UL<<(63-25)) /* include a valid logical page num in the pte if the valid bit is set */ | 93 | #define H_R_XLATE (1UL<<(63-25)) /* include a valid logical page num in the pte if the valid bit is set */ |
| 94 | #define H_READ_4 (1UL<<(63-26)) /* Return 4 PTEs */ | 94 | #define H_READ_4 (1UL<<(63-26)) /* Return 4 PTEs */ |
| 95 | #define H_PAGE_STATE_CHANGE (1UL<<(63-28)) | ||
| 96 | #define H_PAGE_UNUSED ((1UL<<(63-29)) | (1UL<<(63-30))) | ||
| 97 | #define H_PAGE_SET_UNUSED (H_PAGE_STATE_CHANGE | H_PAGE_UNUSED) | ||
| 98 | #define H_PAGE_SET_LOANED (H_PAGE_SET_UNUSED | (1UL<<(63-31))) | ||
| 99 | #define H_PAGE_SET_ACTIVE H_PAGE_STATE_CHANGE | ||
| 95 | #define H_AVPN (1UL<<(63-32)) /* An avpn is provided as a sanity test */ | 100 | #define H_AVPN (1UL<<(63-32)) /* An avpn is provided as a sanity test */ |
| 96 | #define H_ANDCOND (1UL<<(63-33)) | 101 | #define H_ANDCOND (1UL<<(63-33)) |
| 97 | #define H_ICACHE_INVALIDATE (1UL<<(63-40)) /* icbi, etc. (ignored for IO pages) */ | 102 | #define H_ICACHE_INVALIDATE (1UL<<(63-40)) /* icbi, etc. (ignored for IO pages) */ |
| @@ -210,7 +215,9 @@ | |||
| 210 | #define H_JOIN 0x298 | 215 | #define H_JOIN 0x298 |
| 211 | #define H_VASI_STATE 0x2A4 | 216 | #define H_VASI_STATE 0x2A4 |
| 212 | #define H_ENABLE_CRQ 0x2B0 | 217 | #define H_ENABLE_CRQ 0x2B0 |
| 213 | #define MAX_HCALL_OPCODE H_ENABLE_CRQ | 218 | #define H_SET_MPP 0x2D0 |
| 219 | #define H_GET_MPP 0x2D4 | ||
| 220 | #define MAX_HCALL_OPCODE H_GET_MPP | ||
| 214 | 221 | ||
| 215 | #ifndef __ASSEMBLY__ | 222 | #ifndef __ASSEMBLY__ |
| 216 | 223 | ||
| @@ -270,6 +277,20 @@ struct hcall_stats { | |||
| 270 | }; | 277 | }; |
| 271 | #define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1) | 278 | #define HCALL_STAT_ARRAY_SIZE ((MAX_HCALL_OPCODE >> 2) + 1) |
| 272 | 279 | ||
| 280 | struct hvcall_mpp_data { | ||
| 281 | unsigned long entitled_mem; | ||
| 282 | unsigned long mapped_mem; | ||
| 283 | unsigned short group_num; | ||
| 284 | unsigned short pool_num; | ||
| 285 | unsigned char mem_weight; | ||
| 286 | unsigned char unallocated_mem_weight; | ||
| 287 | unsigned long unallocated_entitlement; /* value in bytes */ | ||
| 288 | unsigned long pool_size; | ||
| 289 | signed long loan_request; | ||
| 290 | unsigned long backing_mem; | ||
| 291 | }; | ||
| 292 | |||
| 293 | int h_get_mpp(struct hvcall_mpp_data *); | ||
| 273 | #endif /* __ASSEMBLY__ */ | 294 | #endif /* __ASSEMBLY__ */ |
| 274 | #endif /* __KERNEL__ */ | 295 | #endif /* __KERNEL__ */ |
| 275 | #endif /* _ASM_POWERPC_HVCALL_H */ | 296 | #endif /* _ASM_POWERPC_HVCALL_H */ |
diff --git a/include/asm-powerpc/lppaca.h b/include/asm-powerpc/lppaca.h index 567ed92cd91..2fe268b1033 100644 --- a/include/asm-powerpc/lppaca.h +++ b/include/asm-powerpc/lppaca.h | |||
| @@ -125,7 +125,10 @@ struct lppaca { | |||
| 125 | // NOTE: This value will ALWAYS be zero for dedicated processors and | 125 | // NOTE: This value will ALWAYS be zero for dedicated processors and |
| 126 | // will NEVER be zero for shared processors (ie, initialized to a 1). | 126 | // will NEVER be zero for shared processors (ie, initialized to a 1). |
| 127 | volatile u32 yield_count; // PLIC increments each dispatchx00-x03 | 127 | volatile u32 yield_count; // PLIC increments each dispatchx00-x03 |
| 128 | u8 reserved6[124]; // Reserved x04-x7F | 128 | u32 reserved6; |
| 129 | volatile u64 cmo_faults; // CMO page fault count x08-x0F | ||
| 130 | volatile u64 cmo_fault_time; // CMO page fault time x10-x17 | ||
| 131 | u8 reserved7[104]; // Reserved x18-x7F | ||
| 129 | 132 | ||
| 130 | //============================================================================= | 133 | //============================================================================= |
| 131 | // CACHE_LINE_4-5 0x0180 - 0x027F Contains PMC interrupt data | 134 | // CACHE_LINE_4-5 0x0180 - 0x027F Contains PMC interrupt data |
diff --git a/include/asm-powerpc/machdep.h b/include/asm-powerpc/machdep.h index 1233d735fd2..893aafd87fd 100644 --- a/include/asm-powerpc/machdep.h +++ b/include/asm-powerpc/machdep.h | |||
| @@ -76,7 +76,7 @@ struct machdep_calls { | |||
| 76 | * destroyed as well */ | 76 | * destroyed as well */ |
| 77 | void (*hpte_clear_all)(void); | 77 | void (*hpte_clear_all)(void); |
| 78 | 78 | ||
| 79 | void (*tce_build)(struct iommu_table * tbl, | 79 | int (*tce_build)(struct iommu_table *tbl, |
| 80 | long index, | 80 | long index, |
| 81 | long npages, | 81 | long npages, |
| 82 | unsigned long uaddr, | 82 | unsigned long uaddr, |
diff --git a/include/asm-powerpc/mpc52xx_psc.h b/include/asm-powerpc/mpc52xx_psc.h index 710c5d36efa..8917ed63056 100644 --- a/include/asm-powerpc/mpc52xx_psc.h +++ b/include/asm-powerpc/mpc52xx_psc.h | |||
| @@ -60,10 +60,12 @@ | |||
| 60 | #define MPC52xx_PSC_RXTX_FIFO_ALARM 0x0002 | 60 | #define MPC52xx_PSC_RXTX_FIFO_ALARM 0x0002 |
| 61 | #define MPC52xx_PSC_RXTX_FIFO_EMPTY 0x0001 | 61 | #define MPC52xx_PSC_RXTX_FIFO_EMPTY 0x0001 |
| 62 | 62 | ||
| 63 | /* PSC interrupt mask bits */ | 63 | /* PSC interrupt status/mask bits */ |
| 64 | #define MPC52xx_PSC_IMR_TXRDY 0x0100 | 64 | #define MPC52xx_PSC_IMR_TXRDY 0x0100 |
| 65 | #define MPC52xx_PSC_IMR_RXRDY 0x0200 | 65 | #define MPC52xx_PSC_IMR_RXRDY 0x0200 |
| 66 | #define MPC52xx_PSC_IMR_DB 0x0400 | 66 | #define MPC52xx_PSC_IMR_DB 0x0400 |
| 67 | #define MPC52xx_PSC_IMR_TXEMP 0x0800 | ||
| 68 | #define MPC52xx_PSC_IMR_ORERR 0x1000 | ||
| 67 | #define MPC52xx_PSC_IMR_IPC 0x8000 | 69 | #define MPC52xx_PSC_IMR_IPC 0x8000 |
| 68 | 70 | ||
| 69 | /* PSC input port change bit */ | 71 | /* PSC input port change bit */ |
| @@ -92,6 +94,34 @@ | |||
| 92 | 94 | ||
| 93 | #define MPC52xx_PSC_RFNUM_MASK 0x01ff | 95 | #define MPC52xx_PSC_RFNUM_MASK 0x01ff |
| 94 | 96 | ||
| 97 | #define MPC52xx_PSC_SICR_DTS1 (1 << 29) | ||
| 98 | #define MPC52xx_PSC_SICR_SHDR (1 << 28) | ||
| 99 | #define MPC52xx_PSC_SICR_SIM_MASK (0xf << 24) | ||
| 100 | #define MPC52xx_PSC_SICR_SIM_UART (0x0 << 24) | ||
| 101 | #define MPC52xx_PSC_SICR_SIM_UART_DCD (0x8 << 24) | ||
| 102 | #define MPC52xx_PSC_SICR_SIM_CODEC_8 (0x1 << 24) | ||
| 103 | #define MPC52xx_PSC_SICR_SIM_CODEC_16 (0x2 << 24) | ||
| 104 | #define MPC52xx_PSC_SICR_SIM_AC97 (0x3 << 24) | ||
| 105 | #define MPC52xx_PSC_SICR_SIM_SIR (0x8 << 24) | ||
| 106 | #define MPC52xx_PSC_SICR_SIM_SIR_DCD (0xc << 24) | ||
| 107 | #define MPC52xx_PSC_SICR_SIM_MIR (0x5 << 24) | ||
| 108 | #define MPC52xx_PSC_SICR_SIM_FIR (0x6 << 24) | ||
| 109 | #define MPC52xx_PSC_SICR_SIM_CODEC_24 (0x7 << 24) | ||
| 110 | #define MPC52xx_PSC_SICR_SIM_CODEC_32 (0xf << 24) | ||
| 111 | #define MPC52xx_PSC_SICR_GENCLK (1 << 23) | ||
| 112 | #define MPC52xx_PSC_SICR_I2S (1 << 22) | ||
| 113 | #define MPC52xx_PSC_SICR_CLKPOL (1 << 21) | ||
| 114 | #define MPC52xx_PSC_SICR_SYNCPOL (1 << 20) | ||
| 115 | #define MPC52xx_PSC_SICR_CELLSLAVE (1 << 19) | ||
| 116 | #define MPC52xx_PSC_SICR_CELL2XCLK (1 << 18) | ||
| 117 | #define MPC52xx_PSC_SICR_ESAI (1 << 17) | ||
| 118 | #define MPC52xx_PSC_SICR_ENAC97 (1 << 16) | ||
| 119 | #define MPC52xx_PSC_SICR_SPI (1 << 15) | ||
| 120 | #define MPC52xx_PSC_SICR_MSTR (1 << 14) | ||
| 121 | #define MPC52xx_PSC_SICR_CPOL (1 << 13) | ||
| 122 | #define MPC52xx_PSC_SICR_CPHA (1 << 12) | ||
| 123 | #define MPC52xx_PSC_SICR_USEEOF (1 << 11) | ||
| 124 | #define MPC52xx_PSC_SICR_DISABLEEOF (1 << 10) | ||
| 95 | 125 | ||
| 96 | /* Structure of the hardware registers */ | 126 | /* Structure of the hardware registers */ |
| 97 | struct mpc52xx_psc { | 127 | struct mpc52xx_psc { |
| @@ -132,8 +162,12 @@ struct mpc52xx_psc { | |||
| 132 | u8 reserved5[3]; | 162 | u8 reserved5[3]; |
| 133 | u8 ctlr; /* PSC + 0x1c */ | 163 | u8 ctlr; /* PSC + 0x1c */ |
| 134 | u8 reserved6[3]; | 164 | u8 reserved6[3]; |
| 135 | u16 ccr; /* PSC + 0x20 */ | 165 | /* BitClkDiv field of CCR is byte swapped in |
| 136 | u8 reserved7[14]; | 166 | * the hardware for mpc5200/b compatibility */ |
| 167 | u32 ccr; /* PSC + 0x20 */ | ||
| 168 | u32 ac97_slots; /* PSC + 0x24 */ | ||
| 169 | u32 ac97_cmd; /* PSC + 0x28 */ | ||
| 170 | u32 ac97_data; /* PSC + 0x2c */ | ||
| 137 | u8 ivr; /* PSC + 0x30 */ | 171 | u8 ivr; /* PSC + 0x30 */ |
| 138 | u8 reserved8[3]; | 172 | u8 reserved8[3]; |
| 139 | u8 ip; /* PSC + 0x34 */ | 173 | u8 ip; /* PSC + 0x34 */ |
diff --git a/include/asm-powerpc/pgtable.h b/include/asm-powerpc/pgtable.h index d18ffe7bc7c..dbb8ca172e4 100644 --- a/include/asm-powerpc/pgtable.h +++ b/include/asm-powerpc/pgtable.h | |||
| @@ -38,6 +38,19 @@ extern void paging_init(void); | |||
| 38 | remap_pfn_range(vma, vaddr, pfn, size, prot) | 38 | remap_pfn_range(vma, vaddr, pfn, size, prot) |
| 39 | 39 | ||
| 40 | #include <asm-generic/pgtable.h> | 40 | #include <asm-generic/pgtable.h> |
| 41 | |||
| 42 | |||
| 43 | /* | ||
| 44 | * This gets called at the end of handling a page fault, when | ||
| 45 | * the kernel has put a new PTE into the page table for the process. | ||
| 46 | * We use it to ensure coherency between the i-cache and d-cache | ||
| 47 | * for the page which has just been mapped in. | ||
| 48 | * On machines which use an MMU hash table, we use this to put a | ||
| 49 | * corresponding HPTE into the hash table ahead of time, instead of | ||
| 50 | * waiting for the inevitable extra hash-table miss exception. | ||
| 51 | */ | ||
| 52 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); | ||
| 53 | |||
| 41 | #endif /* __ASSEMBLY__ */ | 54 | #endif /* __ASSEMBLY__ */ |
| 42 | 55 | ||
| 43 | #endif /* __KERNEL__ */ | 56 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-powerpc/syscalls.h b/include/asm-powerpc/syscalls.h index 2b8a458f990..eb8eb400c66 100644 --- a/include/asm-powerpc/syscalls.h +++ b/include/asm-powerpc/syscalls.h | |||
| @@ -31,6 +31,7 @@ asmlinkage int sys_vfork(unsigned long p1, unsigned long p2, | |||
| 31 | unsigned long p3, unsigned long p4, unsigned long p5, | 31 | unsigned long p3, unsigned long p4, unsigned long p5, |
| 32 | unsigned long p6, struct pt_regs *regs); | 32 | unsigned long p6, struct pt_regs *regs); |
| 33 | asmlinkage long sys_pipe(int __user *fildes); | 33 | asmlinkage long sys_pipe(int __user *fildes); |
| 34 | asmlinkage long sys_pipe2(int __user *fildes, int flags); | ||
| 34 | asmlinkage long sys_rt_sigaction(int sig, | 35 | asmlinkage long sys_rt_sigaction(int sig, |
| 35 | const struct sigaction __user *act, | 36 | const struct sigaction __user *act, |
| 36 | struct sigaction __user *oact, size_t sigsetsize); | 37 | struct sigaction __user *oact, size_t sigsetsize); |
diff --git a/include/asm-powerpc/systbl.h b/include/asm-powerpc/systbl.h index ae7085c6569..e084272ed1c 100644 --- a/include/asm-powerpc/systbl.h +++ b/include/asm-powerpc/systbl.h | |||
| @@ -316,3 +316,9 @@ COMPAT_SYS(fallocate) | |||
| 316 | SYSCALL(subpage_prot) | 316 | SYSCALL(subpage_prot) |
| 317 | COMPAT_SYS_SPU(timerfd_settime) | 317 | COMPAT_SYS_SPU(timerfd_settime) |
| 318 | COMPAT_SYS_SPU(timerfd_gettime) | 318 | COMPAT_SYS_SPU(timerfd_gettime) |
| 319 | COMPAT_SYS_SPU(signalfd4) | ||
| 320 | SYSCALL_SPU(eventfd2) | ||
| 321 | SYSCALL_SPU(epoll_create1) | ||
| 322 | SYSCALL_SPU(dup3) | ||
| 323 | SYSCALL_SPU(pipe2) | ||
| 324 | SYSCALL(inotify_init1) | ||
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index e6e25e2364e..d6648c14332 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
| @@ -110,6 +110,8 @@ static inline int debugger_fault_handler(struct pt_regs *regs) { return 0; } | |||
| 110 | #endif | 110 | #endif |
| 111 | 111 | ||
| 112 | extern int set_dabr(unsigned long dabr); | 112 | extern int set_dabr(unsigned long dabr); |
| 113 | extern void do_dabr(struct pt_regs *regs, unsigned long address, | ||
| 114 | unsigned long error_code); | ||
| 113 | extern void print_backtrace(unsigned long *); | 115 | extern void print_backtrace(unsigned long *); |
| 114 | extern void show_regs(struct pt_regs * regs); | 116 | extern void show_regs(struct pt_regs * regs); |
| 115 | extern void flush_instruction_cache(void); | 117 | extern void flush_instruction_cache(void); |
diff --git a/include/asm-powerpc/tlbflush.h b/include/asm-powerpc/tlbflush.h index 5c910814764..361cd5c7a32 100644 --- a/include/asm-powerpc/tlbflush.h +++ b/include/asm-powerpc/tlbflush.h | |||
| @@ -162,16 +162,5 @@ extern void __flush_hash_table_range(struct mm_struct *mm, unsigned long start, | |||
| 162 | 162 | ||
| 163 | #endif | 163 | #endif |
| 164 | 164 | ||
| 165 | /* | ||
| 166 | * This gets called at the end of handling a page fault, when | ||
| 167 | * the kernel has put a new PTE into the page table for the process. | ||
| 168 | * We use it to ensure coherency between the i-cache and d-cache | ||
| 169 | * for the page which has just been mapped in. | ||
| 170 | * On machines which use an MMU hash table, we use this to put a | ||
| 171 | * corresponding HPTE into the hash table ahead of time, instead of | ||
| 172 | * waiting for the inevitable extra hash-table miss exception. | ||
| 173 | */ | ||
| 174 | extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t); | ||
| 175 | |||
| 176 | #endif /*__KERNEL__ */ | 165 | #endif /*__KERNEL__ */ |
| 177 | #endif /* _ASM_POWERPC_TLBFLUSH_H */ | 166 | #endif /* _ASM_POWERPC_TLBFLUSH_H */ |
diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h index ce91bb66206..e07d0c76ed7 100644 --- a/include/asm-powerpc/unistd.h +++ b/include/asm-powerpc/unistd.h | |||
| @@ -335,10 +335,16 @@ | |||
| 335 | #define __NR_subpage_prot 310 | 335 | #define __NR_subpage_prot 310 |
| 336 | #define __NR_timerfd_settime 311 | 336 | #define __NR_timerfd_settime 311 |
| 337 | #define __NR_timerfd_gettime 312 | 337 | #define __NR_timerfd_gettime 312 |
| 338 | #define __NR_signalfd4 313 | ||
| 339 | #define __NR_eventfd2 314 | ||
| 340 | #define __NR_epoll_create1 315 | ||
| 341 | #define __NR_dup3 316 | ||
| 342 | #define __NR_pipe2 317 | ||
| 343 | #define __NR_inotify_init1 318 | ||
| 338 | 344 | ||
| 339 | #ifdef __KERNEL__ | 345 | #ifdef __KERNEL__ |
| 340 | 346 | ||
| 341 | #define __NR_syscalls 313 | 347 | #define __NR_syscalls 319 |
| 342 | 348 | ||
| 343 | #define __NR__exit __NR_exit | 349 | #define __NR__exit __NR_exit |
| 344 | #define NR_syscalls __NR_syscalls | 350 | #define NR_syscalls __NR_syscalls |
diff --git a/include/asm-powerpc/vio.h b/include/asm-powerpc/vio.h index 56512a968da..0a290a19594 100644 --- a/include/asm-powerpc/vio.h +++ b/include/asm-powerpc/vio.h | |||
| @@ -39,16 +39,32 @@ | |||
| 39 | #define VIO_IRQ_DISABLE 0UL | 39 | #define VIO_IRQ_DISABLE 0UL |
| 40 | #define VIO_IRQ_ENABLE 1UL | 40 | #define VIO_IRQ_ENABLE 1UL |
| 41 | 41 | ||
| 42 | /* | ||
| 43 | * VIO CMO minimum entitlement for all devices and spare entitlement | ||
| 44 | */ | ||
| 45 | #define VIO_CMO_MIN_ENT 1562624 | ||
| 46 | |||
| 42 | struct iommu_table; | 47 | struct iommu_table; |
| 43 | 48 | ||
| 44 | /* | 49 | /** |
| 45 | * The vio_dev structure is used to describe virtual I/O devices. | 50 | * vio_dev - This structure is used to describe virtual I/O devices. |
| 51 | * | ||
| 52 | * @desired: set from return of driver's get_desired_dma() function | ||
| 53 | * @entitled: bytes of IO data that has been reserved for this device. | ||
| 54 | * @allocated: bytes of IO data currently in use by the device. | ||
| 55 | * @allocs_failed: number of DMA failures due to insufficient entitlement. | ||
| 46 | */ | 56 | */ |
| 47 | struct vio_dev { | 57 | struct vio_dev { |
| 48 | const char *name; | 58 | const char *name; |
| 49 | const char *type; | 59 | const char *type; |
| 50 | uint32_t unit_address; | 60 | uint32_t unit_address; |
| 51 | unsigned int irq; | 61 | unsigned int irq; |
| 62 | struct { | ||
| 63 | size_t desired; | ||
| 64 | size_t entitled; | ||
| 65 | size_t allocated; | ||
| 66 | atomic_t allocs_failed; | ||
| 67 | } cmo; | ||
| 52 | struct device dev; | 68 | struct device dev; |
| 53 | }; | 69 | }; |
| 54 | 70 | ||
| @@ -56,12 +72,19 @@ struct vio_driver { | |||
| 56 | const struct vio_device_id *id_table; | 72 | const struct vio_device_id *id_table; |
| 57 | int (*probe)(struct vio_dev *dev, const struct vio_device_id *id); | 73 | int (*probe)(struct vio_dev *dev, const struct vio_device_id *id); |
| 58 | int (*remove)(struct vio_dev *dev); | 74 | int (*remove)(struct vio_dev *dev); |
| 75 | /* A driver must have a get_desired_dma() function to | ||
| 76 | * be loaded in a CMO environment if it uses DMA. | ||
| 77 | */ | ||
| 78 | unsigned long (*get_desired_dma)(struct vio_dev *dev); | ||
| 59 | struct device_driver driver; | 79 | struct device_driver driver; |
| 60 | }; | 80 | }; |
| 61 | 81 | ||
| 62 | extern int vio_register_driver(struct vio_driver *drv); | 82 | extern int vio_register_driver(struct vio_driver *drv); |
| 63 | extern void vio_unregister_driver(struct vio_driver *drv); | 83 | extern void vio_unregister_driver(struct vio_driver *drv); |
| 64 | 84 | ||
| 85 | extern int vio_cmo_entitlement_update(size_t); | ||
| 86 | extern void vio_cmo_set_dev_desired(struct vio_dev *viodev, size_t desired); | ||
| 87 | |||
| 65 | extern void __devinit vio_unregister_device(struct vio_dev *dev); | 88 | extern void __devinit vio_unregister_device(struct vio_dev *dev); |
| 66 | 89 | ||
| 67 | struct device_node; | 90 | struct device_node; |
