qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC 2/7] fw_cfg dma interface


From: Andrew Jones
Subject: Re: [Qemu-devel] [RFC 2/7] fw_cfg dma interface
Date: Wed, 22 Jul 2015 13:30:15 +0200
User-agent: Mutt/1.5.23.1 (2014-03-12)

On Tue, Jul 21, 2015 at 09:44:49PM +0200, Laszlo Ersek wrote:
> On 07/21/15 18:03, Marc Marí wrote:
> > +static void fw_cfg_dma_transfer(FWCfgState *s)
> > +{
> > +    dma_addr_t len;
> > +    uint8_t *ptr;
> > +    uint32_t i;
> > +
> > +    if (s->dma_ctl & FW_CFG_DMA_CTL_ERROR) {
> > +        return;
> > +    }
> > +    if (!(s->dma_ctl & FW_CFG_DMA_CTL_READ)) {
> > +        return;
> > +    }
> > +
> > +    while (s->dma_len > 0) {
> > +        len = s->dma_len;
> > +        ptr = dma_memory_map(s->dma_as, s->dma_addr, &len,
> > +                             DMA_DIRECTION_FROM_DEVICE);
> > +        if (!ptr || !len) {
> > +            s->dma_ctl |= FW_CFG_DMA_CTL_ERROR;
> > +            return;
> > +        }
> > +
> > +        for (i = 0; i < len; i++) {
> > +            ptr[i] = fw_cfg_read(s);
> > +        }
> > +
> > +        s->dma_addr += i;
> > +        s->dma_len  -= i;
> > +        dma_memory_unmap(s->dma_as, ptr, len,
> > +                         DMA_DIRECTION_FROM_DEVICE, i);
> > +    }
> > +    s->dma_ctl = 0;
> > +}
> 
> On Aarch64 KVM, is this going to show the same cache coherence problems
> as VGA memory access?
>

Does the guest (AAVMF) need to map all regions it DMAs to/from as
noncacheable? If so, then yes. If not, then I don't think it should
map fw-cfg DMA regions that way. fw-cfg is a paravirt device, so I
don't think we should have to treat it like a real one.

drew 



reply via email to

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