Re: [Qemu-devel] [PATCH 00/15] Clean up cpu-ldst ld/st memory accessors

2015-01-16 Thread Richard Henderson
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

2015-01-15 Thread Peter Maydell
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

2015-01-15 Thread Lluís Vilanova
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

2015-01-15 Thread Peter Maydell
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

2015-01-15 Thread Paolo Bonzini


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

2015-01-15 Thread Lluís Vilanova
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