Date: Fri, 01 May 2026 21:15:18 +0000 From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: df3bd7201efc - main - powerpc: add in some busdma domain setup Message-ID: <69f517e6.46f39.43f1298a@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=df3bd7201efc88b0518c9fe7997f3dbf656eccd5 commit df3bd7201efc88b0518c9fe7997f3dbf656eccd5 Author: Adrian Chadd <adrian@FreeBSD.org> AuthorDate: 2026-02-15 02:28:07 +0000 Commit: Adrian Chadd <adrian@FreeBSD.org> CommitDate: 2026-05-01 21:14:37 +0000 powerpc: add in some busdma domain setup * Implement the basic tag domain set routine * Set the domain to the parent domain if provided This is just plumbing for eventual work to re-allocate things into the currently configured domain. Differential Revision: https://reviews.freebsd.org/D55315 --- sys/powerpc/include/bus_dma_impl.h | 1 + sys/powerpc/powerpc/busdma_bounce.c | 5 +++++ sys/powerpc/powerpc/busdma_machdep.c | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/sys/powerpc/include/bus_dma_impl.h b/sys/powerpc/include/bus_dma_impl.h index e24bd6dd8806..80d775f2cf9e 100644 --- a/sys/powerpc/include/bus_dma_impl.h +++ b/sys/powerpc/include/bus_dma_impl.h @@ -42,6 +42,7 @@ struct bus_dma_tag_common { int flags; bus_dma_lock_t *lockfunc; void *lockfuncarg; + int domain; }; struct bus_dma_impl { diff --git a/sys/powerpc/powerpc/busdma_bounce.c b/sys/powerpc/powerpc/busdma_bounce.c index cdc25a5d8fb7..790903712da7 100644 --- a/sys/powerpc/powerpc/busdma_bounce.c +++ b/sys/powerpc/powerpc/busdma_bounce.c @@ -34,6 +34,7 @@ #include <sys/systm.h> #include <sys/malloc.h> #include <sys/bus.h> +#include <sys/domainset.h> #include <sys/interrupt.h> #include <sys/kernel.h> #include <sys/ktr.h> @@ -49,6 +50,7 @@ #include <vm/vm_kern.h> #include <vm/vm_page.h> #include <vm/vm_map.h> +#include <vm/vm_phys.h> #include <machine/atomic.h> #include <machine/bus.h> @@ -80,6 +82,7 @@ static MALLOC_DEFINE(M_BUSDMA, "busdma", "busdma metadata"); /* XXX TODO: bounce flags? */ #define dmat_bounce_flags(dmat) (0) #define dmat_boundary(dmat) ((dmat)->common.boundary) +#define dmat_domain(dmat) ((dmat)->common.domain) #define dmat_flags(dmat) ((dmat)->common.flags) #define dmat_highaddr(dmat) ((dmat)->common.highaddr) #define dmat_lowaddr(dmat) ((dmat)->common.lowaddr) @@ -219,6 +222,8 @@ bounce_bus_dma_tag_create(bus_dma_tag_t parent, bus_size_t alignment, newtag->iommu = parent->iommu; newtag->iommu_cookie = parent->iommu_cookie; + newtag->common.domain = vm_phys_domain_match(newtag->common.domain, 0ul, + newtag->common.lowaddr); } if (newtag->common.lowaddr < ptoa((vm_paddr_t)Maxmem) && newtag->iommu == NULL) diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c index 8e73e303cb11..aba11e64145c 100644 --- a/sys/powerpc/powerpc/busdma_machdep.c +++ b/sys/powerpc/powerpc/busdma_machdep.c @@ -49,6 +49,7 @@ #include <vm/vm_kern.h> #include <vm/vm_page.h> #include <vm/vm_map.h> +#include <vm/vm_phys.h> #include <machine/atomic.h> #include <machine/bus.h> @@ -129,6 +130,10 @@ bus_dma_tag_set_domain(bus_dma_tag_t dmat, int domain) struct bus_dma_tag_common *tc; tc = (struct bus_dma_tag_common *)dmat; - + domain = vm_phys_domain_match(domain, 0ul, tc->lowaddr); + /* Only call the callback if it changes. */ + if (domain == tc->domain) + return (0); + tc->domain = domain; return (tc->impl->tag_set_domain(dmat, domain)); }home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f517e6.46f39.43f1298a>
