From: David Gibson <david@gibson.dropbear.id.au> To: peter.maydell@linaro.org Cc: gkurz@kaod.org, clg@kaod.org, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, "Artyom Tarasenko" <atar4qemu@gmail.com>, "Hervé Poussineau" <hpoussin@reactos.org>, "David Gibson" <david@gibson.dropbear.id.au> Subject: [Qemu-devel] [PULL 36/36] target/ppc: improve performance of large BAT invalidations Date: Fri, 26 Apr 2019 16:06:27 +1000 [thread overview] Message-ID: <20190426060627.18153-37-david@gibson.dropbear.id.au> (raw) In-Reply-To: <20190426060627.18153-1-david@gibson.dropbear.id.au> From: Artyom Tarasenko <atar4qemu@gmail.com> Performing a complete flush is ~ 100 times faster than flushing 256MiB of 4KiB pages. Set a limit of 1024 pages and perform a complete flush afterwards. This patch significantly speeds up AIX 5.1 and NetBSD-ofppc. Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com> Message-Id: <1555103178-21894-4-git-send-email-atar4qemu@gmail.com> Reviewed-by: Hervé Poussineau <hpoussin@reactos.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> --- target/ppc/mmu_helper.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c index d226b35739..1dbc9acb75 100644 --- a/target/ppc/mmu_helper.c +++ b/target/ppc/mmu_helper.c @@ -1820,6 +1820,13 @@ static inline void do_invalidate_BAT(CPUPPCState *env, target_ulong BATu, base = BATu & ~0x0001FFFF; end = base + mask + 0x00020000; + if (((end - base) >> TARGET_PAGE_BITS) > 1024) { + /* Flushing 1024 4K pages is slower than a complete flush */ + LOG_BATS("Flush all BATs\n"); + tlb_flush(CPU(cs)); + LOG_BATS("Flush done\n"); + return; + } LOG_BATS("Flush BAT from " TARGET_FMT_lx " to " TARGET_FMT_lx " (" TARGET_FMT_lx ")\n", base, end, mask); for (page = base; page != end; page += TARGET_PAGE_SIZE) { -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: David Gibson <david@gibson.dropbear.id.au> To: peter.maydell@linaro.org Cc: gkurz@kaod.org, qemu-devel@nongnu.org, "Hervé Poussineau" <hpoussin@reactos.org>, clg@kaod.org, qemu-ppc@nongnu.org, "Artyom Tarasenko" <atar4qemu@gmail.com>, "David Gibson" <david@gibson.dropbear.id.au> Subject: [Qemu-devel] [PULL 36/36] target/ppc: improve performance of large BAT invalidations Date: Fri, 26 Apr 2019 16:06:27 +1000 [thread overview] Message-ID: <20190426060627.18153-37-david@gibson.dropbear.id.au> (raw) Message-ID: <20190426060627._Dt89SnUGkArRZSV4akj5MWCTfQkoZyp9lPN6hsECGM@z> (raw) In-Reply-To: <20190426060627.18153-1-david@gibson.dropbear.id.au> From: Artyom Tarasenko <atar4qemu@gmail.com> Performing a complete flush is ~ 100 times faster than flushing 256MiB of 4KiB pages. Set a limit of 1024 pages and perform a complete flush afterwards. This patch significantly speeds up AIX 5.1 and NetBSD-ofppc. Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com> Message-Id: <1555103178-21894-4-git-send-email-atar4qemu@gmail.com> Reviewed-by: Hervé Poussineau <hpoussin@reactos.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> --- target/ppc/mmu_helper.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/target/ppc/mmu_helper.c b/target/ppc/mmu_helper.c index d226b35739..1dbc9acb75 100644 --- a/target/ppc/mmu_helper.c +++ b/target/ppc/mmu_helper.c @@ -1820,6 +1820,13 @@ static inline void do_invalidate_BAT(CPUPPCState *env, target_ulong BATu, base = BATu & ~0x0001FFFF; end = base + mask + 0x00020000; + if (((end - base) >> TARGET_PAGE_BITS) > 1024) { + /* Flushing 1024 4K pages is slower than a complete flush */ + LOG_BATS("Flush all BATs\n"); + tlb_flush(CPU(cs)); + LOG_BATS("Flush done\n"); + return; + } LOG_BATS("Flush BAT from " TARGET_FMT_lx " to " TARGET_FMT_lx " (" TARGET_FMT_lx ")\n", base, end, mask); for (page = base; page != end; page += TARGET_PAGE_SIZE) { -- 2.20.1
next prev parent reply other threads:[~2019-04-26 6:07 UTC|newest] Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-26 6:05 [Qemu-devel] [PULL 00/36] ppc-for-4.1 queue 20190426 David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 01/36] spapr: Support NVIDIA V100 GPU with NVLink2 David Gibson 2019-04-26 6:05 ` David Gibson 2019-05-17 17:37 ` Laurent Vivier 2019-05-17 17:58 ` Greg Kurz 2019-05-20 6:06 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 02/36] hw/ppc/prep: Drop useless inclusion of "hw/input/i8042.h" David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 03/36] spapr/rtas: modify spapr_rtas_register() to remove RTAS handlers David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 04/36] spapr/irq: remove spapr_ics_create() David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 05/36] target/ppc: Style fixes for ppc-models.[ch] David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 06/36] target/ppc: Style fixes for cpu.[ch] David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 07/36] target/ppc: Style fixes for int_helper.c David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:05 ` [Qemu-devel] [PULL 08/36] target/ppc: Style fixes for fpu_helper.c David Gibson 2019-04-26 6:05 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 09/36] target/ppc: Style fixes for dfp_helper.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 10/36] target/ppc: Style fixes for excp_helper.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 11/36] target/ppc: Style fixes for gdbstub.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 12/36] target/ppc: Style fixes for helper_regs.h David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 13/36] target/ppc: Style fixes for kvm_ppc.h and kvm.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 14/36] target/ppc: Style fixes for machine.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 15/36] target/ppc: Style fixes for mem_helper.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 16/36] target/ppc: Style fixes for mfrom_table.inc.c & mfrom_table_gen.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 17/36] target/ppc: Style fixes for misc_helper.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 18/36] target/ppc: Style fixes for mmu-hash32.[ch] David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 19/36] target/ppc: Style fixes for mmu-hash64.[ch] David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 20/36] target/ppc: Style fixes for mmu_helper.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 21/36] target/ppc: Style fixes for monitor.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 22/36] target/ppc: Style fixes for translate_init.inc.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 23/36] target/ppc: Style fixes for translate.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 24/36] target/ppc: Style fixes for translate/fp-impl.inc.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 25/36] target/ppc: Style fixes for translate/vsx-impl.inc.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 26/36] target/ppc: Style fixes for translate/vmx-impl.inc.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 27/36] target/ppc: Style fixes for translate/spe-impl.inc.c David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 28/36] spapr_pci: Get rid of duplicate code for node name creation David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 29/36] spapr: Drop duplicate PCI swizzle code David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 30/36] target/ppc/trace-events: Fix trivial typo David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 31/36] target/ppc/kvm: Convert DPRINTF to traces David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 32/36] target/ppc: Don't check UPRT in radix mode when in HV real mode David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 33/36] ppc/spapr: Use proper HPTE accessors for H_READ David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 34/36] ppc/hash64: Rework R and C bit updates David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` [Qemu-devel] [PULL 35/36] ppc/hash32: " David Gibson 2019-04-26 6:06 ` David Gibson 2019-04-26 6:06 ` David Gibson [this message] 2019-04-26 6:06 ` [Qemu-devel] [PULL 36/36] target/ppc: improve performance of large BAT invalidations David Gibson 2019-04-28 10:42 ` [Qemu-devel] [PULL 00/36] ppc-for-4.1 queue 20190426 Peter Maydell 2019-04-28 10:42 ` Peter Maydell
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190426060627.18153-37-david@gibson.dropbear.id.au \ --to=david@gibson.dropbear.id.au \ --cc=atar4qemu@gmail.com \ --cc=clg@kaod.org \ --cc=gkurz@kaod.org \ --cc=hpoussin@reactos.org \ --cc=peter.maydell@linaro.org \ --cc=qemu-devel@nongnu.org \ --cc=qemu-ppc@nongnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.