summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/i386/i386/pmap.c4
-rw-r--r--sys/kern/kern_mbuf.c3
-rw-r--r--sys/vm/uma.h1
-rw-r--r--sys/vm/uma_core.c4
4 files changed, 10 insertions, 2 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 567363a..623943f 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -561,7 +561,9 @@ static MALLOC_DEFINE(M_PMAPPDPT, "pmap", "pmap pdpt");
static void *
pmap_pdpt_allocf(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
{
- *flags = UMA_SLAB_PRIV;
+
+ /* Inform UMA that this allocator uses kernel_map/object. */
+ *flags = UMA_SLAB_KERNEL;
return (contigmalloc(PAGE_SIZE, M_PMAPPDPT, 0, 0x0ULL, 0xffffffffULL,
1, 0));
}
diff --git a/sys/kern/kern_mbuf.c b/sys/kern/kern_mbuf.c
index 4cdb12e..7846be8 100644
--- a/sys/kern/kern_mbuf.c
+++ b/sys/kern/kern_mbuf.c
@@ -352,7 +352,8 @@ static void *
mbuf_jumbo_alloc(uma_zone_t zone, int bytes, u_int8_t *flags, int wait)
{
- *flags = UMA_SLAB_PRIV;
+ /* Inform UMA that this allocator uses kernel_map/object. */
+ *flags = UMA_SLAB_KERNEL;
return (contigmalloc(bytes, M_JUMBOFRAME, wait, (vm_paddr_t)0,
~(vm_paddr_t)0, 1, 0));
}
diff --git a/sys/vm/uma.h b/sys/vm/uma.h
index c082e96..ffa8d62 100644
--- a/sys/vm/uma.h
+++ b/sys/vm/uma.h
@@ -488,6 +488,7 @@ void uma_zone_set_freef(uma_zone_t zone, uma_free freef);
*/
#define UMA_SLAB_BOOT 0x01 /* Slab alloced from boot pages */
#define UMA_SLAB_KMEM 0x02 /* Slab alloced from kmem_map */
+#define UMA_SLAB_KERNEL 0x04 /* Slab alloced from kernel_map */
#define UMA_SLAB_PRIV 0x08 /* Slab alloced from priv allocator */
#define UMA_SLAB_OFFP 0x10 /* Slab is managed separately */
#define UMA_SLAB_MALLOC 0x20 /* Slab is a large malloc slab */
diff --git a/sys/vm/uma_core.c b/sys/vm/uma_core.c
index c32f4d7..a74ca32 100644
--- a/sys/vm/uma_core.c
+++ b/sys/vm/uma_core.c
@@ -751,6 +751,8 @@ finished:
if (flags & UMA_SLAB_KMEM)
obj = kmem_object;
+ else if (flags & UMA_SLAB_KERNEL)
+ obj = kernel_object;
else
obj = NULL;
for (i = 0; i < keg->uk_ppera; i++)
@@ -871,6 +873,8 @@ slab_zalloc(uma_zone_t zone, int wait)
if (flags & UMA_SLAB_KMEM)
obj = kmem_object;
+ else if (flags & UMA_SLAB_KERNEL)
+ obj = kernel_object;
else
obj = NULL;
for (i = 0; i < keg->uk_ppera; i++)
OpenPOWER on IntegriCloud