OSDN Git Service
(root)
/
uclinux-h8
/
linux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
d538aad
)
powerpc/32s: automatically allocate BAT in setbat()
author
Christophe Leroy
<christophe.leroy@c-s.fr>
Mon, 16 Sep 2019 20:25:39 +0000
(20:25 +0000)
committer
Michael Ellerman
<mpe@ellerman.id.au>
Tue, 19 Nov 2019 08:38:38 +0000
(19:38 +1100)
If no BAT is given to setbat(), select an available BAT.
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link:
https://lore.kernel.org/r/a212bd36fbd6179e0929b6c727febc35132ac25c.1568665466.git.christophe.leroy@c-s.fr
arch/powerpc/mm/book3s32/mmu.c
patch
|
blob
|
history
diff --git
a/arch/powerpc/mm/book3s32/mmu.c
b/arch/powerpc/mm/book3s32/mmu.c
index
84d5fab
..
69b2419
100644
(file)
--- a/
arch/powerpc/mm/book3s32/mmu.c
+++ b/
arch/powerpc/mm/book3s32/mmu.c
@@
-251,9
+251,18
@@
void __init setbat(int index, unsigned long virt, phys_addr_t phys,
{
unsigned int bl;
int wimgxpp;
- struct ppc_bat *bat
= BATS[index]
;
+ struct ppc_bat *bat;
unsigned long flags = pgprot_val(prot);
+ if (index == -1)
+ index = find_free_bat();
+ if (index == -1) {
+ pr_err("%s: no BAT available for mapping 0x%llx\n", __func__,
+ (unsigned long long)phys);
+ return;
+ }
+ bat = BATS[index];
+
if ((flags & _PAGE_NO_CACHE) ||
(cpu_has_feature(CPU_FTR_NEED_COHERENT) == 0))
flags &= ~_PAGE_COHERENT;