Messages in this thread | | | From | David Mosberger <> | Date | Tue, 24 Sep 2002 12:12:29 -0700 | Subject | Re: DAC960 in 2.5.38, with new changes |
| |
>>>>> On Tue, 24 Sep 2002 11:25:19 -0700, Dave Olien <dmo@osdl.org> said:
Dave> Ok, thanks for explaining!
Dave> On Tue, Sep 24, 2002 at 11:21:45AM -0700, David Mosberger wrote: >> >>>>> On Tue, 24 Sep 2002 10:28:43 -0700, Dave Olien <dmo@osdl.org> said: >> >> The idea is to do something along these lines: >> >> o Use PCA DMA interface for managing all DMA buffers. >> >> o If sizeof(dma_addr_t) > 4, turn on DAC mode and call >> pci_set_dma_mask(dev, MAX_ADDR), where MAX_ADDR is the maximum >> address that can be reached by the controller (i.e., >> 0xffffffffffffffff for a truly 64-bit-capable PCI controller). >> >> This way, everything should work out correctly and with good >> performance on all imaginable platforms (ia64 with and without >> hardware I/O TLB, plain x86, x86 with >4GB RAM, SPARC64 with 32-bit >> dma_addr_t, etc.).
Come to think of it, the following refinement may be preferable:
o Use PCA DMA interface for managing all DMA buffers.
o limit = min(~(dma_addr_t) 0, MAX_ADDR), where MAX_ADDR is the maximum address that can be reached by the controller (i.e., 0xffffffffffffffff for a truly 64-bit-capable PCI controller).
o Call pci_set_dma_mask(dev, limit).
o If limit > 0xffffffff, turn on DAC mode.
This "algorithm" should be correct for all PCI controllers.
--david - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |