> > (POLL() macro with bus_dmamap_sync() seems also wrong..)
> 
> Hum, it looks correct to me. We are after the device wrote something
> to RAM, so it's a POSTREAD operation, isn't it ?

Strictly, if DMA is still on-going even after DMA'ed memory is polled,
we also have to call PREREAD sync every time.

        for (xi = xxx; xi; xi--) {
                uint32_t temp;
                bus_dmamap_sync(..., POSTREAD|POSTWRITE);
                temp = le32toh(*sw);
                if (temp == I2O_EXEC_foo);
                        break; 
                bus_dmamap_sync(..., PREREAD);
        }

---
Izumi Tsutsui

Reply via email to