Commit de29cba9 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC32]: Silence sparc32 warnings on missing syscalls.
  [SPARC64]: Fix two kernel linear mapping setup bugs.
parents 104064b5 e6e0a945
...@@ -2593,3 +2593,15 @@ sun4v_mmustat_info: ...@@ -2593,3 +2593,15 @@ sun4v_mmustat_info:
retl retl
nop nop
.size sun4v_mmustat_info, .-sun4v_mmustat_info .size sun4v_mmustat_info, .-sun4v_mmustat_info
.globl sun4v_mmu_demap_all
.type sun4v_mmu_demap_all,#function
sun4v_mmu_demap_all:
clr %o0
clr %o1
mov HV_MMU_ALL, %o2
mov HV_FAST_MMU_DEMAP_ALL, %o5
ta HV_FAST_TRAP
retl
nop
.size sun4v_mmu_demap_all, .-sun4v_mmu_demap_all
...@@ -1133,14 +1133,9 @@ static void __init mark_kpte_bitmap(unsigned long start, unsigned long end) ...@@ -1133,14 +1133,9 @@ static void __init mark_kpte_bitmap(unsigned long start, unsigned long end)
} }
} }
static void __init kernel_physical_mapping_init(void) static void __init init_kpte_bitmap(void)
{ {
unsigned long i; unsigned long i;
#ifdef CONFIG_DEBUG_PAGEALLOC
unsigned long mem_alloced = 0UL;
#endif
read_obp_memory("reg", &pall[0], &pall_ents);
for (i = 0; i < pall_ents; i++) { for (i = 0; i < pall_ents; i++) {
unsigned long phys_start, phys_end; unsigned long phys_start, phys_end;
...@@ -1149,14 +1144,24 @@ static void __init kernel_physical_mapping_init(void) ...@@ -1149,14 +1144,24 @@ static void __init kernel_physical_mapping_init(void)
phys_end = phys_start + pall[i].reg_size; phys_end = phys_start + pall[i].reg_size;
mark_kpte_bitmap(phys_start, phys_end); mark_kpte_bitmap(phys_start, phys_end);
}
}
static void __init kernel_physical_mapping_init(void)
{
#ifdef CONFIG_DEBUG_PAGEALLOC #ifdef CONFIG_DEBUG_PAGEALLOC
unsigned long i, mem_alloced = 0UL;
for (i = 0; i < pall_ents; i++) {
unsigned long phys_start, phys_end;
phys_start = pall[i].phys_addr;
phys_end = phys_start + pall[i].reg_size;
mem_alloced += kernel_map_range(phys_start, phys_end, mem_alloced += kernel_map_range(phys_start, phys_end,
PAGE_KERNEL); PAGE_KERNEL);
#endif
} }
#ifdef CONFIG_DEBUG_PAGEALLOC
printk("Allocated %ld bytes for kernel page tables.\n", printk("Allocated %ld bytes for kernel page tables.\n",
mem_alloced); mem_alloced);
...@@ -1398,6 +1403,10 @@ void __init paging_init(void) ...@@ -1398,6 +1403,10 @@ void __init paging_init(void)
inherit_prom_mappings(); inherit_prom_mappings();
read_obp_memory("reg", &pall[0], &pall_ents);
init_kpte_bitmap();
/* Ok, we can use our TLB miss and window trap handlers safely. */ /* Ok, we can use our TLB miss and window trap handlers safely. */
setup_tba(); setup_tba();
...@@ -1904,7 +1913,9 @@ void __flush_tlb_all(void) ...@@ -1904,7 +1913,9 @@ void __flush_tlb_all(void)
"wrpr %0, %1, %%pstate" "wrpr %0, %1, %%pstate"
: "=r" (pstate) : "=r" (pstate)
: "i" (PSTATE_IE)); : "i" (PSTATE_IE));
if (tlb_type == spitfire) { if (tlb_type == hypervisor) {
sun4v_mmu_demap_all();
} else if (tlb_type == spitfire) {
for (i = 0; i < 64; i++) { for (i = 0; i < 64; i++) {
/* Spitfire Errata #32 workaround */ /* Spitfire Errata #32 workaround */
/* NOTE: Always runs on spitfire, so no /* NOTE: Always runs on spitfire, so no
......
...@@ -333,6 +333,15 @@ ...@@ -333,6 +333,15 @@
#define NR_SYSCALLS 315 #define NR_SYSCALLS 315
/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
* it never had the plain ones and there is no value to adding those
* old versions into the syscall table.
*/
#define __IGNORE_setresuid
#define __IGNORE_getresuid
#define __IGNORE_setresgid
#define __IGNORE_getresgid
#ifdef __KERNEL__ #ifdef __KERNEL__
#define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR #define __ARCH_WANT_OLD_READDIR
......
...@@ -709,6 +709,10 @@ extern unsigned long sun4v_mmu_tsb_ctx0(unsigned long num_descriptions, ...@@ -709,6 +709,10 @@ extern unsigned long sun4v_mmu_tsb_ctx0(unsigned long num_descriptions,
*/ */
#define HV_FAST_MMU_DEMAP_ALL 0x24 #define HV_FAST_MMU_DEMAP_ALL 0x24
#ifndef __ASSEMBLY__
extern void sun4v_mmu_demap_all(void);
#endif
/* mmu_map_perm_addr() /* mmu_map_perm_addr()
* TRAP: HV_FAST_TRAP * TRAP: HV_FAST_TRAP
* FUNCTION: HV_FAST_MMU_MAP_PERM_ADDR * FUNCTION: HV_FAST_MMU_MAP_PERM_ADDR
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment