Message ID | 20210324032451.27569-1-huangpei@loongson.cn (mailing list archive) |
---|---|
State | Accepted |
Commit | 509d36a941a3466b78d4377913623d210b162458 |
Headers | show |
Series | MIPS: loongson64: fix bug when PAGE_SIZE > 16KB | expand |
On Wed, Mar 24, 2021, at 11:24 AM, Huang Pei wrote: > 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> > --- > 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.17.1 > >
On Wed, Mar 24, 2021 at 11:24:51AM +0800, Huang Pei wrote: > 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> > --- > arch/mips/loongson64/init.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) applied to mips-next. Thomas.
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;
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> --- arch/mips/loongson64/init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)