Re: [Qemu-devel] [PATCH 00/15] Clean up cpu-ldst ld/st memory accessors
On 01/15/2015 07:01 AM, Peter Maydell wrote: I was looking at our confusing mess of memory accessor functions, and I realised that partly it was confusing because we have a bunch of unnecessary junk lurking in there :-) This series attempts to clean things up by removing things we weren't using at all or were only using by mistake in a few places: * ldul_*: not used * ld* (ldl, etc): hardly used * ld*_kernel: not used * ld*_raw: hardly used * cpu_{ld,st}{fq,fl}: not used The dull parts of this series are removing the unused macros and fixing uses of the hardly-used macros so those can be deleted too. This series also switches to using inline functions rather than macros for the user-only cpu_ld/st* accessors, bringing them into line with the softmmu configs. This has the nice side effect of letting us get rid of the _raw accessor macros too. I've also thrown in a commit which cleans up the doc comments. Peter Maydell (15): cpu_ldst.h: Remove unused ldul_ macros monitor.c: Use ld*_p() instead of ld*_raw() target-sparc: Don't use {ld,st}*_raw functions linux-user/elfload.c: Don't use _raw accessor functions bsd-user/elfload.c: Don't use ldl() or ldq_raw() linux-user/vm86.c: Use cpu_ldl_data c rather than plain ldl c linux-user/main.c (m68k): Use get_user_u16 rather than lduw in cpu_loop target-mips: Don't use _raw load/store accessors cpu_ldst.h: Drop unused ld/st*_kernel defines cpu_ldst.h: Remove unused very short ld*/st* defines cpu_ldst.h: Use inline functions for usermode cpu_ld/st accessors cpu_ldst_template.h: Use ld*_p directly rather than via ld*_raw macros cpu_ldst.h: Drop unused _raw macros, saddr() and laddr() cpu_ldst_template.h: Drop unused cpu_ldfq/stfq/ldfl/stfl accessors cpu_ldst.h, cpu-all.h, bswap.h: Update documentation on ld/st accessors Reviewed-by: Richard Henderson r...@twiddle.net Nice cleanup. r~
Re: [Qemu-devel] [PATCH 00/15] Clean up cpu-ldst ld/st memory accessors
On 15 January 2015 at 15:32, Lluís Vilanova vilan...@ac.upc.edu wrote: I haven't reviewed the patches, but that's a much appreciated cleanup! I was also trying to make sense of all the variants while implementing guest memory access tracing I drew the following terrible ASCII art diagram of the remaining memory access functions... (pastebin link for those without fixed-width mail clients: http://pastebin.ubuntu.com/9757219/ ) If anybody feels they can rearrange it into something less confusing do feel free :-) +--+ | | | +-+ | | | | | | | | | | | +--+ | | | || | | | | || v v | | || MemoryRegion callbacks ld/st_*_p, memcpy, etc ! --+ | || ^ on host memory | || | ^ ^^ | || | | || | || | | || | || | | || | || | + || | || + +ld/st_*_phys ! || | ||+- io_mem_read, ---+ || | ||+ io_mem_write ! || | || io_read*, io_write* ---+ || | ||^| || | |||| +| | |||+ address_space_{rw,read,write} ! | | ||+ ^ ^ | | |+helper_ld_* --+ | | | | |^ | | | | | || | | | + | || | cpu_physical_memory_rw c+---+ | cpu_physical_memory_write_rom ! | || | ^ ! | ^ | || | | + | | |+ | | dma_memory_rw c !| | ++ cpu_ld/st_* ! | | | | | | | | + | | +-+ generated TCG code| + +-+ cpu_physical_memory_rw_debug ! ! marks APIs intended for use by other parts of QEMU -- PMM
Re: [Qemu-devel] [PATCH 00/15] Clean up cpu-ldst ld/st memory accessors
Peter Maydell writes: I was looking at our confusing mess of memory accessor functions, and I realised that partly it was confusing because we have a bunch of unnecessary junk lurking in there :-) This series attempts to clean things up by removing things we weren't using at all or were only using by mistake in a few places: * ldul_*: not used * ld* (ldl, etc): hardly used * ld*_kernel: not used * ld*_raw: hardly used * cpu_{ld,st}{fq,fl}: not used The dull parts of this series are removing the unused macros and fixing uses of the hardly-used macros so those can be deleted too. This series also switches to using inline functions rather than macros for the user-only cpu_ld/st* accessors, bringing them into line with the softmmu configs. This has the nice side effect of letting us get rid of the _raw accessor macros too. I've also thrown in a commit which cleans up the doc comments. I haven't reviewed the patches, but that's a much appreciated cleanup! I was also trying to make sense of all the variants while implementing guest memory access tracing (let's see if I can find some time to polish and post the series). Thanks! Lluis -- And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer. -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth
[Qemu-devel] [PATCH 00/15] Clean up cpu-ldst ld/st memory accessors
I was looking at our confusing mess of memory accessor functions, and I realised that partly it was confusing because we have a bunch of unnecessary junk lurking in there :-) This series attempts to clean things up by removing things we weren't using at all or were only using by mistake in a few places: * ldul_*: not used * ld* (ldl, etc): hardly used * ld*_kernel: not used * ld*_raw: hardly used * cpu_{ld,st}{fq,fl}: not used The dull parts of this series are removing the unused macros and fixing uses of the hardly-used macros so those can be deleted too. This series also switches to using inline functions rather than macros for the user-only cpu_ld/st* accessors, bringing them into line with the softmmu configs. This has the nice side effect of letting us get rid of the _raw accessor macros too. I've also thrown in a commit which cleans up the doc comments. Peter Maydell (15): cpu_ldst.h: Remove unused ldul_ macros monitor.c: Use ld*_p() instead of ld*_raw() target-sparc: Don't use {ld,st}*_raw functions linux-user/elfload.c: Don't use _raw accessor functions bsd-user/elfload.c: Don't use ldl() or ldq_raw() linux-user/vm86.c: Use cpu_ldl_data c rather than plain ldl c linux-user/main.c (m68k): Use get_user_u16 rather than lduw in cpu_loop target-mips: Don't use _raw load/store accessors cpu_ldst.h: Drop unused ld/st*_kernel defines cpu_ldst.h: Remove unused very short ld*/st* defines cpu_ldst.h: Use inline functions for usermode cpu_ld/st accessors cpu_ldst_template.h: Use ld*_p directly rather than via ld*_raw macros cpu_ldst.h: Drop unused _raw macros, saddr() and laddr() cpu_ldst_template.h: Drop unused cpu_ldfq/stfq/ldfl/stfl accessors cpu_ldst.h, cpu-all.h, bswap.h: Update documentation on ld/st accessors bsd-user/elfload.c| 11 +- include/exec/cpu-all.h| 38 +-- include/exec/cpu_ldst.h | 162 +- include/exec/cpu_ldst_template.h | 60 +-- include/exec/cpu_ldst_useronly_template.h | 81 +++ include/qemu/bswap.h | 11 +- linux-user/elfload.c | 7 +- linux-user/main.c | 2 +- linux-user/vm86.c | 57 ++- monitor.c | 8 +- target-i386/seg_helper.c | 16 ++- target-mips/op_helper.c | 4 +- target-sparc/ldst_helper.c| 24 ++--- 13 files changed, 224 insertions(+), 257 deletions(-) create mode 100644 include/exec/cpu_ldst_useronly_template.h -- 1.9.1
Re: [Qemu-devel] [PATCH 00/15] Clean up cpu-ldst ld/st memory accessors
On 15/01/2015 20:10, Lluís Vilanova wrote: Peter Maydell writes: On 15 January 2015 at 15:32, Lluís Vilanova vilan...@ac.upc.edu wrote: I haven't reviewed the patches, but that's a much appreciated cleanup! I was also trying to make sense of all the variants while implementing guest memory access tracing I drew the following terrible ASCII art diagram of the remaining memory access functions... (pastebin link for those without fixed-width mail clients: http://pastebin.ubuntu.com/9757219/ ) If anybody feels they can rearrange it into something less confusing do feel free :-) Technically, I did not rearrange it :) http://pastebin.ubuntu.com/9757456/ PS: some info from the original is missing Removing even more info, ld/st_*_phys is just an optimized version of address_space_rw/read/write, so we can merge them and get to something readable... Paolo # dot -T pdf -o qemu-mem.pdf qemu-mem.dot digraph QEMU { mr [label=MemoryRegion callbacks]; host_mem [label=ld/st_*_p, memcpy, etc.\n(host memory)]; io_mem_mem [label=io_mem_read/write]; io_mem [label=io_read/write*]; as_mem [label=address_space_rw/read/write\nld/st_*_phys]; helper_mem [label=helper_ld_*]; cpu_phys_mem [label=cpu_physical_memory_rw]; cpu_phys_rom [label=cpu_physical_memory_write_rom]; dma_mem [label=dma_memory_rw]; cpu_mem [label=cpu_ld/st_*]; tcg [label=Generated TCG code]; cpu_phys_mem_debug [label=cpu_physical_memory_rw_debug]; io_mem_mem - mr; io_mem - io_mem_mem; as_mem - io_mem_mem; as_mem - host_mem; helper_mem - io_mem; helper_mem - host_mem; cpu_phys_mem - as_mem; cpu_phys_rom - host_mem; dma_mem - as_mem; cpu_mem - helper_mem; cpu_mem - host_mem; tcg - helper_mem; tcg - host_mem; cpu_phys_mem_debug - cpu_phys_mem; cpu_phys_mem_debug - cpu_phys_rom; }
Re: [Qemu-devel] [PATCH 00/15] Clean up cpu-ldst ld/st memory accessors
Peter Maydell writes: On 15 January 2015 at 15:32, Lluís Vilanova vilan...@ac.upc.edu wrote: I haven't reviewed the patches, but that's a much appreciated cleanup! I was also trying to make sense of all the variants while implementing guest memory access tracing I drew the following terrible ASCII art diagram of the remaining memory access functions... (pastebin link for those without fixed-width mail clients: http://pastebin.ubuntu.com/9757219/ ) If anybody feels they can rearrange it into something less confusing do feel free :-) Technically, I did not rearrange it :) http://pastebin.ubuntu.com/9757456/ PS: some info from the original is missing Lluis -- And it's much the same thing with knowledge, for whenever you learn something new, the whole world becomes that much richer. -- The Princess of Pure Reason, as told by Norton Juster in The Phantom Tollbooth