6b7c46afec
cache for whole page containing modified pte, and more, only last page in the series of the consequtive pages is flushed (i.e. the affected mappings should be larger than 2MB). Avoid excessive flushing and do missed neccessary flushing, by splitting invalidation and unmapping. For now, flush exactly the range of the changed pte. This is still somewhat bigger than neccessary, since pte is 8 bytes, while cache flush line is at least 32 bytes. The originator of the issue reports that after the change, 'dmar_bus_dmamap_unload went from 13,288 cycles down to 3,257. dmar_bus_dmamap_load_buffer went from 9,686 cycles down to 3,517. and I am now able to get line 1GbE speed with Netperf TCP (even with 1K message size).' Diagnosed and tested by: Nadav Amit <nadav.amit@gmail.com> Sponsored by: The FreeBSD Foundation MFC after: 1 week |
||
---|---|---|
.. | ||
busdma_dmar.c | ||
busdma_dmar.h | ||
intel_ctx.c | ||
intel_dmar.h | ||
intel_drv.c | ||
intel_fault.c | ||
intel_gas.c | ||
intel_idpgtbl.c | ||
intel_qi.c | ||
intel_quirks.c | ||
intel_reg.h | ||
intel_utils.c |