Page MenuHomeFreeBSD

arm64: Teach bus_dma on arm64 about NUMA
ClosedPublic

Authored by andrew on Oct 13 2023, 10:38 AM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Sep 24, 4:55 AM
Unknown Object (File)
Sep 11 2024, 8:26 PM
Unknown Object (File)
Sep 11 2024, 8:26 PM
Unknown Object (File)
Sep 7 2024, 9:54 PM
Unknown Object (File)
Sep 7 2024, 9:54 PM
Unknown Object (File)
Sep 7 2024, 9:53 PM
Unknown Object (File)
Sep 7 2024, 9:53 PM
Unknown Object (File)
Sep 7 2024, 9:47 PM
Subscribers

Details

Summary

When allocating memory we should try to allocate from the NUMA node
closest to the device to reduce cross domain memory traffic. Teach the
arm64 bus_dma code to do this.

While here use mallocarray to guard against an unlikely integer
overflow.

Sponsored by: Arm Ltd

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

Nothing is setting the domain for tags belonging to the root bus devices. On amd64 this happens in acpi_pcib_acpi_attach() but I believe that implementation isn't used on arm64.

sys/arm64/arm64/busdma_bounce.c
411–413
522–524
589

Why did this change?

See D42186 for the pci change

sys/arm64/arm64/busdma_bounce.c
589

Because I switched to malloc_domainset_aligned so we could explicitly set the alignment.

I can sync the above comment with x86 as needed.

Remove unneeded casts and update the comment in bounce_bus_dmamem_alloc

This revision is now accepted and ready to land.Oct 13 2023, 3:36 PM
This revision was automatically updated to reflect the committed changes.