[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 16/16] [RFC] dma/rc4030: do multiple calls to
From: |
Leon Alrae |
Subject: |
Re: [Qemu-devel] [PATCH v3 16/16] [RFC] dma/rc4030: do multiple calls to address_space_rw when doing DMA transfers |
Date: |
Wed, 10 Jun 2015 13:00:48 +0100 |
User-agent: |
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 |
Hi Hervé,
On 03/06/2015 21:45, Hervé Poussineau wrote:
> This fixes Windows NT 4.0/MIPS, which was always bugchecking with
> IRQL_NOT_LESS_OR_EQUAL.
>
> Signed-off-by: Hervé Poussineau <address@hidden>
> ---
> hw/dma/rc4030.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
> index 3efa6de..deac0a8 100644
> --- a/hw/dma/rc4030.c
> +++ b/hw/dma/rc4030.c
> @@ -681,6 +681,7 @@ static void rc4030_do_dma(void *opaque, int n, uint8_t
> *buf, int len, int is_wri
> rc4030State *s = opaque;
> hwaddr dma_addr;
> int dev_to_mem;
> + int i;
>
> s->dma_regs[n][DMA_REG_ENABLE] &= ~(DMA_FLAG_TC_INTR | DMA_FLAG_MEM_INTR
> | DMA_FLAG_ADDR_INTR);
>
> @@ -699,8 +700,17 @@ static void rc4030_do_dma(void *opaque, int n, uint8_t
> *buf, int len, int is_wri
> dma_addr = s->dma_regs[n][DMA_REG_ADDRESS];
>
> /* Read/write data at right place */
> - address_space_rw(&s->dma_as, dma_addr, MEMTXATTRS_UNSPECIFIED,
> - buf, len, is_write);
> + for (i = 0; i < len; ) {
> + int ncpy = DMA_PAGESIZE - (dma_addr & (DMA_PAGESIZE - 1));
> + if (ncpy > len - i) {
> + ncpy = len - i;
> + }
> + address_space_rw(&s->dma_as, dma_addr, MEMTXATTRS_UNSPECIFIED,
> + buf + i, ncpy, is_write);
> +
> + dma_addr += ncpy;
> + i += ncpy;
> + }
>
> s->dma_regs[n][DMA_REG_ENABLE] |= DMA_FLAG_TC_INTR;
> s->dma_regs[n][DMA_REG_COUNT] -= len;
>
I'm sending out current target-mips queue soon and I can include this series,
but I'm not quite sure what to do with this RFC patch. I presume you put RFC
here because it's a workaround for a bug, but it's not clear where the actual
bug is?
Thanks,
Leon
- [Qemu-devel] [PATCH v3 08/16] net/dp8393x: always calculate proper checksums, (continued)
- [Qemu-devel] [PATCH v3 08/16] net/dp8393x: always calculate proper checksums, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 07/16] dma/rc4030: convert to QOM, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 09/16] net/dp8393x: do not use old_mmio accesses, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 03/16] dma/rc4030: use AddressSpace and address_space_rw in users, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 13/16] net/dp8393x: add load/save support, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 15/16] net/dp8393x: fix hardware reset, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 14/16] net/dp8393x: correctly reset in_use field, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 10/16] net/dp8393x: use dp8393x_ prefix for all functions, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 11/16] net/dp8393x: QOM'ify, Hervé Poussineau, 2015/06/03
- [Qemu-devel] [PATCH v3 16/16] [RFC] dma/rc4030: do multiple calls to address_space_rw when doing DMA transfers, Hervé Poussineau, 2015/06/03
- Re: [Qemu-devel] [PATCH v3 16/16] [RFC] dma/rc4030: do multiple calls to address_space_rw when doing DMA transfers,
Leon Alrae <=
- [Qemu-devel] [PATCH v3 12/16] net/dp8393x: add PROM to store MAC address, Hervé Poussineau, 2015/06/03