Message ID | 20191018174431.1784-1-richard.henderson@linaro.org |
---|---|
Headers | show |
Series | target/arm: Reduce overhead of cpu_get_tb_cpu_state | expand |
On Fri, 18 Oct 2019 at 18:44, Richard Henderson <richard.henderson@linaro.org> wrote: > > Changes since v7: > * Rebuild hflags for all successful nvic writes (Peter). > * Rebuild hflags for Xscale sctlr writes (Peter). > > Changes since v6: > * Regen hflags in two more places for m-profile (patch 19). > > Changes since v5: > * Fix the debug assertion ifdef in the final patch. > * Add more calls to arm_rebuild_hflags: CPSR and M-profile > These become two new patches, 18 & 19. > * Update some comments per review. (Alex) > > Changes since v4: > * Split patch 1 into 15 smaller patches. > * Cache the new DEBUG_TARGET_EL field. > * Split out m-profile hflags separately from a-profile 32-bit. > * Move around non-cached tb flags as well, avoiding repetitive > checks for m-profile or other mutually exclusive conditions. > > I haven't officially re-run the performance test quoted in the > last patch, but I have eyeballed "perf top", and have dug into > the compiled code a bit, which resulted in a few of the new > cleanup patches (e.g. cs_base, arm_mmu_idx_el, and > arm_cpu_data_is_big_endian). > ... > > > r~ Applied to target-arm.next, thanks. -- PMM
On Tue, 22 Oct 2019 at 13:47, Peter Maydell <peter.maydell@linaro.org> wrote: > > On Fri, 18 Oct 2019 at 18:44, Richard Henderson > <richard.henderson@linaro.org> wrote: > > > > Changes since v7: > > * Rebuild hflags for all successful nvic writes (Peter). > > * Rebuild hflags for Xscale sctlr writes (Peter). > > > > Changes since v6: > > * Regen hflags in two more places for m-profile (patch 19). > > > > Changes since v5: > > * Fix the debug assertion ifdef in the final patch. > > * Add more calls to arm_rebuild_hflags: CPSR and M-profile > > These become two new patches, 18 & 19. > > * Update some comments per review. (Alex) > > > > Changes since v4: > > * Split patch 1 into 15 smaller patches. > > * Cache the new DEBUG_TARGET_EL field. > > * Split out m-profile hflags separately from a-profile 32-bit. > > * Move around non-cached tb flags as well, avoiding repetitive > > checks for m-profile or other mutually exclusive conditions. > > > > I haven't officially re-run the performance test quoted in the > > last patch, but I have eyeballed "perf top", and have dug into > > the compiled code a bit, which resulted in a few of the new > > cleanup patches (e.g. cs_base, arm_mmu_idx_el, and > > arm_cpu_data_is_big_endian). > > ... > > > > > > r~ > > > > Applied to target-arm.next, thanks. Turns out this asserts in qemu-armeb :-( /home/petmay01/linaro/qemu-for-merges/build/all-linux-static/armeb-linux-user/qemu-armeb -L ./gnemul/qemu-armeb armeb/ls -l dummyfile qemu-armeb: /home/petmay01/linaro/qemu-for-merges/target/arm/helper.c:11267: cpu_get_tb_cpu_state: Assertion `flags == rebuild_hflags_internal(env)' failed. qemu: uncaught target signal 11 (Segmentation fault) - core dumped Segmentation fault (core dumped) Dropping this series again for the moment. thanks -- PMM
On 10/22/19 11:38 AM, Peter Maydell wrote: > Turns out this asserts in qemu-armeb :-( > > /home/petmay01/linaro/qemu-for-merges/build/all-linux-static/armeb-linux-user/qemu-armeb > -L ./gnemul/qemu-armeb armeb/ls -l dummyfile > qemu-armeb: /home/petmay01/linaro/qemu-for-merges/target/arm/helper.c:11267: > cpu_get_tb_cpu_state: Assertion `flags == > rebuild_hflags_internal(env)' failed. > qemu: uncaught target signal 11 (Segmentation fault) - core dumped > Segmentation fault (core dumped) > > Dropping this series again for the moment. Argh! I had forgotten that we have no testing of armeb in check-tcg. Yes, I see now that we need a recompute in linux-user/{aarch64,arm}/cpu_loop.c specific to TARGET_WORDS_BIGENDIAN. r~
Richard Henderson <richard.henderson@linaro.org> writes: > On 10/22/19 11:38 AM, Peter Maydell wrote: >> Turns out this asserts in qemu-armeb :-( >> >> /home/petmay01/linaro/qemu-for-merges/build/all-linux-static/armeb-linux-user/qemu-armeb >> -L ./gnemul/qemu-armeb armeb/ls -l dummyfile >> qemu-armeb: /home/petmay01/linaro/qemu-for-merges/target/arm/helper.c:11267: >> cpu_get_tb_cpu_state: Assertion `flags == >> rebuild_hflags_internal(env)' failed. >> qemu: uncaught target signal 11 (Segmentation fault) - core dumped >> Segmentation fault (core dumped) >> >> Dropping this series again for the moment. > Argh! I had forgotten that we have no testing of armeb in check-tcg. Does it need it's own toolchain or can it be done with flags? > > Yes, I see now that we need a recompute in linux-user/{aarch64,arm}/cpu_loop.c > specific to TARGET_WORDS_BIGENDIAN. > > > r~ -- Alex Bennée
On 10/23/19 11:17 AM, Alex Bennée wrote: >>> Dropping this series again for the moment. >> Argh! I had forgotten that we have no testing of armeb in check-tcg. > > Does it need it's own toolchain or can it be done with flags? I think the compiler only needs flags, so we might be able to gin something up for {aarch64_eb,armeb}-linux-user from __start. r~
For system emulation? Sure. I think linux-user is harder because you need the be crt and libs packaged. On Wed, 23 Oct 2019, 17:13 Richard Henderson, <richard.henderson@linaro.org> wrote: > On 10/23/19 11:17 AM, Alex Bennée wrote: > >>> Dropping this series again for the moment. > >> Argh! I had forgotten that we have no testing of armeb in check-tcg. > > > > Does it need it's own toolchain or can it be done with flags? > > I think the compiler only needs flags, so we might be able to gin > something up > for {aarch64_eb,armeb}-linux-user from __start. > > > r~ > <div dir="auto">For system emulation? Sure. I think linux-user is harder because you need the be crt and libs packaged.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 23 Oct 2019, 17:13 Richard Henderson, <<a href="mailto:richard.henderson@linaro.org">richard.henderson@linaro.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 10/23/19 11:17 AM, Alex Bennée wrote:<br> >>> Dropping this series again for the moment.<br> >> Argh! I had forgotten that we have no testing of armeb in check-tcg.<br> > <br> > Does it need it's own toolchain or can it be done with flags?<br> <br> I think the compiler only needs flags, so we might be able to gin something up<br> for {aarch64_eb,armeb}-linux-user from __start.<br> <br> <br> r~<br> </blockquote></div>