qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-arm] [PATCH] Reducing stack frame size in stream_process_mem2s


From: Rutuja Shah
Subject: Re: [Qemu-arm] [PATCH] Reducing stack frame size in stream_process_mem2s()
Date: Tue, 4 Oct 2016 18:53:20 +0530

Hi,
Allocating txbuf in struct Stream seems to be good. I can see other
pointers of struct Stream being allocated in xilinx_axidma_realize(),
but I am not able to find their deallocation point anywhere?
Regards
Rutuja Shah


On Tue, Oct 4, 2016 at 3:56 AM, Edgar E. Iglesias
<address@hidden> wrote:
> On Mon, Oct 03, 2016 at 10:32:40PM +0530, Rutuja Shah wrote:
>> ++ stefan Sorry for the typo.
>> Regards
>> Rutuja Shah
>>
>>
>> On Mon, Oct 3, 2016 at 10:26 PM,  <address@hidden> wrote:
>> > From: Rutuja Shah <address@hidden>
>> >
>> > This patch allocates memory for txbuf array on the heap rather than the 
>> > stack.
>> > As a result, the stack frame size is reduced.
>> >
>> > Signed-off-by: Rutuja Shah <address@hidden>
>> > ---
>> >  hw/dma/xilinx_axidma.c | 4 +++-
>> >  1 file changed, 3 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c
>> > index b135a5f..6c63575 100644
>> > --- a/hw/dma/xilinx_axidma.c
>> > +++ b/hw/dma/xilinx_axidma.c
>> > @@ -256,13 +256,14 @@ static void stream_process_mem2s(struct Stream *s, 
>> > StreamSlave *tx_data_dev,
>> >                                   StreamSlave *tx_control_dev)
>> >  {
>> >      uint32_t prev_d;
>> > -    unsigned char txbuf[16 * 1024];
>> > +    unsigned char *txbuf;
>> >      unsigned int txlen;
>> >
>> >      if (!stream_running(s) || stream_idle(s)) {
>> >          return;
>> >      }
>> >
>> > +    txbuf = g_malloc(16 * 1024);
>
> Hi,
>
> Two comments.
>
> We need to move the allocation from the data-path to initialization of the 
> DMA objects. (e.g put txbuf into the Stream struct)
> We also need to fix up the use of sizeof txbuf.
>
> Best regards,
> Edgar
>
>
>> >      while (1) {
>> >          stream_desc_load(s, s->regs[R_CURDESC]);
>> >
>> > @@ -304,6 +305,7 @@ static void stream_process_mem2s(struct Stream *s, 
>> > StreamSlave *tx_data_dev,
>> >              break;
>> >          }
>> >      }
>> > +    g_free(txbuf);
>> >  }
>> >
>> >  static size_t stream_process_s2mem(struct Stream *s, unsigned char *buf,
>> > --
>> > 1.9.1
>> >



reply via email to

[Prev in Thread] Current Thread [Next in Thread]