svn commit: r363834 - in head: . share/man/man9 sys/dev/hwpmc sys/dev/ioat sys/dev/iommu sys/dev/nvme sys/kern sys/net sys/sys sys/vm sys/x86/x86

Mark Johnston markj at FreeBSD.org
Tue Aug 4 13:58:40 UTC 2020


Author: markj
Date: Tue Aug  4 13:58:36 2020
New Revision: 363834
URL: https://svnweb.freebsd.org/changeset/base/363834

Log:
  Remove free_domain() and uma_zfree_domain().
  
  These functions were introduced before UMA started ensuring that freed
  memory gets placed in domain-local caches.  They no longer serve any
  purpose since UMA now provides their functionality by default.  Remove
  them to simplyify the kernel memory allocator interfaces a bit.
  
  Reviewed by:	cem, kib
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D25937

Modified:
  head/ObsoleteFiles.inc
  head/share/man/man9/Makefile
  head/share/man/man9/malloc.9
  head/share/man/man9/zone.9
  head/sys/dev/hwpmc/hwpmc_mod.c
  head/sys/dev/ioat/ioat.c
  head/sys/dev/iommu/busdma_iommu.c
  head/sys/dev/nvme/nvme_qpair.c
  head/sys/kern/kern_malloc.c
  head/sys/kern/subr_bus.c
  head/sys/net/if.c
  head/sys/sys/malloc.h
  head/sys/vm/uma.h
  head/sys/vm/uma_core.c
  head/sys/x86/x86/busdma_bounce.c

Modified: head/ObsoleteFiles.inc
==============================================================================
--- head/ObsoleteFiles.inc	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/ObsoleteFiles.inc	Tue Aug  4 13:58:36 2020	(r363834)
@@ -36,6 +36,10 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20200803: remove free_domain(9) and uma_zfree_domain(9)
+OLD_FILES+=usr/share/man/man9/free_domain.9.gz
+OLD_FILES+=usr/share/man/man9/uma_zfree_domain.9.gz
+
 # 20200729: remove long expired serial drivers
 OLD_FILES+=usr/share/man/man4/cy.4.gz
 OLD_FILES+=usr/share/man/man4/rc.4.gz

Modified: head/share/man/man9/Makefile
==============================================================================
--- head/share/man/man9/Makefile	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/share/man/man9/Makefile	Tue Aug  4 13:58:36 2020	(r363834)
@@ -1378,7 +1378,6 @@ MLINKS+=make_dev.9 destroy_dev.9 \
 	make_dev.9 make_dev_s.9
 MLINKS+=malloc.9 free.9 \
 	malloc.9 malloc_domainset.9 \
-	malloc.9 free_domain.9 \
 	malloc.9 mallocarray.9 \
 	malloc.9 MALLOC_DECLARE.9 \
 	malloc.9 MALLOC_DEFINE.9 \
@@ -2343,7 +2342,6 @@ MLINKS+=zone.9 uma.9 \
 	zone.9 uma_zdestroy.9 \
 	zone.9 uma_zfree.9 \
 	zone.9 uma_zfree_arg.9 \
-	zone.9 uma_zfree_domain.9 \
 	zone.9 uma_zfree_pcpu.9 \
 	zone.9 uma_zfree_pcpu_arg.9 \
 	zone.9 uma_zone_get_cur.9 \

Modified: head/share/man/man9/malloc.9
==============================================================================
--- head/share/man/man9/malloc.9	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/share/man/man9/malloc.9	Tue Aug  4 13:58:36 2020	(r363834)
@@ -29,7 +29,7 @@
 .\" $NetBSD: malloc.9,v 1.3 1996/11/11 00:05:11 lukem Exp $
 .\" $FreeBSD$
 .\"
-.Dd October 30, 2018
+.Dd August 3, 2020
 .Dt MALLOC 9
 .Os
 .Sh NAME
@@ -64,8 +64,6 @@
 .In sys/domainset.h
 .Ft void *
 .Fn malloc_domainset "size_t size" "struct malloc_type *type" "struct domainset *ds" "int flags"
-.Ft void
-.Fn free_domain "void *addr" "struct malloc_type *type"
 .Sh DESCRIPTION
 The
 .Fn malloc
@@ -81,8 +79,6 @@ domain using the specified domain selection policy.
 See
 .Xr domainset 9
 for some example policies.
-Memory allocated with this function should be returned with
-.Fn free_domain .
 .Pp
 The
 .Fn mallocarray

Modified: head/share/man/man9/zone.9
==============================================================================
--- head/share/man/man9/zone.9	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/share/man/man9/zone.9	Tue Aug  4 13:58:36 2020	(r363834)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 4, 2020
+.Dd August 3, 2020
 .Dt UMA 9
 .Os
 .Sh NAME
@@ -86,8 +86,6 @@ typedef void (*uma_free)(void *item, vm_size_t size, u
 .Ft void
 .Fn uma_zfree_arg "uma_zone_t zone" "void *item" "void *arg"
 .Ft void
-.Fn uma_zfree_domain "uma_zone_t zone" "void *item" "void *arg"
-.Ft void
 .Fn uma_zfree_pcpu "uma_zone_t zone" "void *item"
 .Ft void
 .Fn uma_zfree_pcpu_arg "uma_zone_t zone" "void *item" "void *arg"
@@ -394,11 +392,6 @@ function allows callers to specify a fixed
 domain to allocate from.
 This uses a guaranteed but slow path in the allocator which reduces
 concurrency.
-The
-.Fn uma_zfree_domain
-function should be used to return memory allocated in this fashion.
-This function infers the domain from the pointer and does not require it as an
-argument.
 .Pp
 The
 .Fn uma_zone_prealloc

Modified: head/sys/dev/hwpmc/hwpmc_mod.c
==============================================================================
--- head/sys/dev/hwpmc/hwpmc_mod.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/dev/hwpmc/hwpmc_mod.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -5893,13 +5893,13 @@ pmc_cleanup(void)
 		KASSERT(pmc_pcpu[cpu]->pc_sb[PMC_UR] != NULL,
 		    ("[pmc,%d] Null userret cpu sample buffer cpu=%d", __LINE__,
 			cpu));
-		free_domain(pmc_pcpu[cpu]->pc_sb[PMC_HR]->ps_callchains, M_PMC);
-		free_domain(pmc_pcpu[cpu]->pc_sb[PMC_HR], M_PMC);
-		free_domain(pmc_pcpu[cpu]->pc_sb[PMC_SR]->ps_callchains, M_PMC);
-		free_domain(pmc_pcpu[cpu]->pc_sb[PMC_SR], M_PMC);
-		free_domain(pmc_pcpu[cpu]->pc_sb[PMC_UR]->ps_callchains, M_PMC);
-		free_domain(pmc_pcpu[cpu]->pc_sb[PMC_UR], M_PMC);
-		free_domain(pmc_pcpu[cpu], M_PMC);
+		free(pmc_pcpu[cpu]->pc_sb[PMC_HR]->ps_callchains, M_PMC);
+		free(pmc_pcpu[cpu]->pc_sb[PMC_HR], M_PMC);
+		free(pmc_pcpu[cpu]->pc_sb[PMC_SR]->ps_callchains, M_PMC);
+		free(pmc_pcpu[cpu]->pc_sb[PMC_SR], M_PMC);
+		free(pmc_pcpu[cpu]->pc_sb[PMC_UR]->ps_callchains, M_PMC);
+		free(pmc_pcpu[cpu]->pc_sb[PMC_UR], M_PMC);
+		free(pmc_pcpu[cpu], M_PMC);
 	}
 
 	free(pmc_pcpu, M_PMC);

Modified: head/sys/dev/ioat/ioat.c
==============================================================================
--- head/sys/dev/ioat/ioat.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/dev/ioat/ioat.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -1578,7 +1578,7 @@ ioat_free_ring(struct ioat_softc *ioat, uint32_t size,
     struct ioat_descriptor *ring)
 {
 
-	free_domain(ring, M_IOAT);
+	free(ring, M_IOAT);
 }
 
 static struct ioat_descriptor *

Modified: head/sys/dev/iommu/busdma_iommu.c
==============================================================================
--- head/sys/dev/iommu/busdma_iommu.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/dev/iommu/busdma_iommu.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -410,7 +410,7 @@ iommu_bus_dma_tag_destroy(bus_dma_tag_t dmat1)
 			    1) {
 				if (dmat == dmat->ctx->tag)
 					iommu_free_ctx(dmat->ctx);
-				free_domain(dmat->segments, M_IOMMU_DMAMAP);
+				free(dmat->segments, M_IOMMU_DMAMAP);
 				free(dmat, M_DEVBUF);
 				dmat = parent;
 			} else
@@ -447,7 +447,7 @@ iommu_bus_dmamap_create(bus_dma_tag_t dmat, int flags,
 		    tag->common.nsegments, M_IOMMU_DMAMAP,
 		    DOMAINSET_PREF(tag->common.domain), M_NOWAIT);
 		if (tag->segments == NULL) {
-			free_domain(map, M_IOMMU_DMAMAP);
+			free(map, M_IOMMU_DMAMAP);
 			*mapp = NULL;
 			return (ENOMEM);
 		}
@@ -479,7 +479,7 @@ iommu_bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmama
 			return (EBUSY);
 		}
 		IOMMU_DOMAIN_UNLOCK(domain);
-		free_domain(map, M_IOMMU_DMAMAP);
+		free(map, M_IOMMU_DMAMAP);
 	}
 	tag->map_count--;
 	return (0);
@@ -537,7 +537,7 @@ iommu_bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr,
 	map = (struct bus_dmamap_iommu *)map1;
 
 	if ((map->flags & BUS_DMAMAP_IOMMU_MALLOC) != 0) {
-		free_domain(vaddr, M_DEVBUF);
+		free(vaddr, M_DEVBUF);
 		map->flags &= ~BUS_DMAMAP_IOMMU_MALLOC;
 	} else {
 		KASSERT((map->flags & BUS_DMAMAP_IOMMU_KMEM_ALLOC) != 0,

Modified: head/sys/dev/nvme/nvme_qpair.c
==============================================================================
--- head/sys/dev/nvme/nvme_qpair.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/dev/nvme/nvme_qpair.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -819,7 +819,7 @@ nvme_qpair_destroy(struct nvme_qpair *qpair)
 	}
 
 	if (qpair->act_tr) {
-		free_domain(qpair->act_tr, M_NVME);
+		free(qpair->act_tr, M_NVME);
 		qpair->act_tr = NULL;
 	}
 
@@ -828,7 +828,7 @@ nvme_qpair_destroy(struct nvme_qpair *qpair)
 		TAILQ_REMOVE(&qpair->free_tr, tr, tailq);
 		bus_dmamap_destroy(qpair->dma_tag_payload,
 		    tr->payload_dma_map);
-		free_domain(tr, M_NVME);
+		free(tr, M_NVME);
 	}
 
 	if (qpair->cmd != NULL) {

Modified: head/sys/kern/kern_malloc.c
==============================================================================
--- head/sys/kern/kern_malloc.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/kern/kern_malloc.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -862,40 +862,6 @@ zfree(void *addr, struct malloc_type *mtp)
 	malloc_type_freed(mtp, size);
 }
 
-void
-free_domain(void *addr, struct malloc_type *mtp)
-{
-	uma_zone_t zone;
-	uma_slab_t slab;
-	u_long size;
-
-#ifdef MALLOC_DEBUG
-	if (free_dbg(&addr, mtp) != 0)
-		return;
-#endif
-
-	/* free(NULL, ...) does nothing */
-	if (addr == NULL)
-		return;
-
-	vtozoneslab((vm_offset_t)addr & (~UMA_SLAB_MASK), &zone, &slab);
-	if (slab == NULL)
-		panic("free_domain: address %p(%p) has not been allocated.\n",
-		    addr, (void *)((u_long)addr & (~UMA_SLAB_MASK)));
-
-	if (__predict_true(!malloc_large_slab(slab))) {
-		size = zone->uz_size;
-#ifdef INVARIANTS
-		free_save_type(addr, mtp, size);
-#endif
-		uma_zfree_domain(zone, addr, slab);
-	} else {
-		size = malloc_large_size(slab);
-		free_large(addr, size);
-	}
-	malloc_type_freed(mtp, size);
-}
-
 /*
  *	realloc: change the size of a memory block
  */

Modified: head/sys/kern/subr_bus.c
==============================================================================
--- head/sys/kern/subr_bus.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/kern/subr_bus.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -2542,7 +2542,7 @@ void
 device_set_softc(device_t dev, void *softc)
 {
 	if (dev->softc && !(dev->flags & DF_EXTERNALSOFTC))
-		free_domain(dev->softc, M_BUS_SC);
+		free(dev->softc, M_BUS_SC);
 	dev->softc = softc;
 	if (dev->softc)
 		dev->flags |= DF_EXTERNALSOFTC;
@@ -2559,7 +2559,7 @@ device_set_softc(device_t dev, void *softc)
 void
 device_free_softc(void *softc)
 {
-	free_domain(softc, M_BUS_SC);
+	free(softc, M_BUS_SC);
 }
 
 /**
@@ -2826,7 +2826,7 @@ device_set_driver(device_t dev, driver_t *driver)
 		return (0);
 
 	if (dev->softc && !(dev->flags & DF_EXTERNALSOFTC)) {
-		free_domain(dev->softc, M_BUS_SC);
+		free(dev->softc, M_BUS_SC);
 		dev->softc = NULL;
 	}
 	device_set_desc(dev, NULL);

Modified: head/sys/net/if.c
==============================================================================
--- head/sys/net/if.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/net/if.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -629,10 +629,7 @@ if_free_internal(struct ifnet *ifp)
 
 	free(ifp->if_description, M_IFDESCR);
 	free(ifp->if_hw_addr, M_IFADDR);
-	if (ifp->if_numa_domain == IF_NODOM)
-		free(ifp, M_IFNET);
-	else
-		free_domain(ifp, M_IFNET);
+	free(ifp, M_IFNET);
 }
 
 static void

Modified: head/sys/sys/malloc.h
==============================================================================
--- head/sys/sys/malloc.h	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/sys/malloc.h	Tue Aug  4 13:58:36 2020	(r363834)
@@ -180,7 +180,6 @@ void	*contigmalloc_domainset(unsigned long size, struc
 	    __malloc_like __result_use_check __alloc_size(1) __alloc_align(7);
 void	free(void *addr, struct malloc_type *type);
 void	zfree(void *addr, struct malloc_type *type);
-void	free_domain(void *addr, struct malloc_type *type);
 void	*malloc(size_t size, struct malloc_type *type, int flags) __malloc_like
 	    __result_use_check __alloc_size(1);
 /*

Modified: head/sys/vm/uma.h
==============================================================================
--- head/sys/vm/uma.h	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/vm/uma.h	Tue Aug  4 13:58:36 2020	(r363834)
@@ -387,16 +387,6 @@ void uma_zfree_pcpu_arg(uma_zone_t zone, void *item, v
 void uma_zfree_smr(uma_zone_t zone, void *item);
 
 /*
- * Frees an item back to the specified zone's domain specific pool.
- *
- * Arguments:
- *	zone  The zone the item was originally allocated out of.
- *	item  The memory to be freed.
- *	arg   Argument passed to the destructor
- */
-void uma_zfree_domain(uma_zone_t zone, void *item, void *arg);
-
-/*
  * Frees an item back to a zone without supplying an argument
  *
  * This is just a wrapper for uma_zfree_arg for convenience.

Modified: head/sys/vm/uma_core.c
==============================================================================
--- head/sys/vm/uma_core.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/vm/uma_core.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -4338,24 +4338,6 @@ cache_free(uma_zone_t zone, uma_cache_t cache, void *u
 	return (true);
 }
 
-void
-uma_zfree_domain(uma_zone_t zone, void *item, void *udata)
-{
-
-	/* Enable entropy collection for RANDOM_ENABLE_UMA kernel option */
-	random_harvest_fast_uma(&zone, sizeof(zone), RANDOM_UMA);
-
-	CTR2(KTR_UMA, "uma_zfree_domain zone %s(%p)", zone->uz_name, zone);
-
-	KASSERT(curthread->td_critnest == 0 || SCHEDULER_STOPPED(),
-	    ("uma_zfree_domain: called with spinlock or critical section held"));
-
-        /* uma_zfree(..., NULL) does nothing, to match free(9). */
-        if (item == NULL)
-                return;
-	zone_free_item(zone, item, udata, SKIP_NONE);
-}
-
 static void
 slab_free_item(uma_zone_t zone, uma_slab_t slab, void *item)
 {

Modified: head/sys/x86/x86/busdma_bounce.c
==============================================================================
--- head/sys/x86/x86/busdma_bounce.c	Tue Aug  4 12:44:47 2020	(r363833)
+++ head/sys/x86/x86/busdma_bounce.c	Tue Aug  4 13:58:36 2020	(r363834)
@@ -271,7 +271,7 @@ bounce_bus_dma_tag_destroy(bus_dma_tag_t dmat)
 			atomic_subtract_int(&dmat->common.ref_count, 1);
 			if (dmat->common.ref_count == 0) {
 				if (dmat->segments != NULL)
-					free_domain(dmat->segments, M_DEVBUF);
+					free(dmat->segments, M_DEVBUF);
 				free(dmat, M_DEVBUF);
 				/*
 				 * Last reference count, so
@@ -387,7 +387,7 @@ bounce_bus_dmamap_destroy(bus_dma_tag_t dmat, bus_dmam
 		}
 		if (dmat->bounce_zone)
 			dmat->bounce_zone->map_count--;
-		free_domain(map, M_DEVBUF);
+		free(map, M_DEVBUF);
 	}
 	dmat->map_count--;
 	CTR2(KTR_BUSDMA, "%s: tag %p error 0", __func__, dmat);
@@ -504,7 +504,7 @@ bounce_bus_dmamem_free(bus_dma_tag_t dmat, void *vaddr
 	if (map != NULL)
 		panic("bus_dmamem_free: Invalid map freed\n");
 	if ((dmat->bounce_flags & BUS_DMA_KMEM_ALLOC) == 0)
-		free_domain(vaddr, M_DEVBUF);
+		free(vaddr, M_DEVBUF);
 	else
 		kmem_free((vm_offset_t)vaddr, dmat->common.maxsize);
 	CTR3(KTR_BUSDMA, "%s: tag %p flags 0x%x", __func__, dmat,
@@ -1188,7 +1188,7 @@ alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages)
 		    M_DEVBUF, DOMAINSET_PREF(dmat->common.domain), M_NOWAIT,
 		    0ul, bz->lowaddr, PAGE_SIZE, 0);
 		if (bpage->vaddr == 0) {
-			free_domain(bpage, M_DEVBUF);
+			free(bpage, M_DEVBUF);
 			break;
 		}
 		bpage->busaddr = pmap_kextract(bpage->vaddr);


More information about the svn-src-head mailing list