created | 2021-03-09T20:00:27Z |
---|---|
begin | 2021-03-05T00:00:00Z |
end | 2021-03-06T00:00:00Z |
path | src/sys |
commits | 14 |
date | 2021-03-05T00:18:26Z | |||
---|---|---|---|---|
author | patrick | |||
files | src/sys/arch/arm64/dev/smmu.c | log | diff | annotate |
message |
Extend the commented code that shows which additional mappings are needed, or which regions need to be reserved. As it turns out, a region we should not map is the PCIe address space. Making a PCIe device try to do DMA to an address in PCIe address space will obviously not make its way to SMMU and host memory. We'll probably have to add an API for that. |
date | 2021-03-05T00:55:45Z | |||
---|---|---|---|---|
author | patrick | |||
files | src/sys/arch/arm64/dev/smmu.c | log | diff | annotate |
src/sys/arch/arm64/dev/smmuvar.h | log | diff | annotate | |
message |
Introduce an IOVA allocator instead of mapping pages 1:1. Mapping pages 1:1 obviously reduces the overhead of IOVA allocation, but instead you have the problem of doubly mapped pages, and making sure a page is only unmapped once the last user is gone. My initial attempt, modeled after apldart(4), calls the allocator for each segment. Unfortunately this introduces a performance penalty which reduces performance from around 700 Mbit/s to about 20 Mbit/s, or even less, in a simple single stream tcpbench scenario. Most mbufs from userland seem to have at least 3 segments. Calculating the needed IOVA space upfront reduces this penalty. IOVA allocation overhead could be reduced once and for all if it is possible to reserve IOVA during bus_dmamap_create(9), as it is only called upon creation and basically never for each DMA cycle. This needs some more thought. With this we now put the pressure on the PTED pools instead. Additionally, but not part of this diff, percpu pools for the PTEDs seem to reduce the overhead for that single stream tcpbench scenario to 0.3%. Right now this means we're hitting a different bottleneck, not related to the IOMMU. The next bottleneck will be discovered once forwarding is unlocked. Though it should be possible to benchmark the current implementation, and different designs, using a cycles counter. With IOVA allocation it's not easily possible to correlate memory passed to bus_dmamem_map(9) with memory passed to bus_dmamap_load(9). So far my code try to use the same cachability attributes as the kenrel uses for its userland mappings. For the devices we support, there seems to be no need so far. If this ever gives us any trouble in the feature, I'll have a look and fix it. While drivers should call bus_dmamap_unload(9) before bus_dmamap_destroy(9), the API explicitly states that bus_dmamap_destroy(9) should unload the map if it is still loaded. Hence we need to do exactly that. I actually have found one network driver which behaves that way, and the developer intends to change the network driver's behaviour. |
date | 2021-03-05T01:16:55Z | |||
---|---|---|---|---|
author | patrick | |||
files | src/sys/arch/arm64/dev/smmu.c | log | diff | annotate |
message | Improve readability of softc accesses. |
date | 2021-03-05T03:51:41Z | |||
---|---|---|---|---|
author | dlg | |||
files | src/sys/net/if_ethersubr.c | log | diff | annotate |
message |
work with 64bit ethernet addresses in ether_input(). this applies the tricks with addresses from veb and etherbridge code to the normal ethernet input processing. it basically loads the destination address from the packet and the interface ethernet address into uint64_ts for comparison. tested by hrvoje popovski and chris cappuccio tested here on amd64, arm64, and sparc64 ok claudio@ jmatthew@ |
date | 2021-03-05T05:30:44Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/uvm/uvm_map.c | log | diff | annotate |
message | ansi |
date | 2021-03-05T06:01:13Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/ufs/ext2fs/ext2fs.h | log | diff | annotate |
message | ansi |
date | 2021-03-05T06:44:09Z | |||
---|---|---|---|---|
author | dlg | |||
files | src/sys/net/if_bridge.c | log | diff | annotate |
src/sys/net/if_ethersubr.c | log | diff | annotate | |
src/sys/net/if_switch.c | log | diff | annotate | |
src/sys/net/if_tpmr.c | log | diff | annotate | |
src/sys/net/if_veb.c | log | diff | annotate | |
src/sys/netinet/if_ether.h | log | diff | annotate | |
message |
pass the uint64_t dst ethernet address from ether_input to bridges. tested on amd64 and sparc64. |
date | 2021-03-05T07:01:36Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/isofs/cd9660/cd9660_bmap.c | log | diff | annotate |
src/sys/isofs/cd9660/cd9660_lookup.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_node.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_rrip.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_util.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_vfsops.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_vnops.c | log | diff | annotate | |
src/sys/isofs/cd9660/iso.h | log | diff | annotate | |
message | ansi |
date | 2021-03-05T07:10:06Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/isofs/cd9660/cd9660_lookup.c | log | diff | annotate |
src/sys/isofs/cd9660/cd9660_node.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_rrip.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_vfsops.c | log | diff | annotate | |
src/sys/isofs/cd9660/cd9660_vnops.c | log | diff | annotate | |
message | deregister |
date | 2021-03-05T09:21:08Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/net/bsd-comp.c | log | diff | annotate |
src/sys/net/ppp-deflate.c | log | diff | annotate | |
message | ansi |
date | 2021-03-05T09:37:20Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/dev/mii/icsphy.c | log | diff | annotate |
src/sys/dev/mii/inphy.c | log | diff | annotate | |
src/sys/dev/mii/iophy.c | log | diff | annotate | |
src/sys/dev/mii/lxtphy.c | log | diff | annotate | |
message | ansi |
date | 2021-03-05T12:40:13Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/dev/pci/adv_pci.c | log | diff | annotate |
src/sys/dev/pci/adw_pci.c | log | diff | annotate | |
src/sys/dev/pci/ahc_pci.c | log | diff | annotate | |
src/sys/dev/pci/cac_pci.c | log | diff | annotate | |
src/sys/dev/pci/cs4281.c | log | diff | annotate | |
src/sys/dev/pci/cy_pci.c | log | diff | annotate | |
src/sys/dev/pci/i82365_pci.c | log | diff | annotate | |
src/sys/dev/pci/if_ep_pci.c | log | diff | annotate | |
src/sys/dev/pci/if_hme_pci.c | log | diff | annotate | |
src/sys/dev/pci/if_wb.c | log | diff | annotate | |
src/sys/dev/pci/iha_pci.c | log | diff | annotate | |
src/sys/dev/pci/pccbb.c | log | diff | annotate | |
src/sys/dev/pci/twe_pci.c | log | diff | annotate | |
message | ansi |
date | 2021-03-05T12:40:14Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/dev/pci/bktr/bktr_os.c | log | diff | annotate |
src/sys/dev/pci/drm/i915/gt/agp_intel_gtt.c | log | diff | annotate | |
message | ansi |
date | 2021-03-05T13:20:19Z | |||
---|---|---|---|---|
author | jsg | |||
files | src/sys/dev/puc/com_puc.c | log | diff | annotate |
src/sys/dev/puc/lpt_puc.c | log | diff | annotate | |
message | ansi |