Page MenuHomeFreeBSD

D34967.diff
No OneTemporary

D34967.diff

diff --git a/sys/arm/arm/busdma_machdep.c b/sys/arm/arm/busdma_machdep.c
--- a/sys/arm/arm/busdma_machdep.c
+++ b/sys/arm/arm/busdma_machdep.c
@@ -1178,14 +1178,10 @@
void
bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
- struct bounce_page *bpage;
struct bounce_zone *bz;
if ((bz = dmat->bounce_zone) != NULL) {
- while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
- STAILQ_REMOVE_HEAD(&map->bpages, links);
- free_bounce_page(dmat, bpage);
- }
+ free_bounce_pages(dmat, map);
bz = dmat->bounce_zone;
bz->free_bpages += map->pagesreserved;
diff --git a/sys/arm64/arm64/busdma_bounce.c b/sys/arm64/arm64/busdma_bounce.c
--- a/sys/arm64/arm64/busdma_bounce.c
+++ b/sys/arm64/arm64/busdma_bounce.c
@@ -969,13 +969,7 @@
static void
bounce_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
- struct bounce_page *bpage;
-
- while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
- STAILQ_REMOVE_HEAD(&map->bpages, links);
- free_bounce_page(dmat, bpage);
- }
-
+ free_bounce_pages(dmat, map);
map->sync_count = 0;
map->flags &= ~DMAMAP_MBUF;
}
diff --git a/sys/kern/subr_busdma_bounce.c b/sys/kern/subr_busdma_bounce.c
--- a/sys/kern/subr_busdma_bounce.c
+++ b/sys/kern/subr_busdma_bounce.c
@@ -420,6 +420,17 @@
wakeup(&bounce_map_callbacklist);
}
+static void
+free_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map)
+{
+ struct bounce_page *bpage;
+
+ while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
+ STAILQ_REMOVE_HEAD(&map->bpages, links);
+ free_bounce_page(dmat, bpage);
+ }
+}
+
static void
busdma_thread(void *dummy __unused)
{
diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c
--- a/sys/powerpc/powerpc/busdma_machdep.c
+++ b/sys/powerpc/powerpc/busdma_machdep.c
@@ -801,17 +801,12 @@
void
bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
- struct bounce_page *bpage;
-
if (dmat->iommu) {
IOMMU_UNMAP(dmat->iommu, map->segments, map->nsegs, dmat->iommu_cookie);
map->nsegs = 0;
}
- while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
- STAILQ_REMOVE_HEAD(&map->bpages, links);
- free_bounce_page(dmat, bpage);
- }
+ free_bounce_pages(dmat, map);
}
void
diff --git a/sys/riscv/riscv/busdma_bounce.c b/sys/riscv/riscv/busdma_bounce.c
--- a/sys/riscv/riscv/busdma_bounce.c
+++ b/sys/riscv/riscv/busdma_bounce.c
@@ -810,13 +810,7 @@
static void
bounce_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
- struct bounce_page *bpage;
-
- while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
- STAILQ_REMOVE_HEAD(&map->bpages, links);
- free_bounce_page(dmat, bpage);
- }
-
+ free_bounce_pages(dmat, map);
map->sync_count = 0;
}
diff --git a/sys/x86/x86/busdma_bounce.c b/sys/x86/x86/busdma_bounce.c
--- a/sys/x86/x86/busdma_bounce.c
+++ b/sys/x86/x86/busdma_bounce.c
@@ -907,15 +907,10 @@
static void
bounce_bus_dmamap_unload(bus_dma_tag_t dmat, bus_dmamap_t map)
{
- struct bounce_page *bpage;
-
if (map == NULL)
return;
- while ((bpage = STAILQ_FIRST(&map->bpages)) != NULL) {
- STAILQ_REMOVE_HEAD(&map->bpages, links);
- free_bounce_page(dmat, bpage);
- }
+ free_bounce_pages(dmat, map);
}
static void

File Metadata

Mime Type
text/plain
Expires
Wed, Feb 5, 10:42 AM (20 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16472729
Default Alt Text
D34967.diff (3 KB)

Event Timeline