>> Is anyone else having trouble with NFS root on >> the 2.4.0 kernel? It won't come up with the >> KSEG0 cache on unless I pepper the network driver >> with flush calls. > > > That's expected for most old network drivers that don't yet use the > new PCI DMA API documented in Documentation/DMA-mapping.txt. > > What driver is this? Both the stock 2.4.0 tulip and eepro100 drivers. The problem doesn't happen when I go back to 2.3.99pre8. In the tulip driver, both the rx and tx ring descriptors are adjusted with pci_alloc_consistent() and are only touched through KSEG1. But I must be totally clueless because in both kernels tulip_rx() calls pci_unmap_single() which does nothing. But the skb data pointers all point to KSEG0. With cache on, how in the world will the kernel be able to see what just got DMA'd into the skb? Another thing that has been haunting me is that in 2.3.99pre8, kmalloc() has and #ifdef __mips__ that flushes the cache and bumps the address up to KSEG1. This is gone in 2.4.0, but from what I can tell, this case didn't happen for skb allocations (i.e. dev_alloc_skb) because they only set GFP_ATOMIC, and not GFP_DMA. Quinn