* Re: [PATCH v2 2/2] arm64: tlb: Use the TLBI RANGE feature in arm64 [not found] ` <20200710094420.517-3-yezhenyu2-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> @ 2020-07-13 14:27 ` Jon Hunter [not found] ` <4040f429-21c8-0825-2ad4-97786c3fe7c1-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Jon Hunter @ 2020-07-13 14:27 UTC (permalink / raw) To: Zhenyu Ye, catalin.marinas-5wv7dgnIgG8, will-DgEjT+Ai2ygdnm+yROfE0A, suzuki.poulose-5wv7dgnIgG8, maz-DgEjT+Ai2ygdnm+yROfE0A, steven.price-5wv7dgnIgG8, guohanjun-hv44wF8Li93QT0dZR+AlfA, olof-nZhT3qVonbNeoWH0uzbU5w Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-mm-Bw31MaZKKs3YtjvyW6yDsg, arm-DgEjT+Ai2ygdnm+yROfE0A, xiexiangyou-hv44wF8Li93QT0dZR+AlfA, prime.zeng-C8/M+/jPZTeaMJb+Lgu22Q, zhangshaokun-C8/M+/jPZTeaMJb+Lgu22Q, kuhn.chenqun-hv44wF8Li93QT0dZR+AlfA, linux-tegra On 10/07/2020 10:44, Zhenyu Ye wrote: > Add __TLBI_VADDR_RANGE macro and rewrite __flush_tlb_range(). > > When cpu supports TLBI feature, the minimum range granularity is > decided by 'scale', so we can not flush all pages by one instruction > in some cases. > > For example, when the pages = 0xe81a, let's start 'scale' from > maximum, and find right 'num' for each 'scale': > > 1. scale = 3, we can flush no pages because the minimum range is > 2^(5*3 + 1) = 0x10000. > 2. scale = 2, the minimum range is 2^(5*2 + 1) = 0x800, we can > flush 0xe800 pages this time, the num = 0xe800/0x800 - 1 = 0x1c. > Remaining pages is 0x1a; > 3. scale = 1, the minimum range is 2^(5*1 + 1) = 0x40, no page > can be flushed. > 4. scale = 0, we flush the remaining 0x1a pages, the num = > 0x1a/0x2 - 1 = 0xd. > > However, in most scenarios, the pages = 1 when flush_tlb_range() is > called. Start from scale = 3 or other proper value (such as scale = > ilog2(pages)), will incur extra overhead. > So increase 'scale' from 0 to maximum, the flush order is exactly > opposite to the example. > > Signed-off-by: Zhenyu Ye <yezhenyu2-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> After this change I am seeing the following build errors ... /tmp/cckzq3FT.s: Assembler messages: /tmp/cckzq3FT.s:854: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:870: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:1095: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:1111: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:1964: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:1980: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:2286: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:2302: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' /tmp/cckzq3FT.s:4833: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' /tmp/cckzq3FT.s:4849: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' /tmp/cckzq3FT.s:5090: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' /tmp/cckzq3FT.s:5106: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' /tmp/cckzq3FT.s:874: Error: attempt to move .org backwards /tmp/cckzq3FT.s:1115: Error: attempt to move .org backwards /tmp/cckzq3FT.s:1984: Error: attempt to move .org backwards /tmp/cckzq3FT.s:2306: Error: attempt to move .org backwards /tmp/cckzq3FT.s:4853: Error: attempt to move .org backwards /tmp/cckzq3FT.s:5110: Error: attempt to move .org backwards scripts/Makefile.build:280: recipe for target 'arch/arm64/mm/hugetlbpage.o' failed make[3]: *** [arch/arm64/mm/hugetlbpage.o] Error 1 scripts/Makefile.build:497: recipe for target 'arch/arm64/mm' failed make[2]: *** [arch/arm64/mm] Error 2 Cheers Jon -- nvpublic ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <4040f429-21c8-0825-2ad4-97786c3fe7c1-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v2 2/2] arm64: tlb: Use the TLBI RANGE feature in arm64 [not found] ` <4040f429-21c8-0825-2ad4-97786c3fe7c1-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2020-07-13 14:39 ` Zhenyu Ye [not found] ` <cee60718-ced2-069f-8dad-48941c6fc09b-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Zhenyu Ye @ 2020-07-13 14:39 UTC (permalink / raw) To: Jon Hunter, catalin.marinas-5wv7dgnIgG8, will-DgEjT+Ai2ygdnm+yROfE0A, suzuki.poulose-5wv7dgnIgG8, maz-DgEjT+Ai2ygdnm+yROfE0A, steven.price-5wv7dgnIgG8, guohanjun-hv44wF8Li93QT0dZR+AlfA, olof-nZhT3qVonbNeoWH0uzbU5w Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-mm-Bw31MaZKKs3YtjvyW6yDsg, arm-DgEjT+Ai2ygdnm+yROfE0A, xiexiangyou-hv44wF8Li93QT0dZR+AlfA, prime.zeng-C8/M+/jPZTeaMJb+Lgu22Q, zhangshaokun-C8/M+/jPZTeaMJb+Lgu22Q, kuhn.chenqun-hv44wF8Li93QT0dZR+AlfA, linux-tegra Hi Jon, On 2020/7/13 22:27, Jon Hunter wrote: > After this change I am seeing the following build errors ... > > /tmp/cckzq3FT.s: Assembler messages: > /tmp/cckzq3FT.s:854: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:870: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:1095: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:1111: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:1964: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:1980: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:2286: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:2302: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > /tmp/cckzq3FT.s:4833: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > /tmp/cckzq3FT.s:4849: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > /tmp/cckzq3FT.s:5090: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > /tmp/cckzq3FT.s:5106: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > /tmp/cckzq3FT.s:874: Error: attempt to move .org backwards > /tmp/cckzq3FT.s:1115: Error: attempt to move .org backwards > /tmp/cckzq3FT.s:1984: Error: attempt to move .org backwards > /tmp/cckzq3FT.s:2306: Error: attempt to move .org backwards > /tmp/cckzq3FT.s:4853: Error: attempt to move .org backwards > /tmp/cckzq3FT.s:5110: Error: attempt to move .org backwards > scripts/Makefile.build:280: recipe for target 'arch/arm64/mm/hugetlbpage.o' failed > make[3]: *** [arch/arm64/mm/hugetlbpage.o] Error 1 > scripts/Makefile.build:497: recipe for target 'arch/arm64/mm' failed > make[2]: *** [arch/arm64/mm] Error 2 > > Cheers > Jon > The code must be built with binutils >= 2.30. Maybe I should add a check on whether binutils supports ARMv8.4-a instructions... Thanks, Zhenyu ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <cee60718-ced2-069f-8dad-48941c6fc09b-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v2 2/2] arm64: tlb: Use the TLBI RANGE feature in arm64 [not found] ` <cee60718-ced2-069f-8dad-48941c6fc09b-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> @ 2020-07-13 14:44 ` Jon Hunter [not found] ` <7237888d-2168-cd8b-c83d-c8e54871793d-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 4+ messages in thread From: Jon Hunter @ 2020-07-13 14:44 UTC (permalink / raw) To: Zhenyu Ye, catalin.marinas-5wv7dgnIgG8, will-DgEjT+Ai2ygdnm+yROfE0A, suzuki.poulose-5wv7dgnIgG8, maz-DgEjT+Ai2ygdnm+yROfE0A, steven.price-5wv7dgnIgG8, guohanjun-hv44wF8Li93QT0dZR+AlfA, olof-nZhT3qVonbNeoWH0uzbU5w Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-mm-Bw31MaZKKs3YtjvyW6yDsg, arm-DgEjT+Ai2ygdnm+yROfE0A, xiexiangyou-hv44wF8Li93QT0dZR+AlfA, prime.zeng-C8/M+/jPZTeaMJb+Lgu22Q, zhangshaokun-C8/M+/jPZTeaMJb+Lgu22Q, kuhn.chenqun-hv44wF8Li93QT0dZR+AlfA, linux-tegra On 13/07/2020 15:39, Zhenyu Ye wrote: > Hi Jon, > > On 2020/7/13 22:27, Jon Hunter wrote: >> After this change I am seeing the following build errors ... >> >> /tmp/cckzq3FT.s: Assembler messages: >> /tmp/cckzq3FT.s:854: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:870: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:1095: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:1111: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:1964: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:1980: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:2286: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:2302: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' >> /tmp/cckzq3FT.s:4833: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' >> /tmp/cckzq3FT.s:4849: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' >> /tmp/cckzq3FT.s:5090: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' >> /tmp/cckzq3FT.s:5106: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' >> /tmp/cckzq3FT.s:874: Error: attempt to move .org backwards >> /tmp/cckzq3FT.s:1115: Error: attempt to move .org backwards >> /tmp/cckzq3FT.s:1984: Error: attempt to move .org backwards >> /tmp/cckzq3FT.s:2306: Error: attempt to move .org backwards >> /tmp/cckzq3FT.s:4853: Error: attempt to move .org backwards >> /tmp/cckzq3FT.s:5110: Error: attempt to move .org backwards >> scripts/Makefile.build:280: recipe for target 'arch/arm64/mm/hugetlbpage.o' failed >> make[3]: *** [arch/arm64/mm/hugetlbpage.o] Error 1 >> scripts/Makefile.build:497: recipe for target 'arch/arm64/mm' failed >> make[2]: *** [arch/arm64/mm] Error 2 >> >> Cheers >> Jon >> > > The code must be built with binutils >= 2.30. > Maybe I should add a check on whether binutils supports ARMv8.4-a instructions... Yes I believe so. Cheers Jon -- nvpublic ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <7237888d-2168-cd8b-c83d-c8e54871793d-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v2 2/2] arm64: tlb: Use the TLBI RANGE feature in arm64 [not found] ` <7237888d-2168-cd8b-c83d-c8e54871793d-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> @ 2020-07-13 17:21 ` Catalin Marinas 0 siblings, 0 replies; 4+ messages in thread From: Catalin Marinas @ 2020-07-13 17:21 UTC (permalink / raw) To: Jon Hunter Cc: Zhenyu Ye, will-DgEjT+Ai2ygdnm+yROfE0A, suzuki.poulose-5wv7dgnIgG8, maz-DgEjT+Ai2ygdnm+yROfE0A, steven.price-5wv7dgnIgG8, guohanjun-hv44wF8Li93QT0dZR+AlfA, olof-nZhT3qVonbNeoWH0uzbU5w, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arch-u79uwXL29TY76Z2rM5mHXA, linux-mm-Bw31MaZKKs3YtjvyW6yDsg, arm-DgEjT+Ai2ygdnm+yROfE0A, xiexiangyou-hv44wF8Li93QT0dZR+AlfA, prime.zeng-C8/M+/jPZTeaMJb+Lgu22Q, zhangshaokun-C8/M+/jPZTeaMJb+Lgu22Q, kuhn.chenqun-hv44wF8Li93QT0dZR+AlfA, linux-tegra On Mon, Jul 13, 2020 at 03:44:16PM +0100, Jon Hunter wrote: > On 13/07/2020 15:39, Zhenyu Ye wrote: > > On 2020/7/13 22:27, Jon Hunter wrote: > >> After this change I am seeing the following build errors ... > >> > >> /tmp/cckzq3FT.s: Assembler messages: > >> /tmp/cckzq3FT.s:854: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:870: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:1095: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:1111: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:1964: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:1980: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:2286: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:2302: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x7' > >> /tmp/cckzq3FT.s:4833: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > >> /tmp/cckzq3FT.s:4849: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > >> /tmp/cckzq3FT.s:5090: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > >> /tmp/cckzq3FT.s:5106: Error: unknown or missing operation name at operand 1 -- `tlbi rvae1is,x6' > >> /tmp/cckzq3FT.s:874: Error: attempt to move .org backwards > >> /tmp/cckzq3FT.s:1115: Error: attempt to move .org backwards > >> /tmp/cckzq3FT.s:1984: Error: attempt to move .org backwards > >> /tmp/cckzq3FT.s:2306: Error: attempt to move .org backwards > >> /tmp/cckzq3FT.s:4853: Error: attempt to move .org backwards > >> /tmp/cckzq3FT.s:5110: Error: attempt to move .org backwards > >> scripts/Makefile.build:280: recipe for target 'arch/arm64/mm/hugetlbpage.o' failed > >> make[3]: *** [arch/arm64/mm/hugetlbpage.o] Error 1 > >> scripts/Makefile.build:497: recipe for target 'arch/arm64/mm' failed > >> make[2]: *** [arch/arm64/mm] Error 2 > > > > The code must be built with binutils >= 2.30. > > Maybe I should add a check on whether binutils supports ARMv8.4-a instructions... > > Yes I believe so. The binutils guys in Arm confirmed that assembling "tlbi rvae1is" without -march=armv8.4-a is a bug. When it gets fixed, checking for the binutils version is not sufficient without passing -march. I think we are better off with a manual encoding of the instruction. -- Catalin ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-07-13 17:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20200710094420.517-1-yezhenyu2@huawei.com>
[not found] ` <20200710094420.517-3-yezhenyu2@huawei.com>
[not found] ` <20200710094420.517-3-yezhenyu2-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2020-07-13 14:27 ` [PATCH v2 2/2] arm64: tlb: Use the TLBI RANGE feature in arm64 Jon Hunter
[not found] ` <4040f429-21c8-0825-2ad4-97786c3fe7c1-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2020-07-13 14:39 ` Zhenyu Ye
[not found] ` <cee60718-ced2-069f-8dad-48941c6fc09b-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2020-07-13 14:44 ` Jon Hunter
[not found] ` <7237888d-2168-cd8b-c83d-c8e54871793d-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2020-07-13 17:21 ` Catalin Marinas
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox