Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 109467
b: refs/heads/master
c: 9e88ba4
h: refs/heads/master
i:
  109465: b48fb73
  109463: 192a126
v: v3
  • Loading branch information
Paul Mackerras committed Sep 3, 2008
1 parent cde65b1 commit 97e99f4
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 78fbc824ed8225edd80cdc57771d5ca4f7aae95e
refs/heads/master: 9e88ba4e45ecad2425c4cc4e0861a26f4e36c6da
18 changes: 11 additions & 7 deletions trunk/arch/powerpc/mm/hash_utils_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,17 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
unsigned long hash, hpteg;
unsigned long vsid = get_kernel_vsid(vaddr, ssize);
unsigned long va = hpt_va(vaddr, vsid, ssize);
unsigned long tprot = prot;

/* Make kernel text executable */
if (in_kernel_text(vaddr))
tprot &= ~HPTE_R_N;

hash = hpt_hash(va, shift, ssize);
hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP);

BUG_ON(!ppc_md.hpte_insert);
ret = ppc_md.hpte_insert(hpteg, va, paddr, prot,
ret = ppc_md.hpte_insert(hpteg, va, paddr, tprot,
HPTE_V_BOLTED, psize, ssize);

if (ret < 0)
Expand Down Expand Up @@ -584,7 +589,7 @@ void __init htab_initialize(void)
{
unsigned long table;
unsigned long pteg_count;
unsigned long prot, tprot;
unsigned long prot;
unsigned long base = 0, size = 0, limit;
int i;

Expand Down Expand Up @@ -660,10 +665,9 @@ void __init htab_initialize(void)
for (i=0; i < lmb.memory.cnt; i++) {
base = (unsigned long)__va(lmb.memory.region[i].base);
size = lmb.memory.region[i].size;
tprot = prot | (in_kernel_text(base) ? _PAGE_EXEC : 0);

DBG("creating mapping for region: %lx..%lx (prot: %x)\n",
base, size, tprot);
base, size, prot);

#ifdef CONFIG_U3_DART
/* Do not map the DART space. Fortunately, it will be aligned
Expand All @@ -680,21 +684,21 @@ void __init htab_initialize(void)
unsigned long dart_table_end = dart_tablebase + 16 * MB;
if (base != dart_tablebase)
BUG_ON(htab_bolt_mapping(base, dart_tablebase,
__pa(base), tprot,
__pa(base), prot,
mmu_linear_psize,
mmu_kernel_ssize));
if ((base + size) > dart_table_end)
BUG_ON(htab_bolt_mapping(dart_tablebase+16*MB,
base + size,
__pa(dart_table_end),
tprot,
prot,
mmu_linear_psize,
mmu_kernel_ssize));
continue;
}
#endif /* CONFIG_U3_DART */
BUG_ON(htab_bolt_mapping(base, base + size, __pa(base),
tprot, mmu_linear_psize, mmu_kernel_ssize));
prot, mmu_linear_psize, mmu_kernel_ssize));
}

/*
Expand Down

0 comments on commit 97e99f4

Please sign in to comment.