| From 2515f8835e8fc28366f7960fafca43150da10903 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 24 Mar 2021 11:24:51 +0800 |
| Subject: MIPS: loongson64: fix bug when PAGE_SIZE > 16KB |
| |
| From: Huang Pei <huangpei@loongson.cn> |
| |
| [ Upstream commit 509d36a941a3466b78d4377913623d210b162458 ] |
| |
| When page size larger than 16KB, arguments "vaddr + size(16KB)" in |
| "ioremap_page_range(vaddr, vaddr + size,...)" called by |
| "add_legacy_isa_io" is not page-aligned. |
| |
| As loongson64 needs at least page size 16KB to get rid of cache alias, |
| and "vaddr" is 64KB-aligned, and 64KB is largest page size supported, |
| rounding "size" up to PAGE_SIZE is enough for all page size supported. |
| |
| Fixes: 6d0068ad15e4 ("MIPS: Loongson64: Process ISA Node in DeviceTree") |
| Signed-off-by: Huang Pei <huangpei@loongson.cn> |
| Acked-by: Jiaxun Yang <jiaxun.yang@flygoat.com> |
| Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/mips/loongson64/init.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/mips/loongson64/init.c b/arch/mips/loongson64/init.c |
| index ed75f7971261..052cce6a8a99 100644 |
| --- a/arch/mips/loongson64/init.c |
| +++ b/arch/mips/loongson64/init.c |
| @@ -82,7 +82,7 @@ static int __init add_legacy_isa_io(struct fwnode_handle *fwnode, resource_size_ |
| return -ENOMEM; |
| |
| range->fwnode = fwnode; |
| - range->size = size; |
| + range->size = size = round_up(size, PAGE_SIZE); |
| range->hw_start = hw_start; |
| range->flags = LOGIC_PIO_CPU_MMIO; |
| |
| -- |
| 2.30.2 |
| |