From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54963) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShSFD-00038r-Ut for qemu-devel@nongnu.org; Wed, 20 Jun 2012 17:15:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ShSFC-0002XK-1c for qemu-devel@nongnu.org; Wed, 20 Jun 2012 17:15:19 -0400 Received: from mail-pz0-f45.google.com ([209.85.210.45]:43352) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShSFB-0002Wx-Rd for qemu-devel@nongnu.org; Wed, 20 Jun 2012 17:15:17 -0400 Received: by dadn2 with SMTP id n2so9932928dad.4 for ; Wed, 20 Jun 2012 14:15:16 -0700 (PDT) Message-ID: <4FE23D61.3030000@codemonkey.ws> Date: Wed, 20 Jun 2012 16:15:13 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1340087992-2399-1-git-send-email-benh@kernel.crashing.org> <1340087992-2399-3-git-send-email-benh@kernel.crashing.org> In-Reply-To: <1340087992-2399-3-git-send-email-benh@kernel.crashing.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 02/13] Implement cpu_physical_memory_set() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Benjamin Herrenschmidt Cc: qemu-devel@nongnu.org, David Gibson On 06/19/2012 01:39 AM, Benjamin Herrenschmidt wrote: > From: David Gibson > > This patch adds cpu_physical_memory_set() function. This is equivalent to > calling cpu_physical_memory_write() with a buffer filled with a character, > ie, a memset of target memory. > > It uses a small temporary buffer on the stack. > > Signed-off-by: David Gibson > Signed-off-by: Benjamin Herrenschmidt Why should this be in the core API? Shouldn't this be a helper on top of the DMA API? Regards, Anthony Liguori > --- > cpu-common.h | 1 + > exec.c | 15 +++++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/cpu-common.h b/cpu-common.h > index 1fe3280..8d3596a 100644 > --- a/cpu-common.h > +++ b/cpu-common.h > @@ -53,6 +53,7 @@ void qemu_ram_set_idstr(ram_addr_t addr, const char *name, DeviceState *dev); > > void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, > int len, int is_write); > +void cpu_physical_memory_set(target_phys_addr_t addr, uint8_t c, int len); > static inline void cpu_physical_memory_read(target_phys_addr_t addr, > void *buf, int len) > { > diff --git a/exec.c b/exec.c > index b5d6885..cfd7008 100644 > --- a/exec.c > +++ b/exec.c > @@ -3601,6 +3601,21 @@ void cpu_physical_memory_rw(target_phys_addr_t addr, uint8_t *buf, > } > } > > +void cpu_physical_memory_set(target_phys_addr_t addr, uint8_t c, int len) > +{ > +#define FILLBUF_SIZE 512 > + uint8_t fillbuf[FILLBUF_SIZE]; > + int l; > + > + memset(fillbuf, c, FILLBUF_SIZE); > + while (len> 0) { > + l = len< FILLBUF_SIZE ? len : FILLBUF_SIZE; > + cpu_physical_memory_rw(addr, fillbuf, l, true); > + len -= len; > + addr += len; > + } > +} > + > /* used for ROM loading : can write in RAM and ROM */ > void cpu_physical_memory_write_rom(target_phys_addr_t addr, > const uint8_t *buf, int len)