Module Name:    src
Committed By:   thorpej
Date:           Mon Dec  4 00:32:10 UTC 2023

Modified Files:
        src/sys/arch/alpha/alpha: api_up1000.c dec_1000a.c dec_2000_300.c
            dec_2100_a50.c dec_2100_a500.c dec_550.c dec_6600.c
            dec_alphabook1.c dec_axppci_33.c dec_eb164.c dec_eb64plus.c
            dec_eb66.c dec_kn20aa.c
        src/sys/arch/alpha/jensenio: jensenio.c jensenio_bus_intio.c
            jensenio_bus_io.c jensenio_bus_mem.c jenseniovar.h
        src/sys/arch/alpha/pci: apecs.c apecs_bus_io.c apecs_bus_mem.c
            apecsvar.h cia.c cia_bwx_bus_io.c cia_bwx_bus_mem.c
            cia_swiz_bus_io.c cia_swiz_bus_mem.c ciavar.h dwlpx_bus_io.c
            dwlpx_bus_mem.c dwlpxvar.h irongate.c irongate_bus_io.c
            irongate_bus_mem.c irongatevar.h lca.c lca_bus_io.c lca_bus_mem.c
            lcavar.h mcpcia.c mcpcia_bus_io.c mcpcia_bus_mem.c mcpciavar.h
            pci_bwx_bus_io_chipdep.c pci_bwx_bus_mem_chipdep.c
            pci_swiz_bus_io_chipdep.c pci_swiz_bus_mem_chipdep.c tsc.c
            tsp_bus_io.c tsp_bus_mem.c tsvar.h ttwoga.c ttwoga_bus_io.c
            ttwoga_bus_mem.c ttwogavar.h

Log Message:
Convert the Alpha port's bus_space back-end to manage address space
with vmem(9) arenas (using statically-allocated private boundary tags
for very early-in-boot) rather than extent(9).

As a side-effect, there's arguments to some initialization functions
that are no longer required, so garbage-collect those, update all the
call sites.


To generate a diff of this commit:
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/alpha/alpha/api_up1000.c
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/alpha/alpha/dec_1000a.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/alpha/alpha/dec_2000_300.c
cvs rdiff -u -r1.68 -r1.69 src/sys/arch/alpha/alpha/dec_2100_a50.c \
    src/sys/arch/alpha/alpha/dec_axppci_33.c
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/alpha/alpha/dec_2100_a500.c
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/alpha/alpha/dec_550.c
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/alpha/alpha/dec_6600.c
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/alpha/alpha/dec_alphabook1.c
cvs rdiff -u -r1.62 -r1.63 src/sys/arch/alpha/alpha/dec_eb164.c
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/alpha/alpha/dec_eb64plus.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/alpha/alpha/dec_eb66.c
cvs rdiff -u -r1.66 -r1.67 src/sys/arch/alpha/alpha/dec_kn20aa.c
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/alpha/jensenio/jensenio.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/alpha/jensenio/jensenio_bus_intio.c \
    src/sys/arch/alpha/jensenio/jenseniovar.h
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/alpha/jensenio/jensenio_bus_io.c \
    src/sys/arch/alpha/jensenio/jensenio_bus_mem.c
cvs rdiff -u -r1.59 -r1.60 src/sys/arch/alpha/pci/apecs.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/alpha/pci/apecs_bus_io.c \
    src/sys/arch/alpha/pci/apecs_bus_mem.c \
    src/sys/arch/alpha/pci/irongate_bus_mem.c \
    src/sys/arch/alpha/pci/lca_bus_io.c src/sys/arch/alpha/pci/lca_bus_mem.c \
    src/sys/arch/alpha/pci/lcavar.h
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/alpha/pci/apecsvar.h \
    src/sys/arch/alpha/pci/dwlpxvar.h
cvs rdiff -u -r1.80 -r1.81 src/sys/arch/alpha/pci/cia.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/alpha/pci/cia_bwx_bus_io.c \
    src/sys/arch/alpha/pci/cia_bwx_bus_mem.c \
    src/sys/arch/alpha/pci/mcpcia_bus_io.c \
    src/sys/arch/alpha/pci/mcpcia_bus_mem.c \
    src/sys/arch/alpha/pci/mcpciavar.h
cvs rdiff -u -r1.18 -r1.19 src/sys/arch/alpha/pci/cia_swiz_bus_io.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/alpha/pci/cia_swiz_bus_mem.c
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/alpha/pci/ciavar.h \
    src/sys/arch/alpha/pci/pci_bwx_bus_io_chipdep.c
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/alpha/pci/dwlpx_bus_io.c \
    src/sys/arch/alpha/pci/dwlpx_bus_mem.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/alpha/pci/irongate.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/alpha/pci/irongate_bus_io.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/alpha/pci/irongatevar.h \
    src/sys/arch/alpha/pci/ttwogavar.h
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/alpha/pci/lca.c
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/alpha/pci/mcpcia.c
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/alpha/pci/pci_bwx_bus_mem_chipdep.c
cvs rdiff -u -r1.43 -r1.44 src/sys/arch/alpha/pci/pci_swiz_bus_io_chipdep.c
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/alpha/pci/pci_swiz_bus_mem_chipdep.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/alpha/pci/tsc.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/alpha/pci/tsp_bus_io.c
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/alpha/pci/tsp_bus_mem.c
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/alpha/pci/tsvar.h
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/alpha/pci/ttwoga.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/alpha/pci/ttwoga_bus_io.c \
    src/sys/arch/alpha/pci/ttwoga_bus_mem.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/alpha/alpha/api_up1000.c
diff -u src/sys/arch/alpha/alpha/api_up1000.c:1.31 src/sys/arch/alpha/alpha/api_up1000.c:1.32
--- src/sys/arch/alpha/alpha/api_up1000.c:1.31	Wed Oct 14 00:59:50 2020
+++ src/sys/arch/alpha/alpha/api_up1000.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: api_up1000.c,v 1.31 2020/10/14 00:59:50 thorpej Exp $ */
+/* $NetBSD: api_up1000.c,v 1.32 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: api_up1000.c,v 1.31 2020/10/14 00:59:50 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: api_up1000.c,v 1.32 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -114,7 +114,7 @@ api_up1000_cons_init(void)
 	extern struct irongate_config irongate_configuration;
 
 	icp = &irongate_configuration;
-	irongate_init(icp, 0);
+	irongate_init(icp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/alpha/dec_1000a.c
diff -u src/sys/arch/alpha/alpha/dec_1000a.c:1.33 src/sys/arch/alpha/alpha/dec_1000a.c:1.34
--- src/sys/arch/alpha/alpha/dec_1000a.c:1.33	Sat Oct 13 17:58:54 2012
+++ src/sys/arch/alpha/alpha/dec_1000a.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_1000a.c,v 1.33 2012/10/13 17:58:54 jdc Exp $ */
+/* $NetBSD: dec_1000a.c,v 1.34 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -65,7 +65,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_1000a.c,v 1.33 2012/10/13 17:58:54 jdc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_1000a.c,v 1.34 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -172,13 +172,13 @@ dec_1000a_cons_init(void)
 
 	if(strcmp(platform.iobus, "cia") == 0) {
 		ccp = &cia_configuration;
-		cia_init(ccp, 0);
+		cia_init(ccp);
 		iot = &ccp->cc_iot;
 		memt = &ccp->cc_memt;
 		pcichipset = &ccp->cc_pc;
 	} else {
 		acp = &apecs_configuration;
-		apecs_init(acp, 0);
+		apecs_init(acp);
 		iot = &acp->ac_iot;
 		memt = &acp->ac_memt;
 		pcichipset = &acp->ac_pc;

Index: src/sys/arch/alpha/alpha/dec_2000_300.c
diff -u src/sys/arch/alpha/alpha/dec_2000_300.c:1.20 src/sys/arch/alpha/alpha/dec_2000_300.c:1.21
--- src/sys/arch/alpha/alpha/dec_2000_300.c:1.20	Wed Oct 14 00:59:50 2020
+++ src/sys/arch/alpha/alpha/dec_2000_300.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_2000_300.c,v 1.20 2020/10/14 00:59:50 thorpej Exp $ */
+/* $NetBSD: dec_2000_300.c,v 1.21 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_2000_300.c,v 1.20 2020/10/14 00:59:50 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_2000_300.c,v 1.21 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -127,7 +127,7 @@ dec_2000_300_cons_init(void)
 	extern struct jensenio_config jensenio_configuration;
 
 	jcp = &jensenio_configuration;
-	jensenio_init(jcp, 0);
+	jensenio_init(jcp);
 
 	ctb = (struct ctb_tt *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/alpha/dec_2100_a50.c
diff -u src/sys/arch/alpha/alpha/dec_2100_a50.c:1.68 src/sys/arch/alpha/alpha/dec_2100_a50.c:1.69
--- src/sys/arch/alpha/alpha/dec_2100_a50.c:1.68	Fri Sep  4 03:41:49 2020
+++ src/sys/arch/alpha/alpha/dec_2100_a50.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_2100_a50.c,v 1.68 2020/09/04 03:41:49 thorpej Exp $ */
+/* $NetBSD: dec_2100_a50.c,v 1.69 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_2100_a50.c,v 1.68 2020/09/04 03:41:49 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_2100_a50.c,v 1.69 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -139,7 +139,7 @@ dec_2100_a50_cons_init(void)
 	extern struct apecs_config apecs_configuration;
 
 	acp = &apecs_configuration;
-	apecs_init(acp, 0);
+	apecs_init(acp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 
Index: src/sys/arch/alpha/alpha/dec_axppci_33.c
diff -u src/sys/arch/alpha/alpha/dec_axppci_33.c:1.68 src/sys/arch/alpha/alpha/dec_axppci_33.c:1.69
--- src/sys/arch/alpha/alpha/dec_axppci_33.c:1.68	Fri Jul 16 18:50:19 2021
+++ src/sys/arch/alpha/alpha/dec_axppci_33.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_axppci_33.c,v 1.68 2021/07/16 18:50:19 thorpej Exp $ */
+/* $NetBSD: dec_axppci_33.c,v 1.69 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_axppci_33.c,v 1.68 2021/07/16 18:50:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_axppci_33.c,v 1.69 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -97,7 +97,7 @@ lca_preinit(void)
 {
 	extern struct lca_config lca_configuration;
 
-	lca_init(&lca_configuration, 0);
+	lca_init(&lca_configuration);
 	return &lca_configuration;
 }
 

Index: src/sys/arch/alpha/alpha/dec_2100_a500.c
diff -u src/sys/arch/alpha/alpha/dec_2100_a500.c:1.24 src/sys/arch/alpha/alpha/dec_2100_a500.c:1.25
--- src/sys/arch/alpha/alpha/dec_2100_a500.c:1.24	Fri Sep  4 03:41:49 2020
+++ src/sys/arch/alpha/alpha/dec_2100_a500.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_2100_a500.c,v 1.24 2020/09/04 03:41:49 thorpej Exp $ */
+/* $NetBSD: dec_2100_a500.c,v 1.25 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -60,7 +60,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_2100_a500.c,v 1.24 2020/09/04 03:41:49 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_2100_a500.c,v 1.25 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -160,7 +160,7 @@ dec_2100_a500_cons_init(void)
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 	ctbslot = ctb->ctb_turboslot;
 
-	tcp = ttwoga_init(0, 0);
+	tcp = ttwoga_init(0);
 
 	switch (ctb->ctb_term_type) {
 	case CTB_PRINTERPORT:
@@ -203,7 +203,7 @@ dec_2100_a500_cons_init(void)
 
 		case CTB_TURBOSLOT_TYPE_PCI:
 			/* The display PCI might be different */
-			tcp = ttwoga_init(0, CTB_TURBOSLOT_HOSE(ctbslot));
+			tcp = ttwoga_init(CTB_TURBOSLOT_HOSE(ctbslot));
 			pci_display_console(&tcp->tc_iot, &tcp->tc_memt,
 			    &tcp->tc_pc, CTB_TURBOSLOT_BUS(ctbslot),
 			    CTB_TURBOSLOT_SLOT(ctbslot), 0);

Index: src/sys/arch/alpha/alpha/dec_550.c
diff -u src/sys/arch/alpha/alpha/dec_550.c:1.36 src/sys/arch/alpha/alpha/dec_550.c:1.37
--- src/sys/arch/alpha/alpha/dec_550.c:1.36	Sat Oct 13 17:58:54 2012
+++ src/sys/arch/alpha/alpha/dec_550.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_550.c,v 1.36 2012/10/13 17:58:54 jdc Exp $ */
+/* $NetBSD: dec_550.c,v 1.37 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_550.c,v 1.36 2012/10/13 17:58:54 jdc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_550.c,v 1.37 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -124,7 +124,7 @@ dec_550_cons_init(void)
 	extern struct cia_config cia_configuration;
 
 	ccp = &cia_configuration;
-	cia_init(ccp, 0);
+	cia_init(ccp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/alpha/dec_6600.c
diff -u src/sys/arch/alpha/alpha/dec_6600.c:1.35 src/sys/arch/alpha/alpha/dec_6600.c:1.36
--- src/sys/arch/alpha/alpha/dec_6600.c:1.35	Fri Sep  4 03:41:49 2020
+++ src/sys/arch/alpha/alpha/dec_6600.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_6600.c,v 1.35 2020/09/04 03:41:49 thorpej Exp $ */
+/* $NetBSD: dec_6600.c,v 1.36 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_6600.c,v 1.35 2020/09/04 03:41:49 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_6600.c,v 1.36 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -135,7 +135,7 @@ dec_6600_cons_init(void)
 	/* Console hose defaults to hose 0. */
 	tsp_console_hose = 0;
 
-	tsp = tsp_init(0, tsp_console_hose);
+	tsp = tsp_init(tsp_console_hose);
 
 	switch (ctb->ctb_term_type) {
 	case CTB_PRINTERPORT:
@@ -171,7 +171,7 @@ dec_6600_cons_init(void)
 		else {
 			/* The display PCI might be different */
 			tsp_console_hose = CTB_TURBOSLOT_HOSE(ctbslot);
-			tsp = tsp_init(0, tsp_console_hose);
+			tsp = tsp_init(tsp_console_hose);
 			pci_display_console(&tsp->pc_iot, &tsp->pc_memt,
 			    &tsp->pc_pc, CTB_TURBOSLOT_BUS(ctbslot),
 			    CTB_TURBOSLOT_SLOT(ctbslot), 0);

Index: src/sys/arch/alpha/alpha/dec_alphabook1.c
diff -u src/sys/arch/alpha/alpha/dec_alphabook1.c:1.28 src/sys/arch/alpha/alpha/dec_alphabook1.c:1.29
--- src/sys/arch/alpha/alpha/dec_alphabook1.c:1.28	Fri Jul 16 18:50:19 2021
+++ src/sys/arch/alpha/alpha/dec_alphabook1.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_alphabook1.c,v 1.28 2021/07/16 18:50:19 thorpej Exp $ */
+/* $NetBSD: dec_alphabook1.c,v 1.29 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_alphabook1.c,v 1.28 2021/07/16 18:50:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_alphabook1.c,v 1.29 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -119,7 +119,7 @@ dec_alphabook1_cons_init(void)
 	extern struct lca_config lca_configuration;
 
 	lcp = &lca_configuration;
-	lca_init(lcp, 0);
+	lca_init(lcp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/alpha/dec_eb164.c
diff -u src/sys/arch/alpha/alpha/dec_eb164.c:1.62 src/sys/arch/alpha/alpha/dec_eb164.c:1.63
--- src/sys/arch/alpha/alpha/dec_eb164.c:1.62	Sat Oct 13 17:58:54 2012
+++ src/sys/arch/alpha/alpha/dec_eb164.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_eb164.c,v 1.62 2012/10/13 17:58:54 jdc Exp $ */
+/* $NetBSD: dec_eb164.c,v 1.63 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_eb164.c,v 1.62 2012/10/13 17:58:54 jdc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_eb164.c,v 1.63 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -119,7 +119,7 @@ dec_eb164_cons_init(void)
 	extern struct cia_config cia_configuration;
 
 	ccp = &cia_configuration;
-	cia_init(ccp, 0);
+	cia_init(ccp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/alpha/dec_eb64plus.c
diff -u src/sys/arch/alpha/alpha/dec_eb64plus.c:1.41 src/sys/arch/alpha/alpha/dec_eb64plus.c:1.42
--- src/sys/arch/alpha/alpha/dec_eb64plus.c:1.41	Sat Oct 13 17:58:54 2012
+++ src/sys/arch/alpha/alpha/dec_eb64plus.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_eb64plus.c,v 1.41 2012/10/13 17:58:54 jdc Exp $ */
+/* $NetBSD: dec_eb64plus.c,v 1.42 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_eb64plus.c,v 1.41 2012/10/13 17:58:54 jdc Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_eb64plus.c,v 1.42 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -127,7 +127,7 @@ dec_eb64plus_cons_init(void)
 	extern struct apecs_config apecs_configuration;
 
 	acp = &apecs_configuration;
-	apecs_init(acp, 0);
+	apecs_init(acp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/alpha/dec_eb66.c
diff -u src/sys/arch/alpha/alpha/dec_eb66.c:1.29 src/sys/arch/alpha/alpha/dec_eb66.c:1.30
--- src/sys/arch/alpha/alpha/dec_eb66.c:1.29	Fri Jul 16 18:50:19 2021
+++ src/sys/arch/alpha/alpha/dec_eb66.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_eb66.c,v 1.29 2021/07/16 18:50:19 thorpej Exp $ */
+/* $NetBSD: dec_eb66.c,v 1.30 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_eb66.c,v 1.29 2021/07/16 18:50:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_eb66.c,v 1.30 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -119,7 +119,7 @@ dec_eb66_cons_init(void)
 	extern struct lca_config lca_configuration;
 
 	lcp = &lca_configuration;
-	lca_init(lcp, 0);
+	lca_init(lcp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/alpha/dec_kn20aa.c
diff -u src/sys/arch/alpha/alpha/dec_kn20aa.c:1.66 src/sys/arch/alpha/alpha/dec_kn20aa.c:1.67
--- src/sys/arch/alpha/alpha/dec_kn20aa.c:1.66	Fri Sep  4 03:41:49 2020
+++ src/sys/arch/alpha/alpha/dec_kn20aa.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dec_kn20aa.c,v 1.66 2020/09/04 03:41:49 thorpej Exp $ */
+/* $NetBSD: dec_kn20aa.c,v 1.67 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997 Carnegie-Mellon University.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: dec_kn20aa.c,v 1.66 2020/09/04 03:41:49 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dec_kn20aa.c,v 1.67 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -128,7 +128,7 @@ dec_kn20aa_cons_init(void)
 	extern struct cia_config cia_configuration;
 
 	ccp = &cia_configuration;
-	cia_init(ccp, 0);
+	cia_init(ccp);
 
 	ctb = (struct ctb *)(((char *)hwrpb) + hwrpb->rpb_ctb_off);
 

Index: src/sys/arch/alpha/jensenio/jensenio.c
diff -u src/sys/arch/alpha/jensenio/jensenio.c:1.22 src/sys/arch/alpha/jensenio/jensenio.c:1.23
--- src/sys/arch/alpha/jensenio/jensenio.c:1.22	Sat Aug  7 16:18:40 2021
+++ src/sys/arch/alpha/jensenio/jensenio.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: jensenio.c,v 1.22 2021/08/07 16:18:40 thorpej Exp $ */
+/* $NetBSD: jensenio.c,v 1.23 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
@@ -43,7 +43,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: jensenio.c,v 1.22 2021/08/07 16:18:40 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: jensenio.c,v 1.23 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -103,7 +103,7 @@ static void	jensenio_isa_detach_hook(isa
  * Set up the Jensen's function pointers.
  */
 void
-jensenio_init(struct jensenio_config *jcp, int mallocsafe)
+jensenio_init(struct jensenio_config *jcp)
 {
 
 	/*
@@ -126,7 +126,6 @@ jensenio_init(struct jensenio_config *jc
 		jensenio_bus_intio_init(&jcp->jc_internal_iot, jcp);
 		jensenio_bus_mem_init(&jcp->jc_eisa_memt, jcp);
 	}
-	jcp->jc_mallocsafe = mallocsafe;
 }
 
 static int
@@ -160,7 +159,7 @@ jensenio_attach(device_t parent, device_
 	 * Done once at console init time, but we might need to do
 	 * additional work this time.
 	 */
-	jensenio_init(jcp, 1);
+	jensenio_init(jcp);
 
 	/*
 	 * Initialize DMA.

Index: src/sys/arch/alpha/jensenio/jensenio_bus_intio.c
diff -u src/sys/arch/alpha/jensenio/jensenio_bus_intio.c:1.6 src/sys/arch/alpha/jensenio/jensenio_bus_intio.c:1.7
--- src/sys/arch/alpha/jensenio/jensenio_bus_intio.c:1.6	Sun Jul  4 22:42:35 2021
+++ src/sys/arch/alpha/jensenio/jensenio_bus_intio.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: jensenio_bus_intio.c,v 1.6 2021/07/04 22:42:35 thorpej Exp $ */
+/* $NetBSD: jensenio_bus_intio.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,12 +31,12 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: jensenio_bus_intio.c,v 1.6 2021/07/04 22:42:35 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: jensenio_bus_intio.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/device.h>
-#include <sys/extent.h>
+#include <sys/vmem.h>
 
 #include <sys/bus.h>
 
@@ -153,12 +153,12 @@ jensenio_intio_map(void *v, bus_addr_t i
 		printf("intio: allocating 0x%lx to 0x%lx\n", ioaddr,
 		    ioaddr + iosize - 1);
 #endif
-		error = extent_alloc_region(jcp->jc_io_ex, ioaddr, iosize,
-		    EX_NOWAIT | (jcp->jc_mallocsafe ? EX_MALLOCOK : 0));
+		error = vmem_xalloc_addr(jcp->jc_io_arena, ioaddr, iosize,
+		    VM_NOSLEEP);
 		if (error) {
 #ifdef EXTENT_DEBUG
 			printf("intio: allocation failed (%d)\n", error);
-			extent_print(jcp->jc_io_ex);
+			/* vmem_print(jcp->jc_io_arena);	XXX */
 #endif
 			return (error);
 		}
@@ -174,7 +174,6 @@ jensenio_intio_unmap(void *v, bus_space_
 {
 	struct jensenio_config *jcp = v;
 	bus_addr_t ioaddr;
-	int error;
 
 	if (acct == 0)
 		return;
@@ -190,15 +189,7 @@ jensenio_intio_unmap(void *v, bus_space_
 #ifdef EXTENT_DEBUG
 	printf("intio: freeing 0x%lx to 0x%lx\n", ioaddr, ioaddr + iosize - 1);
 #endif
-	error = extent_free(jcp->jc_io_ex, ioaddr, iosize,
-	    EX_NOWAIT | (jcp->jc_mallocsafe ? EX_MALLOCOK : 0));
-	if (error) {
-		printf("WARNING: could not unmap 0x%lx-0x%lx (error %d)\n",
-		    ioaddr, ioaddr + iosize - 1, error);
-#ifdef EXTENT_DEBUG
-		extent_print(jcp->jc_io_ex);
-#endif
-	}
+	vmem_xfree(jcp->jc_io_arena, ioaddr, iosize);
 }
 
 int
Index: src/sys/arch/alpha/jensenio/jenseniovar.h
diff -u src/sys/arch/alpha/jensenio/jenseniovar.h:1.6 src/sys/arch/alpha/jensenio/jenseniovar.h:1.7
--- src/sys/arch/alpha/jensenio/jenseniovar.h:1.6	Wed Oct 14 00:59:50 2020
+++ src/sys/arch/alpha/jensenio/jenseniovar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: jenseniovar.h,v 1.6 2020/10/14 00:59:50 thorpej Exp $ */
+/* $NetBSD: jenseniovar.h,v 1.7 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -33,6 +33,7 @@
 #define _ALPHA_JENSENIO_JENSENIOVAR_H_
 
 #include <sys/evcnt.h>
+#include <sys/vmem.h>
 
 /*
  * Arguments used to attach devices to the Jensen I/O bus.
@@ -71,9 +72,8 @@ struct jensenio_config {
 
 	struct alpha_bus_dma_tag jc_dmat_eisa, jc_dmat_isa;
 
-	struct extent *jc_io_ex, *jc_s_mem_ex;
-
-	int	jc_mallocsafe;
+	vmem_t *jc_io_arena;
+	vmem_t *jc_s_mem_arena;
 };
 
 /*
@@ -89,7 +89,7 @@ struct jensenio_scb_intrhand {
 };
 
 void	jensenio_page_physload(unsigned long, unsigned long);
-void	jensenio_init(struct jensenio_config *, int);
+void	jensenio_init(struct jensenio_config *);
 void	jensenio_bus_io_init(bus_space_tag_t, void *);
 void	jensenio_bus_intio_init(bus_space_tag_t, void *);
 void	jensenio_bus_mem_init(bus_space_tag_t, void *);

Index: src/sys/arch/alpha/jensenio/jensenio_bus_io.c
diff -u src/sys/arch/alpha/jensenio/jensenio_bus_io.c:1.4 src/sys/arch/alpha/jensenio/jensenio_bus_io.c:1.5
--- src/sys/arch/alpha/jensenio/jensenio_bus_io.c:1.4	Sun Jul  4 22:42:35 2021
+++ src/sys/arch/alpha/jensenio/jensenio_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: jensenio_bus_io.c,v 1.4 2021/07/04 22:42:35 thorpej Exp $ */
+/* $NetBSD: jensenio_bus_io.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: jensenio_bus_io.c,v 1.4 2021/07/04 22:42:35 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: jensenio_bus_io.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -51,8 +51,7 @@ __KERNEL_RCSID(1, "$NetBSD: jensenio_bus
 
 #define	CHIP_V(v)		((struct jensenio_config *)(v))
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(CHIP_V(v)->jc_mallocsafe)
-#define	CHIP_IO_EXTENT(v)	(CHIP_V(v)->jc_io_ex)
+#define	CHIP_IO_ARENA(v)	(CHIP_V(v)->jc_io_arena)
 
 #define	CHIP_ADDR_SHIFT		7
 #define	CHIP_SIZE_SHIFT		5
Index: src/sys/arch/alpha/jensenio/jensenio_bus_mem.c
diff -u src/sys/arch/alpha/jensenio/jensenio_bus_mem.c:1.4 src/sys/arch/alpha/jensenio/jensenio_bus_mem.c:1.5
--- src/sys/arch/alpha/jensenio/jensenio_bus_mem.c:1.4	Sun Jul  4 22:42:35 2021
+++ src/sys/arch/alpha/jensenio/jensenio_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: jensenio_bus_mem.c,v 1.4 2021/07/04 22:42:35 thorpej Exp $ */
+/* $NetBSD: jensenio_bus_mem.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: jensenio_bus_mem.c,v 1.4 2021/07/04 22:42:35 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: jensenio_bus_mem.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -51,8 +51,7 @@ __KERNEL_RCSID(1, "$NetBSD: jensenio_bus
 
 #define	CHIP_V(v)		((struct jensenio_config *)(v))
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(CHIP_V(v)->jc_mallocsafe)
-#define	CHIP_S_MEM_EXTENT(v)	(CHIP_V(v)->jc_s_mem_ex)
+#define	CHIP_S_MEM_ARENA(v)	(CHIP_V(v)->jc_s_mem_arena)
 
 #define	CHIP_ADDR_SHIFT		7
 #define	CHIP_SIZE_SHIFT		5

Index: src/sys/arch/alpha/pci/apecs.c
diff -u src/sys/arch/alpha/pci/apecs.c:1.59 src/sys/arch/alpha/pci/apecs.c:1.60
--- src/sys/arch/alpha/pci/apecs.c:1.59	Sat Aug  7 16:18:41 2021
+++ src/sys/arch/alpha/pci/apecs.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: apecs.c,v 1.59 2021/08/07 16:18:41 thorpej Exp $ */
+/* $NetBSD: apecs.c,v 1.60 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: apecs.c,v 1.59 2021/08/07 16:18:41 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: apecs.c,v 1.60 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -110,7 +110,7 @@ apecsmatch(device_t parent, cfdata_t mat
  * Set up the chipset's function pointers.
  */
 void
-apecs_init(struct apecs_config *acp, int mallocsafe)
+apecs_init(struct apecs_config *acp)
 {
 	acp->ac_comanche_pass2 =
 	    (REGVAL(COMANCHE_ED) & COMANCHE_ED_PASS2) != 0;
@@ -134,7 +134,6 @@ apecs_init(struct apecs_config *acp, int
 		alpha_bus_window_count[ALPHA_BUS_TYPE_PCI_MEM] = 3;
 		alpha_bus_get_window = apecs_bus_get_window;
 	}
-	acp->ac_mallocsafe = mallocsafe;
 
 	apecs_pci_init(&acp->ac_pc, acp);
 	alpha_pci_chipset = &acp->ac_pc;
@@ -156,7 +155,7 @@ apecsattach(device_t parent, device_t se
 	 * (maybe), but doesn't hurt to do twice.
 	 */
 	acp = &apecs_configuration;
-	apecs_init(acp, 1);
+	apecs_init(acp);
 
 	apecs_dma_init(acp);
 

Index: src/sys/arch/alpha/pci/apecs_bus_io.c
diff -u src/sys/arch/alpha/pci/apecs_bus_io.c:1.12 src/sys/arch/alpha/pci/apecs_bus_io.c:1.13
--- src/sys/arch/alpha/pci/apecs_bus_io.c:1.12	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/apecs_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: apecs_bus_io.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: apecs_bus_io.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: apecs_bus_io.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: apecs_bus_io.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,8 +43,7 @@ __KERNEL_RCSID(1, "$NetBSD: apecs_bus_io
 
 #define	CHIP		apecs
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct apecs_config *)(v))->ac_mallocsafe)
-#define	CHIP_IO_EXTENT(v)	(((struct apecs_config *)(v))->ac_io_ex)
+#define	CHIP_IO_ARENA(v)	(((struct apecs_config *)(v))->ac_io_arena)
 
 /* IO region 1 */
 #define	CHIP_IO_W1_BUS_START(v)	0x00000000UL
Index: src/sys/arch/alpha/pci/apecs_bus_mem.c
diff -u src/sys/arch/alpha/pci/apecs_bus_mem.c:1.12 src/sys/arch/alpha/pci/apecs_bus_mem.c:1.13
--- src/sys/arch/alpha/pci/apecs_bus_mem.c:1.12	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/apecs_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: apecs_bus_mem.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: apecs_bus_mem.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: apecs_bus_mem.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: apecs_bus_mem.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,9 +43,8 @@ __KERNEL_RCSID(1, "$NetBSD: apecs_bus_me
 
 #define	CHIP	apecs
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct apecs_config *)(v))->ac_mallocsafe)
-#define	CHIP_D_MEM_EXTENT(v)	(((struct apecs_config *)(v))->ac_d_mem_ex)
-#define	CHIP_S_MEM_EXTENT(v)	(((struct apecs_config *)(v))->ac_s_mem_ex)
+#define	CHIP_D_MEM_ARENA(v)	(((struct apecs_config *)(v))->ac_d_mem_arena)
+#define	CHIP_S_MEM_ARENA(v)	(((struct apecs_config *)(v))->ac_s_mem_arena)
 
 /* Dense region 1 */
 #define	CHIP_D_MEM_W1_BUS_START(v)	0x00000000UL
Index: src/sys/arch/alpha/pci/irongate_bus_mem.c
diff -u src/sys/arch/alpha/pci/irongate_bus_mem.c:1.12 src/sys/arch/alpha/pci/irongate_bus_mem.c:1.13
--- src/sys/arch/alpha/pci/irongate_bus_mem.c:1.12	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/irongate_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: irongate_bus_mem.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: irongate_bus_mem.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: irongate_bus_mem.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: irongate_bus_mem.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -45,8 +45,7 @@ __KERNEL_RCSID(1, "$NetBSD: irongate_bus
 
 #define	CHIP		irongate
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct irongate_config *)(v))->ic_mallocsafe)
-#define	CHIP_MEM_EXTENT(v)	(((struct irongate_config *)(v))->ic_mem_ex)
+#define	CHIP_MEM_ARENA(v)	(((struct irongate_config *)(v))->ic_mem_arena)
 
 #define	CHIP_MEM_SYS_START(v)	IRONGATE_MEM_BASE
 
@@ -73,7 +72,7 @@ irongate_bus_mem_init2(bus_space_tag_t t
 
 	/*
 	 * Since the AMD 751 doesn't have DMA windows, we need to
-	 * allocate RAM out of the extent map.
+	 * reserve the space used by RAM in the PCI memory arena.
 	 */
 	for (i = 0; i < mem_cluster_cnt; i++) {
 		start = mem_clusters[i].start;
@@ -94,10 +93,8 @@ irongate_bus_mem_init2(bus_space_tag_t t
 			 * taste.
 			 */
 			if (start < IOM_BEGIN) {
-				error = extent_alloc_region(CHIP_MEM_EXTENT(v),
-				    start, (IOM_BEGIN - start),
-				    EX_NOWAIT |
-				    (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+				error = vmem_xalloc_addr(CHIP_MEM_ARENA(v),
+				    start, (IOM_BEGIN - start), VM_NOSLEEP);
 				if (error) {
 					printf("WARNING: unable to reserve "
 					    "chunk from mem cluster %d "
@@ -106,10 +103,8 @@ irongate_bus_mem_init2(bus_space_tag_t t
 				}
 			}
 			if (end > IOM_END) {
-				error = extent_alloc_region(CHIP_MEM_EXTENT(v),
-				    IOM_END, (end - IOM_END),
-				    EX_NOWAIT |
-				    (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+				error = vmem_xalloc_addr(CHIP_MEM_ARENA(v),
+				    IOM_END, (end - IOM_END), VM_NOSLEEP);
 				if (error) {
 					printf("WARNING: unable to reserve "
 					    "chunk from mem cluster %d "
@@ -118,10 +113,8 @@ irongate_bus_mem_init2(bus_space_tag_t t
 				}
 			}
 		} else {
-			error = extent_alloc_region(CHIP_MEM_EXTENT(v),
-			    start, size,
-			    EX_NOWAIT |
-			    (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+			error = vmem_xalloc_addr(CHIP_MEM_ARENA(v),
+			    start, size, VM_NOSLEEP);
 			if (error) {
 				printf("WARNING: unable reserve mem cluster %d "
 				    "(0x%lx - 0x%lx)\n", i, start,
Index: src/sys/arch/alpha/pci/lca_bus_io.c
diff -u src/sys/arch/alpha/pci/lca_bus_io.c:1.12 src/sys/arch/alpha/pci/lca_bus_io.c:1.13
--- src/sys/arch/alpha/pci/lca_bus_io.c:1.12	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/lca_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lca_bus_io.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: lca_bus_io.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: lca_bus_io.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: lca_bus_io.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,8 +43,7 @@ __KERNEL_RCSID(1, "$NetBSD: lca_bus_io.c
 
 #define	CHIP		lca
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct lca_config *)(v))->lc_mallocsafe)
-#define	CHIP_IO_EXTENT(v)	(((struct lca_config *)(v))->lc_io_ex)
+#define	CHIP_IO_ARENA(v)	(((struct lca_config *)(v))->lc_io_arena)
 
 /* IO region 1 */
 #define	CHIP_IO_W1_BUS_START(v)	0x00000000UL
Index: src/sys/arch/alpha/pci/lca_bus_mem.c
diff -u src/sys/arch/alpha/pci/lca_bus_mem.c:1.12 src/sys/arch/alpha/pci/lca_bus_mem.c:1.13
--- src/sys/arch/alpha/pci/lca_bus_mem.c:1.12	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/lca_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lca_bus_mem.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: lca_bus_mem.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: lca_bus_mem.c,v 1.12 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: lca_bus_mem.c,v 1.13 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,9 +43,8 @@ __KERNEL_RCSID(1, "$NetBSD: lca_bus_mem.
 
 #define	CHIP	lca
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct lca_config *)(v))->lc_mallocsafe)
-#define	CHIP_D_MEM_EXTENT(v)	(((struct lca_config *)(v))->lc_d_mem_ex)
-#define	CHIP_S_MEM_EXTENT(v)	(((struct lca_config *)(v))->lc_s_mem_ex)
+#define	CHIP_D_MEM_ARENA(v)	(((struct lca_config *)(v))->lc_d_mem_arena)
+#define	CHIP_S_MEM_ARENA(v)	(((struct lca_config *)(v))->lc_s_mem_arena)
 
 /* Dense region 1 */
 #define	CHIP_D_MEM_W1_BUS_START(v)	0x00000000UL
Index: src/sys/arch/alpha/pci/lcavar.h
diff -u src/sys/arch/alpha/pci/lcavar.h:1.12 src/sys/arch/alpha/pci/lcavar.h:1.13
--- src/sys/arch/alpha/pci/lcavar.h:1.12	Fri Jul 16 18:50:19 2021
+++ src/sys/arch/alpha/pci/lcavar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lcavar.h,v 1.12 2021/07/16 18:50:19 thorpej Exp $ */
+/* $NetBSD: lcavar.h,v 1.13 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
@@ -27,6 +27,8 @@
  * rights to redistribute these changes.
  */
 
+#include <sys/vmem.h>
+
 #include <dev/isa/isavar.h>
 #include <dev/pci/pcivar.h>
 #include <alpha/pci/pci_sgmap_pte64.h>
@@ -50,8 +52,10 @@ struct lca_config {
 
 	bus_addr_t lc_s_mem_w2_masked_base;
 
-	struct extent *lc_io_ex, *lc_d_mem_ex, *lc_s_mem_ex;
-	int	lc_mallocsafe;
+	vmem_t *lc_io_arena;
+	vmem_t *lc_d_mem_arena;
+	vmem_t *lc_s_mem_arena;
+
 	u_int	lc_bcache_size;
 };
 
@@ -62,7 +66,7 @@ struct lca_softc {
 };
 
 void	lca_probe_bcache(void);
-void	lca_init(struct lca_config *, int);
+void	lca_init(struct lca_config *);
 void	lca_pci_init(pci_chipset_tag_t, void *);
 void	lca_dma_init(struct lca_config *);
 

Index: src/sys/arch/alpha/pci/apecsvar.h
diff -u src/sys/arch/alpha/pci/apecsvar.h:1.11 src/sys/arch/alpha/pci/apecsvar.h:1.12
--- src/sys/arch/alpha/pci/apecsvar.h:1.11	Mon Feb  6 02:14:14 2012
+++ src/sys/arch/alpha/pci/apecsvar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: apecsvar.h,v 1.11 2012/02/06 02:14:14 matt Exp $ */
+/* $NetBSD: apecsvar.h,v 1.12 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
@@ -27,6 +27,8 @@
  * rights to redistribute these changes.
  */
 
+#include <sys/vmem.h>
+
 #include <dev/isa/isavar.h>
 #include <dev/pci/pcivar.h>
 #include <alpha/pci/pci_sgmap_pte64.h>
@@ -54,11 +56,12 @@ struct apecs_config {
 
 	uint32_t ac_haxr1, ac_haxr2;
 
-	struct extent *ac_io_ex, *ac_d_mem_ex, *ac_s_mem_ex;
-	int	ac_mallocsafe;
+	vmem_t *ac_io_arena;
+	vmem_t *ac_d_mem_arena;
+	vmem_t *ac_s_mem_arena;
 };
 
-void	apecs_init(struct apecs_config *, int);
+void	apecs_init(struct apecs_config *);
 void	apecs_pci_init(pci_chipset_tag_t, void *);
 void	apecs_dma_init(struct apecs_config *);
 
Index: src/sys/arch/alpha/pci/dwlpxvar.h
diff -u src/sys/arch/alpha/pci/dwlpxvar.h:1.11 src/sys/arch/alpha/pci/dwlpxvar.h:1.12
--- src/sys/arch/alpha/pci/dwlpxvar.h:1.11	Mon Feb  6 02:14:14 2012
+++ src/sys/arch/alpha/pci/dwlpxvar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dwlpxvar.h,v 1.11 2012/02/06 02:14:14 matt Exp $ */
+/* $NetBSD: dwlpxvar.h,v 1.12 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1997 by Matthew Jacob
@@ -30,12 +30,16 @@
  * SUCH DAMAGE.
  */
 
-#include <dev/pci/pcivar.h>
 #include <sys/extent.h>
+#include <sys/vmem_impl.h>
+
+#include <dev/pci/pcivar.h>
 
 #include <alpha/pci/pci_sgmap_pte32.h>
 
-#define	_FSTORE	(EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long))
+#define	DWLPX_IO_NBTS		VMEM_EST_BTCOUNT(2, 8)
+#define	DWLPX_D_MEM_NBTS	VMEM_EST_BTCOUNT(1, 8)
+#define	DWLPX_S_MEM_NBTS	VMEM_EST_BTCOUNT(2, 8)
 
 /*
  * DWLPX configuration.
@@ -44,14 +48,17 @@ struct dwlpx_config {
 	int				cc_initted;
 	struct alpha_bus_space		cc_iot;
 	struct alpha_bus_space		cc_memt;
-	struct extent *			cc_io_ex;
-	struct extent *			cc_d_mem_ex;
-	struct extent *			cc_s_mem_ex;
+	vmem_t *			cc_io_arena;
+	vmem_t *			cc_d_mem_arena;
+	vmem_t *			cc_s_mem_arena;
 	struct alpha_pci_chipset	cc_pc;
 	struct dwlpx_softc *		cc_sc;	/* back pointer */
-	long				cc_io_exstorage[_FSTORE];
-	long				cc_dmem_exstorage[_FSTORE];
-	long				cc_smem_exstorage[_FSTORE];
+	struct vmem			cc_io_arena_store;
+	struct vmem			cc_d_mem_arena_store;
+	struct vmem			cc_s_mem_arena_store;
+	struct vmem_btag		cc_io_btag_store[DWLPX_IO_NBTS];
+	struct vmem_btag		cc_d_mem_btag_store[DWLPX_D_MEM_NBTS];
+	struct vmem_btag		cc_s_mem_btag_store[DWLPX_S_MEM_NBTS];
 	unsigned long			cc_sysbase;	/* shorthand */
 	struct alpha_bus_dma_tag	cc_dmat_direct;
 	struct alpha_bus_dma_tag	cc_dmat_sgmap;

Index: src/sys/arch/alpha/pci/cia.c
diff -u src/sys/arch/alpha/pci/cia.c:1.80 src/sys/arch/alpha/pci/cia.c:1.81
--- src/sys/arch/alpha/pci/cia.c:1.80	Sun May 22 11:27:33 2022
+++ src/sys/arch/alpha/pci/cia.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cia.c,v 1.80 2022/05/22 11:27:33 andvar Exp $ */
+/* $NetBSD: cia.c,v 1.81 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: cia.c,v 1.80 2022/05/22 11:27:33 andvar Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cia.c,v 1.81 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -146,7 +146,7 @@ ciamatch(device_t parent, cfdata_t match
  * Set up the chipset's function pointers.
  */
 void
-cia_init(struct cia_config *ccp, int mallocsafe)
+cia_init(struct cia_config *ccp)
 {
 	int pci_use_bwx = cia_pci_use_bwx;
 	int bus_use_bwx = cia_bus_use_bwx;
@@ -232,7 +232,6 @@ cia_init(struct cia_config *ccp, int mal
 		}
 		alpha_bus_get_window = cia_bus_get_window;
 	}
-	ccp->cc_mallocsafe = mallocsafe;
 
 	cia_pci_init(&ccp->cc_pc, ccp);
 	alpha_pci_chipset = &ccp->cc_pc;
@@ -259,7 +258,7 @@ ciaattach(device_t parent, device_t self
 	 * that need to use memory allocation.
 	 */
 	ccp = sc->sc_ccp = &cia_configuration;
-	cia_init(ccp, 1);
+	cia_init(ccp);
 
 	if (ccp->cc_flags & CCF_ISPYXIS) {
 		name = "Pyxis";

Index: src/sys/arch/alpha/pci/cia_bwx_bus_io.c
diff -u src/sys/arch/alpha/pci/cia_bwx_bus_io.c:1.6 src/sys/arch/alpha/pci/cia_bwx_bus_io.c:1.7
--- src/sys/arch/alpha/pci/cia_bwx_bus_io.c:1.6	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/cia_bwx_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cia_bwx_bus_io.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: cia_bwx_bus_io.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: cia_bwx_bus_io.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: cia_bwx_bus_io.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,8 +43,7 @@ __KERNEL_RCSID(1, "$NetBSD: cia_bwx_bus_
 
 #define	CHIP		cia_bwx
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct cia_config *)(v))->cc_mallocsafe)
-#define	CHIP_IO_EXTENT(v)	(((struct cia_config *)(v))->cc_io_ex)
+#define	CHIP_IO_ARENA(v)	(((struct cia_config *)(v))->cc_io_arena)
 
 #define	CHIP_IO_SYS_START(v)	CIA_EV56_BWIO
 
Index: src/sys/arch/alpha/pci/cia_bwx_bus_mem.c
diff -u src/sys/arch/alpha/pci/cia_bwx_bus_mem.c:1.6 src/sys/arch/alpha/pci/cia_bwx_bus_mem.c:1.7
--- src/sys/arch/alpha/pci/cia_bwx_bus_mem.c:1.6	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/cia_bwx_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cia_bwx_bus_mem.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: cia_bwx_bus_mem.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: cia_bwx_bus_mem.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: cia_bwx_bus_mem.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,8 +43,7 @@ __KERNEL_RCSID(1, "$NetBSD: cia_bwx_bus_
 
 #define	CHIP		cia_bwx
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct cia_config *)(v))->cc_mallocsafe)
-#define	CHIP_MEM_EXTENT(v)	(((struct cia_config *)(v))->cc_d_mem_ex)
+#define	CHIP_MEM_ARENA(v)	(((struct cia_config *)(v))->cc_d_mem_arena)
 
 #define	CHIP_MEM_SYS_START(v)	CIA_EV56_BWMEM
 
Index: src/sys/arch/alpha/pci/mcpcia_bus_io.c
diff -u src/sys/arch/alpha/pci/mcpcia_bus_io.c:1.6 src/sys/arch/alpha/pci/mcpcia_bus_io.c:1.7
--- src/sys/arch/alpha/pci/mcpcia_bus_io.c:1.6	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/mcpcia_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: mcpcia_bus_io.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: mcpcia_bus_io.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1998 by Matthew Jacob
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: mcpcia_bus_io.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: mcpcia_bus_io.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -46,11 +46,12 @@ __KERNEL_RCSID(1, "$NetBSD: mcpcia_bus_i
 
 #define	CHIP		mcpcia
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct mcpcia_config *)(v))->cc_mallocsafe)
-#define	CHIP_IO_EXTENT(v)	(((struct mcpcia_config *)(v))->cc_io_ex)
-#define	CHIP_IO_EX_STORE(v)	(((struct mcpcia_config *)(v))->cc_io_exstorage)
-#define	CHIP_IO_EX_STORE_SIZE(v)					\
-	(sizeof (((struct mcpcia_config *)(v))->cc_io_exstorage))
+#define	CHIP_IO_ARENA(v)	(((struct mcpcia_config *)(v))->cc_io_arena)
+#define	CHIP_IO_ARENA_STORE(v)	\
+	(&(((struct mcpcia_config *)(v))->cc_io_arena_store))
+#define	CHIP_IO_BTAG_STORE(v)	\
+	(((struct mcpcia_config *)(v))->cc_io_btag_store)
+#define	CHIP_IO_BTAG_COUNT(v)	MCPCIA_IO_NBTS
 
 /* IO Region 1 */
 #define	CHIP_IO_W1_BUS_START(v)	0x00000000UL
Index: src/sys/arch/alpha/pci/mcpcia_bus_mem.c
diff -u src/sys/arch/alpha/pci/mcpcia_bus_mem.c:1.6 src/sys/arch/alpha/pci/mcpcia_bus_mem.c:1.7
--- src/sys/arch/alpha/pci/mcpcia_bus_mem.c:1.6	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/mcpcia_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: mcpcia_bus_mem.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: mcpcia_bus_mem.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1998 by Matthew Jacob
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: mcpcia_bus_mem.c,v 1.6 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: mcpcia_bus_mem.c,v 1.7 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -46,17 +46,21 @@ __KERNEL_RCSID(1, "$NetBSD: mcpcia_bus_m
 
 #define	CHIP		mcpcia
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct mcpcia_config *)(v))->cc_mallocsafe)
-#define	CHIP_D_MEM_EXTENT(v)	(((struct mcpcia_config *)(v))->cc_d_mem_ex)
-#define	CHIP_D_MEM_EX_STORE(v)						\
-	(((struct mcpcia_config *)(v))->cc_dmem_exstorage)
-#define	CHIP_D_MEM_EX_STORE_SIZE(v)					\
-	(sizeof (((struct mcpcia_config *)(v))->cc_dmem_exstorage))
-#define	CHIP_S_MEM_EXTENT(v)	(((struct mcpcia_config *)(v))->cc_s_mem_ex)
-#define	CHIP_S_MEM_EX_STORE(v)						\
-	(((struct mcpcia_config *)(v))->cc_smem_exstorage)
-#define	CHIP_S_MEM_EX_STORE_SIZE(v)					\
-	(sizeof (((struct mcpcia_config *)(v))->cc_smem_exstorage))
+#define	CHIP_D_MEM_ARENA(v)		\
+	(((struct mcpcia_config *)(v))->cc_d_mem_arena)
+#define	CHIP_D_MEM_ARENA_STORE(v)	\
+	(&(((struct mcpcia_config *)(v))->cc_d_mem_arena_store))
+#define	CHIP_D_MEM_BTAG_STORE(v)	\
+	(((struct mcpcia_config *)(v))->cc_d_mem_btag_store)
+#define	CHIP_D_MEM_BTAG_COUNT(v)	MCPCIA_D_MEM_NBTS
+
+#define	CHIP_S_MEM_ARENA(v)		\
+	(((struct mcpcia_config *)(v))->cc_s_mem_arena)
+#define	CHIP_S_MEM_ARENA_STORE(v)	\
+	(&(((struct mcpcia_config *)(v))->cc_s_mem_arena_store))
+#define	CHIP_S_MEM_BTAG_STORE(v)	\
+	(((struct mcpcia_config *)(v))->cc_s_mem_btag_store)
+#define	CHIP_S_MEM_BTAG_COUNT(v)	MCPCIA_S_MEM_NBTS
 
 /* Dense region 1 */
 #define	CHIP_D_MEM_W1_BUS_START(v)	0x00000000UL
Index: src/sys/arch/alpha/pci/mcpciavar.h
diff -u src/sys/arch/alpha/pci/mcpciavar.h:1.6 src/sys/arch/alpha/pci/mcpciavar.h:1.7
--- src/sys/arch/alpha/pci/mcpciavar.h:1.6	Tue Jun 14 15:34:22 2011
+++ src/sys/arch/alpha/pci/mcpciavar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: mcpciavar.h,v 1.6 2011/06/14 15:34:22 matt Exp $ */
+/* $NetBSD: mcpciavar.h,v 1.7 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1998 by Matthew Jacob
@@ -30,12 +30,16 @@
  * SUCH DAMAGE.
  */
 
-#include <dev/pci/pcivar.h>
 #include <sys/extent.h>
+#include <sys/vmem_impl.h>
+
+#include <dev/pci/pcivar.h>
 
 #include <alpha/pci/pci_sgmap_pte64.h>
 
-#define	_FSTORE	(EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long))
+#define	MCPCIA_IO_NBTS		VMEM_EST_BTCOUNT(2, 8)
+#define	MCPCIA_D_MEM_NBTS	VMEM_EST_BTCOUNT(1, 8)
+#define	MCPCIA_S_MEM_NBTS	VMEM_EST_BTCOUNT(2, 8)
 
 /*
  * MPCIA configuration.
@@ -44,17 +48,19 @@ struct mcpcia_config {
 	int				cc_gid;	/* GID of this MCbus */
 	int				cc_mid;	/* MCbus Module ID */
 	int				cc_initted;
-	int				cc_mallocsafe;
 	struct alpha_bus_space		cc_iot;
 	struct alpha_bus_space		cc_memt;
-	struct extent *			cc_io_ex;
-	struct extent *			cc_d_mem_ex;
-	struct extent *			cc_s_mem_ex;
+	vmem_t *			cc_io_arena;
+	vmem_t *			cc_d_mem_arena;
+	vmem_t *			cc_s_mem_arena;
 	struct alpha_pci_chipset	cc_pc;
 	struct mcpcia_softc *		cc_sc;	/* back pointer */
-	long				cc_io_exstorage[_FSTORE];
-	long				cc_dmem_exstorage[_FSTORE];
-	long				cc_smem_exstorage[_FSTORE];
+	struct vmem			cc_io_arena_store;
+	struct vmem			cc_d_mem_arena_store;
+	struct vmem			cc_s_mem_arena_store;
+	struct vmem_btag		cc_io_btag_store[MCPCIA_IO_NBTS];
+	struct vmem_btag		cc_d_mem_btag_store[MCPCIA_D_MEM_NBTS];
+	struct vmem_btag		cc_s_mem_btag_store[MCPCIA_S_MEM_NBTS];
 	unsigned long			cc_sysbase;	/* shorthand */
 	struct alpha_bus_dma_tag	cc_dmat_direct;
 	struct alpha_bus_dma_tag	cc_dmat_pci_sgmap;

Index: src/sys/arch/alpha/pci/cia_swiz_bus_io.c
diff -u src/sys/arch/alpha/pci/cia_swiz_bus_io.c:1.18 src/sys/arch/alpha/pci/cia_swiz_bus_io.c:1.19
--- src/sys/arch/alpha/pci/cia_swiz_bus_io.c:1.18	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/cia_swiz_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cia_swiz_bus_io.c,v 1.18 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: cia_swiz_bus_io.c,v 1.19 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: cia_swiz_bus_io.c,v 1.18 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: cia_swiz_bus_io.c,v 1.19 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,8 +43,7 @@ __KERNEL_RCSID(1, "$NetBSD: cia_swiz_bus
 
 #define	CHIP		cia_swiz
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct cia_config *)(v))->cc_mallocsafe)
-#define	CHIP_IO_EXTENT(v)	(((struct cia_config *)(v))->cc_io_ex)
+#define	CHIP_IO_ARENA(v)	(((struct cia_config *)(v))->cc_io_arena)
 
 /* IO region 1 */
 #define CHIP_IO_W1_BUS_START(v)						\

Index: src/sys/arch/alpha/pci/cia_swiz_bus_mem.c
diff -u src/sys/arch/alpha/pci/cia_swiz_bus_mem.c:1.19 src/sys/arch/alpha/pci/cia_swiz_bus_mem.c:1.20
--- src/sys/arch/alpha/pci/cia_swiz_bus_mem.c:1.19	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/cia_swiz_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: cia_swiz_bus_mem.c,v 1.19 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: cia_swiz_bus_mem.c,v 1.20 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: cia_swiz_bus_mem.c,v 1.19 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: cia_swiz_bus_mem.c,v 1.20 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,9 +43,8 @@ __KERNEL_RCSID(1, "$NetBSD: cia_swiz_bus
 
 #define	CHIP		cia_swiz
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct cia_config *)(v))->cc_mallocsafe)
-#define	CHIP_D_MEM_EXTENT(v)	(((struct cia_config *)(v))->cc_d_mem_ex)
-#define	CHIP_S_MEM_EXTENT(v)	(((struct cia_config *)(v))->cc_s_mem_ex)
+#define	CHIP_D_MEM_ARENA(v)	(((struct cia_config *)(v))->cc_d_mem_arena)
+#define	CHIP_S_MEM_ARENA(v)	(((struct cia_config *)(v))->cc_s_mem_arena)
 
 /* Dense region 1 */
 #define	CHIP_D_MEM_W1_BUS_START(v)	0x00000000UL

Index: src/sys/arch/alpha/pci/ciavar.h
diff -u src/sys/arch/alpha/pci/ciavar.h:1.22 src/sys/arch/alpha/pci/ciavar.h:1.23
--- src/sys/arch/alpha/pci/ciavar.h:1.22	Mon Jul 19 01:06:14 2021
+++ src/sys/arch/alpha/pci/ciavar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ciavar.h,v 1.22 2021/07/19 01:06:14 thorpej Exp $ */
+/* $NetBSD: ciavar.h,v 1.23 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1995, 1996 Carnegie-Mellon University.
@@ -27,6 +27,8 @@
  * rights to redistribute these changes.
  */
 
+#include <sys/vmem.h>
+
 #include <dev/isa/isavar.h>
 #include <dev/pci/pcivar.h>
 #include <alpha/pci/pci_sgmap_pte64.h>
@@ -63,8 +65,9 @@ struct cia_config {
 #define	CCF_PCI_USE_BWX	0x04		/* use BWX for PCI config space */
 #define	CCF_BUS_USE_BWX	0x08		/* use BWX for bus space */
 
-	struct extent *cc_io_ex, *cc_d_mem_ex, *cc_s_mem_ex;
-	int	cc_mallocsafe;
+	vmem_t *cc_io_arena;
+	vmem_t *cc_d_mem_arena;
+	vmem_t *cc_s_mem_arena;
 
 	struct {
 		uint32_t wbase[4];
@@ -79,7 +82,7 @@ struct cia_softc {
 	struct	cia_config *sc_ccp;
 };
 
-void	cia_init(struct cia_config *, int);
+void	cia_init(struct cia_config *);
 void	cia_pci_init(pci_chipset_tag_t, void *);
 void	cia_dma_init(struct cia_config *);
 
Index: src/sys/arch/alpha/pci/pci_bwx_bus_io_chipdep.c
diff -u src/sys/arch/alpha/pci/pci_bwx_bus_io_chipdep.c:1.22 src/sys/arch/alpha/pci/pci_bwx_bus_io_chipdep.c:1.23
--- src/sys/arch/alpha/pci/pci_bwx_bus_io_chipdep.c:1.22	Wed May  5 02:15:18 2021
+++ src/sys/arch/alpha/pci/pci_bwx_bus_io_chipdep.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pci_bwx_bus_io_chipdep.c,v 1.22 2021/05/05 02:15:18 thorpej Exp $ */
+/* $NetBSD: pci_bwx_bus_io_chipdep.c,v 1.23 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1997, 1998, 2000 The NetBSD Foundation, Inc.
@@ -64,21 +64,26 @@
  * uses:
  *	CHIP		name of the 'chip' it's being compiled for.
  *	CHIP_IO_BASE	I/O space base to use.
- *	CHIP_IO_EX_STORE
+ *	CHIP_IO_ARENA_STORE
  *			If defined, device-provided static storage area
- *			for the I/O space extent.  If this is defined,
- *			CHIP_IO_EX_STORE_SIZE must also be defined.  If
- *			this is not defined, a static area will be
- *			declared.
- *	CHIP_IO_EX_STORE_SIZE
- *			Size of the device-provided static storage area
- *			for the I/O memory space extent.
+ *			for the I/O space arena.  If this is defined,
+ *			CHIP_IO_BTAG_STORE and CHIP_IO_BTAG_COUNT must
+ *			also be defined.  If this is not defined, a
+ *			static area will be declared.
+ *	CHIP_IO_BTAG_STORE
+ *			Device-provided static storage area for the
+ *			I/O space arena's boundary tags.  Ignored
+ *			unless CHIP_IO_ARENA_STORE is defined.
+ *	CHIP_IO_BTAG_COUNT
+ *			The number of device-provided static I/O
+ *			space boundary tags.  Ignored unless
+ *			CHIP_IO_ARENA_STORE is defined.
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: pci_bwx_bus_io_chipdep.c,v 1.22 2021/05/05 02:15:18 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: pci_bwx_bus_io_chipdep.c,v 1.23 2023/12/04 00:32:10 thorpej Exp $");
 
-#include <sys/extent.h>
+#include <sys/vmem_impl.h>
 
 #include <machine/bwx.h>
 
@@ -205,19 +210,22 @@ static void	__C(CHIP,_io_copy_region_4)(
 static void	__C(CHIP,_io_copy_region_8)(void *, bus_space_handle_t,
 		    bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t);
 
-#ifndef	CHIP_IO_EX_STORE
-static long
-    __C(CHIP,_io_ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)];
-#define	CHIP_IO_EX_STORE(v)		(__C(CHIP, _io_ex_storage))
-#define	CHIP_IO_EX_STORE_SIZE(v)	(sizeof __C(CHIP, _io_ex_storage))
-#endif
+#ifndef CHIP_IO_ARENA_STORE
+#define	CHIP_IO_BTAG_COUNT(v)	VMEM_EST_BTCOUNT(1, 8)
+#define	CHIP_IO_BTAG_STORE(v)	__C(CHIP,_io_btag_store)
+#define	CHIP_IO_ARENA_STORE(v)	(&(__C(CHIP,_io_arena_store)))
+
+static struct vmem __C(CHIP,_io_arena_store);
+static struct vmem_btag __C(CHIP,_io_btag_store)[CHIP_IO_BTAG_COUNT(xxx)];
+#endif /* CHIP_IO_ARENA_STORE */
 
 void
 __C(CHIP,_bus_io_init)(
 	bus_space_tag_t t,
 	void *v)
 {
-	struct extent *ex;
+	vmem_t *vm;
+	int error __diagused;
 
 	/*
 	 * Initialize the bus space tag.
@@ -301,11 +309,24 @@ __C(CHIP,_bus_io_init)(
 	t->abs_c_4 =		__C(CHIP,_io_copy_region_4);
 	t->abs_c_8 =		__C(CHIP,_io_copy_region_8);
 
-	ex = extent_create(__S(__C(CHIP,_bus_io)), 0x0UL, 0xffffffffUL,
-	    (void *)CHIP_IO_EX_STORE(v), CHIP_IO_EX_STORE_SIZE(v),
-	    EX_NOWAIT|EX_NOCOALESCE);
+	vm = vmem_init(CHIP_IO_ARENA_STORE(v),
+		       __S(__C(CHIP,_bus_io)),		/* name */
+		       0,				/* addr */
+		       0,				/* size */
+		       1,				/* quantum */
+		       NULL,				/* importfn */
+		       NULL,				/* releasefn */
+		       NULL,				/* source */
+		       0,				/* qcache_max */
+		       VM_NOSLEEP | VM_PRIVTAGS,
+		       IPL_NONE);
+	KASSERT(vm != NULL);
+
+	vmem_add_bts(vm, CHIP_IO_BTAG_STORE(v), CHIP_IO_BTAG_COUNT(v));
+	error = vmem_add(vm, 0, 0x100000000UL, VM_NOSLEEP);
+	KASSERT(error == 0);
 
-	CHIP_IO_EXTENT(v) = ex;
+	CHIP_IO_ARENA(v) = vm;
 }
 
 static int
@@ -378,12 +399,11 @@ __C(CHIP,_io_map)(
 #ifdef EXTENT_DEBUG
 	printf("io: allocating 0x%lx to 0x%lx\n", ioaddr, ioaddr + iosize - 1);
 #endif
-	error = extent_alloc_region(CHIP_IO_EXTENT(v), ioaddr, iosize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+	error = vmem_xalloc_addr(CHIP_IO_ARENA(v), ioaddr, iosize, VM_NOSLEEP);
 	if (error) {
 #ifdef EXTENT_DEBUG
 		printf("io: allocation failed (%d)\n", error);
-		extent_print(CHIP_IO_EXTENT(v));
+		/* vmem_print(CHIP_IO_ARENA(v));	XXX */
 #endif
 		return (error);
 	}
@@ -402,7 +422,6 @@ __C(CHIP,_io_unmap)(
 	int acct)
 {
 	bus_addr_t ioaddr;
-	int error;
 
 	if (acct == 0)
 		return;
@@ -416,16 +435,7 @@ __C(CHIP,_io_unmap)(
 #ifdef EXTENT_DEBUG
 	printf("io: freeing 0x%lx to 0x%lx\n", ioaddr, ioaddr + iosize - 1);
 #endif
-	error = extent_free(CHIP_IO_EXTENT(v), ioaddr, iosize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
-	if (error) {
-		printf("%s: WARNING: could not unmap 0x%lx-0x%lx (error %d)\n",
-		   __S(__C(CHIP,_io_unmap)), ioaddr, ioaddr + iosize - 1,
-		   error);
-#ifdef EXTENT_DEBUG
-		extent_print(CHIP_IO_EXTENT(v));
-#endif
-	}	
+	vmem_xfree(CHIP_IO_ARENA(v), ioaddr, iosize);
 }
 
 static int
@@ -455,7 +465,7 @@ __C(CHIP,_io_alloc)(
 {
 	struct alpha_bus_space_translation abst;
 	int linear = flags & BUS_SPACE_MAP_LINEAR;
-	bus_addr_t ioaddr;
+	vmem_addr_t ioaddr;
 	int error;
 
 	/*
@@ -470,14 +480,18 @@ __C(CHIP,_io_alloc)(
 #ifdef EXTENT_DEBUG
 	printf("io: allocating from 0x%lx to 0x%lx\n", rstart, rend);
 #endif
-	error = extent_alloc_subregion(CHIP_IO_EXTENT(v), rstart, rend,
-	    size, align, boundary,
-	    EX_FAST | EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0),
-	    &ioaddr);
+	error = vmem_xalloc(CHIP_IO_ARENA(v), size,
+			    align,		/* align */
+			    0,			/* phase */
+			    boundary,		/* nocross */
+			    rstart,		/* minaddr */
+			    rend,		/* maxaddr */
+			    VM_NOSLEEP,
+			    &ioaddr);
 	if (error) {
 #ifdef EXTENT_DEBUG
 		printf("io: allocation failed (%d)\n", error);
-		extent_print(CHIP_IO_EXTENT(v));
+		/* vmem_print(CHIP_IO_ARENA(v));	XXX */
 #endif
 		return (error);
 	}
@@ -488,8 +502,7 @@ __C(CHIP,_io_alloc)(
 
 	error = __C(CHIP,_io_translate)(v, ioaddr, size, flags, &abst);
 	if (error) {
-		(void) extent_free(CHIP_IO_EXTENT(v), ioaddr, size,
-		    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+		vmem_xfree(CHIP_IO_ARENA(v), ioaddr, size);
 		return (error);
 	}
 

Index: src/sys/arch/alpha/pci/dwlpx_bus_io.c
diff -u src/sys/arch/alpha/pci/dwlpx_bus_io.c:1.15 src/sys/arch/alpha/pci/dwlpx_bus_io.c:1.16
--- src/sys/arch/alpha/pci/dwlpx_bus_io.c:1.15	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/dwlpx_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dwlpx_bus_io.c,v 1.15 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: dwlpx_bus_io.c,v 1.16 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1997 by Matthew Jacob
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: dwlpx_bus_io.c,v 1.15 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: dwlpx_bus_io.c,v 1.16 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -46,11 +46,12 @@ __KERNEL_RCSID(1, "$NetBSD: dwlpx_bus_io
 
 #define	CHIP		dwlpx
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(1)
-#define	CHIP_IO_EXTENT(v)	(((struct dwlpx_config *)(v))->cc_io_ex)
-#define	CHIP_IO_EX_STORE(v)	(((struct dwlpx_config *)(v))->cc_io_exstorage)
-#define	CHIP_IO_EX_STORE_SIZE(v)					\
-	(sizeof (((struct dwlpx_config *)(v))->cc_io_exstorage))
+#define	CHIP_IO_ARENA(v)	(((struct dwlpx_config *)(v))->cc_io_arena)
+#define	CHIP_IO_ARENA_STORE(v)	\
+	(&(((struct dwlpx_config *)(v))->cc_io_arena_store))
+#define	CHIP_IO_BTAG_STORE(v)	\
+	(((struct dwlpx_config *)(v))->cc_io_btag_store)
+#define	CHIP_IO_BTAG_COUNT(v)	DWLPX_IO_NBTS
 
 /* IO Region 1 */
 #define	CHIP_IO_W1_BUS_START(v)	0x00000000UL
Index: src/sys/arch/alpha/pci/dwlpx_bus_mem.c
diff -u src/sys/arch/alpha/pci/dwlpx_bus_mem.c:1.15 src/sys/arch/alpha/pci/dwlpx_bus_mem.c:1.16
--- src/sys/arch/alpha/pci/dwlpx_bus_mem.c:1.15	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/dwlpx_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: dwlpx_bus_mem.c,v 1.15 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: dwlpx_bus_mem.c,v 1.16 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*
  * Copyright (c) 1997 by Matthew Jacob
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: dwlpx_bus_mem.c,v 1.15 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: dwlpx_bus_mem.c,v 1.16 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -46,17 +46,21 @@ __KERNEL_RCSID(1, "$NetBSD: dwlpx_bus_me
 
 #define	CHIP		dwlpx
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(1)
-#define	CHIP_D_MEM_EXTENT(v)	(((struct dwlpx_config *)(v))->cc_d_mem_ex)
-#define	CHIP_D_MEM_EX_STORE(v)						\
-	(((struct dwlpx_config *)(v))->cc_dmem_exstorage)
-#define	CHIP_D_MEM_EX_STORE_SIZE(v)					\
-	(sizeof (((struct dwlpx_config *)(v))->cc_dmem_exstorage))
-#define	CHIP_S_MEM_EXTENT(v)	(((struct dwlpx_config *)(v))->cc_s_mem_ex)
-#define	CHIP_S_MEM_EX_STORE(v)						\
-	(((struct dwlpx_config *)(v))->cc_smem_exstorage)
-#define	CHIP_S_MEM_EX_STORE_SIZE(v)					\
-	(sizeof (((struct dwlpx_config *)(v))->cc_smem_exstorage))
+#define	CHIP_D_MEM_ARENA(v)		\
+	(((struct dwlpx_config *)(v))->cc_d_mem_arena)
+#define	CHIP_D_MEM_ARENA_STORE(v)	\
+	(&(((struct dwlpx_config *)(v))->cc_d_mem_arena_store))
+#define	CHIP_D_MEM_BTAG_STORE(v)	\
+	(((struct dwlpx_config *)(v))->cc_d_mem_btag_store)
+#define	CHIP_D_MEM_BTAG_COUNT(v)	DWLPX_D_MEM_NBTS
+
+#define	CHIP_S_MEM_ARENA(v)		\
+	(((struct dwlpx_config *)(v))->cc_s_mem_arena)
+#define	CHIP_S_MEM_ARENA_STORE(v)	\
+	(&(((struct dwlpx_config *)(v))->cc_s_mem_arena_store))
+#define	CHIP_S_MEM_BTAG_STORE(v)	\
+	(((struct dwlpx_config *)(v))->cc_s_mem_btag_store)
+#define	CHIP_S_MEM_BTAG_COUNT(v)	DWLPX_S_MEM_NBTS
 
 /* Dense region 1 */
 #define	CHIP_D_MEM_W1_BUS_START(v)	0x00000000UL

Index: src/sys/arch/alpha/pci/irongate.c
diff -u src/sys/arch/alpha/pci/irongate.c:1.21 src/sys/arch/alpha/pci/irongate.c:1.22
--- src/sys/arch/alpha/pci/irongate.c:1.21	Sat Aug  7 16:18:41 2021
+++ src/sys/arch/alpha/pci/irongate.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: irongate.c,v 1.21 2021/08/07 16:18:41 thorpej Exp $ */
+/* $NetBSD: irongate.c,v 1.22 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: irongate.c,v 1.21 2021/08/07 16:18:41 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: irongate.c,v 1.22 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -69,13 +69,11 @@ static int	irongate_bus_get_window(int, 
  * Set up the chipset's function pointers.
  */
 void
-irongate_init(struct irongate_config *icp, int mallocsafe)
+irongate_init(struct irongate_config *icp)
 {
 	pcitag_t tag;
 	pcireg_t reg;
 
-	icp->ic_mallocsafe = mallocsafe;
-
 	/*
 	 * Set up PCI configuration space; we can only read the
 	 * revision info through configuration space.
@@ -138,7 +136,7 @@ irongate_attach(device_t parent, device_
 	 * that need to use memory allocation.
 	 */
 	icp = sc->sc_icp = &irongate_configuration;
-	irongate_init(icp, 1);
+	irongate_init(icp);
 
 	printf(": AMD 751 Core Logic + AGP Chipset, rev. %d\n", icp->ic_rev);
 

Index: src/sys/arch/alpha/pci/irongate_bus_io.c
diff -u src/sys/arch/alpha/pci/irongate_bus_io.c:1.8 src/sys/arch/alpha/pci/irongate_bus_io.c:1.9
--- src/sys/arch/alpha/pci/irongate_bus_io.c:1.8	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/irongate_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: irongate_bus_io.c,v 1.8 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: irongate_bus_io.c,v 1.9 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: irongate_bus_io.c,v 1.8 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: irongate_bus_io.c,v 1.9 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -45,8 +45,7 @@ __KERNEL_RCSID(1, "$NetBSD: irongate_bus
 
 #define	CHIP		irongate
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(((struct irongate_config *)(v))->ic_mallocsafe)
-#define	CHIP_IO_EXTENT(v)	(((struct irongate_config *)(v))->ic_io_ex)
+#define	CHIP_IO_ARENA(v)	(((struct irongate_config *)(v))->ic_io_arena)
 
 #define	CHIP_IO_SYS_START(v)	IRONGATE_IO_BASE
 

Index: src/sys/arch/alpha/pci/irongatevar.h
diff -u src/sys/arch/alpha/pci/irongatevar.h:1.7 src/sys/arch/alpha/pci/irongatevar.h:1.8
--- src/sys/arch/alpha/pci/irongatevar.h:1.7	Wed Oct 14 00:59:50 2020
+++ src/sys/arch/alpha/pci/irongatevar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: irongatevar.h,v 1.7 2020/10/14 00:59:50 thorpej Exp $ */
+/* $NetBSD: irongatevar.h,v 1.8 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -29,6 +29,8 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <sys/vmem.h>
+
 #include <dev/isa/isavar.h>
 #include <dev/pci/pcivar.h>
 
@@ -49,8 +51,8 @@ struct irongate_config {
 
 	uint32_t ic_rev;
 
-	struct extent *ic_io_ex, *ic_mem_ex;
-	int	ic_mallocsafe;
+	vmem_t *ic_io_arena;
+	vmem_t *ic_mem_arena;
 };
 
 struct irongate_softc {
@@ -60,7 +62,7 @@ struct irongate_softc {
 };
 
 void	irongate_page_physload(unsigned long, unsigned long);
-void	irongate_init(struct irongate_config *, int);
+void	irongate_init(struct irongate_config *);
 void	irongate_pci_init(pci_chipset_tag_t, void *);
 void	irongate_dma_init(struct irongate_config *);
 
Index: src/sys/arch/alpha/pci/ttwogavar.h
diff -u src/sys/arch/alpha/pci/ttwogavar.h:1.7 src/sys/arch/alpha/pci/ttwogavar.h:1.8
--- src/sys/arch/alpha/pci/ttwogavar.h:1.7	Sat May  8 00:08:43 2021
+++ src/sys/arch/alpha/pci/ttwogavar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ttwogavar.h,v 1.7 2021/05/08 00:08:43 thorpej Exp $ */
+/* $NetBSD: ttwogavar.h,v 1.8 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -30,11 +30,13 @@
  */
 
 #include <sys/extent.h>
+#include <sys/vmem_impl.h>
+
 #include <dev/isa/isavar.h>
 #include <dev/pci/pcivar.h>
 #include <alpha/pci/pci_sgmap_pte64.h>
 
-#define	_FSTORE	(EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long))
+#define	TTWOGA_NBTS	VMEM_EST_BTCOUNT(1, 8)
 
 /*
  * T2 System Address Map info.
@@ -81,12 +83,16 @@ struct ttwoga_config {
 	struct alpha_sgmap tc_sgmap;
 	int tc_use_tlb;			/* Gamma hardware bug */
 
-	long tc_io_exstorage[_FSTORE];
-	long tc_smem_exstorage[_FSTORE];
-	long tc_dmem_exstorage[_FSTORE];
-
-	struct extent *tc_io_ex, *tc_d_mem_ex, *tc_s_mem_ex;
-	int	tc_mallocsafe;
+	struct vmem tc_io_arena_store;
+	struct vmem tc_d_mem_arena_store;
+	struct vmem tc_s_mem_arena_store;
+	struct vmem_btag tc_io_btag_store[TTWOGA_NBTS];
+	struct vmem_btag tc_d_mem_btag_store[TTWOGA_NBTS];
+	struct vmem_btag tc_s_mem_btag_store[TTWOGA_NBTS];
+
+	vmem_t *tc_io_arena;
+	vmem_t *tc_d_mem_arena;
+	vmem_t *tc_s_mem_arena;
 
 	struct alpha_shared_intr *tc_intrtab;
 
@@ -97,7 +103,7 @@ struct ttwoga_config {
 
 extern cpuid_t ttwoga_conf_cpu;
 
-struct ttwoga_config *ttwoga_init(int, int);
+struct ttwoga_config *ttwoga_init(int);
 void	ttwoga_pci_init(pci_chipset_tag_t, void *);
 void	ttwoga_dma_init(struct ttwoga_config *);
 

Index: src/sys/arch/alpha/pci/lca.c
diff -u src/sys/arch/alpha/pci/lca.c:1.57 src/sys/arch/alpha/pci/lca.c:1.58
--- src/sys/arch/alpha/pci/lca.c:1.57	Sat Aug  7 16:18:41 2021
+++ src/sys/arch/alpha/pci/lca.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lca.c,v 1.57 2021/08/07 16:18:41 thorpej Exp $ */
+/* $NetBSD: lca.c,v 1.58 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -58,7 +58,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: lca.c,v 1.57 2021/08/07 16:18:41 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lca.c,v 1.58 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -148,7 +148,7 @@ lca_probe_bcache(void)
  * Set up the chipset's function pointers.
  */
 void
-lca_init(struct lca_config *lcp, int mallocsafe)
+lca_init(struct lca_config *lcp)
 {
 
 	/*
@@ -171,7 +171,6 @@ lca_init(struct lca_config *lcp, int mal
 		alpha_bus_window_count[ALPHA_BUS_TYPE_PCI_MEM] = 3;
 		alpha_bus_get_window = lca_bus_get_window;
 	}
-	lcp->lc_mallocsafe = mallocsafe;
 
 	lca_pci_init(&lcp->lc_pc, lcp);
 	alpha_pci_chipset = &lcp->lc_pc;
@@ -221,7 +220,7 @@ lcaattach(device_t parent, device_t self
 	 * that need to use memory allocation.
 	 */
 	lcp = sc->sc_lcp = &lca_configuration;
-	lca_init(lcp, 1);
+	lca_init(lcp);
 
 	/* XXX print chipset information */
 	aprint_normal("\n");

Index: src/sys/arch/alpha/pci/mcpcia.c
diff -u src/sys/arch/alpha/pci/mcpcia.c:1.35 src/sys/arch/alpha/pci/mcpcia.c:1.36
--- src/sys/arch/alpha/pci/mcpcia.c:1.35	Sat Aug  7 16:18:41 2021
+++ src/sys/arch/alpha/pci/mcpcia.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: mcpcia.c,v 1.35 2021/08/07 16:18:41 thorpej Exp $ */
+/* $NetBSD: mcpcia.c,v 1.36 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: mcpcia.c,v 1.35 2021/08/07 16:18:41 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mcpcia.c,v 1.36 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -101,7 +101,7 @@ static void	mcpciaattach(device_t, devic
 CFATTACH_DECL_NEW(mcpcia, sizeof(struct mcpcia_softc),
     mcpciamatch, mcpciaattach, NULL, NULL);
 
-void	mcpcia_init0(struct mcpcia_config *, int);
+void	mcpcia_init0(struct mcpcia_config *);
 
 /*
  * We have one statically-allocated mcpcia_config structure; this is
@@ -158,7 +158,7 @@ mcpciaattach(device_t parent, device_t s
 	ccp->cc_sc = mcp;
 
 	/* This initializes cc_sysbase so we can do register access. */
-	mcpcia_init0(ccp, 1);
+	mcpcia_init0(ccp);
 
 	ctl = REGVAL(MCPCIA_PCI_REV(ccp));
 	aprint_normal_dev(self,
@@ -225,7 +225,7 @@ mcpcia_init(void)
 			continue;
 
 		if (EISA_PRESENT(REGVAL(MCPCIA_PCI_REV(ccp)))) {
-			mcpcia_init0(ccp, 0);
+			mcpcia_init0(ccp);
 
 			alpha_bus_window_count[ALPHA_BUS_TYPE_PCI_IO] = 2;
 			alpha_bus_window_count[ALPHA_BUS_TYPE_PCI_MEM] = 3;
@@ -239,7 +239,7 @@ mcpcia_init(void)
 }
 
 void
-mcpcia_init0(struct mcpcia_config *ccp, int mallocsafe)
+mcpcia_init0(struct mcpcia_config *ccp)
 {
 	uint32_t ctl;
 
@@ -248,7 +248,6 @@ mcpcia_init0(struct mcpcia_config *ccp, 
 		mcpcia_bus_io_init(&ccp->cc_iot, ccp);
 		mcpcia_bus_mem_init(&ccp->cc_memt, ccp);
 	}
-	ccp->cc_mallocsafe = mallocsafe;
 
 	mcpcia_pci_init(&ccp->cc_pc, ccp);
 

Index: src/sys/arch/alpha/pci/pci_bwx_bus_mem_chipdep.c
diff -u src/sys/arch/alpha/pci/pci_bwx_bus_mem_chipdep.c:1.28 src/sys/arch/alpha/pci/pci_bwx_bus_mem_chipdep.c:1.29
--- src/sys/arch/alpha/pci/pci_bwx_bus_mem_chipdep.c:1.28	Wed May  5 02:15:18 2021
+++ src/sys/arch/alpha/pci/pci_bwx_bus_mem_chipdep.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pci_bwx_bus_mem_chipdep.c,v 1.28 2021/05/05 02:15:18 thorpej Exp $ */
+/* $NetBSD: pci_bwx_bus_mem_chipdep.c,v 1.29 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1997, 1998, 2000 The NetBSD Foundation, Inc.
@@ -64,21 +64,26 @@
  * uses:
  *	CHIP		name of the 'chip' it's being compiled for.
  *	CHIP_MEM_BASE	Mem space base to use.
- *	CHIP_MEM_EX_STORE
+ *	CHIP_MEM_ARENA_STORE
  *			If defined, device-provided static storage area
- *			for the memory space extent.  If this is
- *			defined, CHIP_MEM_EX_STORE_SIZE must also be
- *			defined.  If this is not defined, a static area
- *			will be declared.
- *	CHIP_MEM_EX_STORE_SIZE
- *			Size of the device-provided static storage area
- *			for the memory space extent.
+ *			for the memory space arena.  If this is
+ *			defined, CHIP_MEM_BTAG_STORE and CHIP_MEM_BTAG_COUNT
+ *			must also be defined.  If this is not defined, a
+ *			static area will be declared.
+ *	CHIP_MEM_BTAG_STORE
+ *			Device-provided static storage area for the
+ *			memory space arena's boundary tags.  Ignored
+ *			unless CHIP_MEM_ARENA_STORE is defined.
+ *	CHIP_MEM_BTAG_COUNT
+ *			The number of device-provided static memory
+ *			space boundary tags.  Ignored unless
+ *			CHIP_MEM_ARENA_STORE is defined.
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: pci_bwx_bus_mem_chipdep.c,v 1.28 2021/05/05 02:15:18 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: pci_bwx_bus_mem_chipdep.c,v 1.29 2023/12/04 00:32:10 thorpej Exp $");
 
-#include <sys/extent.h>
+#include <sys/vmem_impl.h>
 
 #include <machine/bwx.h>
 
@@ -205,19 +210,22 @@ static void	__C(CHIP,_mem_copy_region_4)
 static void	__C(CHIP,_mem_copy_region_8)(void *, bus_space_handle_t,
 		    bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t);
 
-#ifndef	CHIP_MEM_EX_STORE
-static long
-    __C(CHIP,_mem_ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)];
-#define	CHIP_MEM_EX_STORE(v)		(__C(CHIP,_mem_ex_storage))
-#define	CHIP_MEM_EX_STORE_SIZE(v)	(sizeof __C(CHIP,_mem_ex_storage))
-#endif
+#ifndef CHIP_MEM_ARENA_STORE
+#define	CHIP_MEM_BTAG_COUNT(v)	VMEM_EST_BTCOUNT(1, 8)
+#define	CHIP_MEM_BTAG_STORE(v)	__C(CHIP,_mem_btag_store)
+#define	CHIP_MEM_ARENA_STORE(v)	(&(__C(CHIP,_mem_arena_store)))
+
+static struct vmem __C(CHIP,_mem_arena_store);
+static struct vmem_btag __C(CHIP,_mem_btag_store)[CHIP_MEM_BTAG_COUNT(xxx)];
+#endif /* CHIP_MEM_ARENA_STORE */
 
 void
 __C(CHIP,_bus_mem_init)(
 	bus_space_tag_t t,
 	void *v)
 {
-	struct extent *ex;
+	vmem_t *vm;
+	int error __diagused;
 
 	/*
 	 * Initialize the bus space tag.
@@ -301,11 +309,24 @@ __C(CHIP,_bus_mem_init)(
 	t->abs_c_4 =		__C(CHIP,_mem_copy_region_4);
 	t->abs_c_8 =		__C(CHIP,_mem_copy_region_8);
 
-	ex = extent_create(__S(__C(CHIP,_bus_mem)), 0x0UL, 0xffffffffUL,
-	    (void *)CHIP_MEM_EX_STORE(v), CHIP_MEM_EX_STORE_SIZE(v),
-	    EX_NOWAIT|EX_NOCOALESCE);
+	vm = vmem_init(CHIP_MEM_ARENA_STORE(v),
+		       __S(__C(CHIP,_bus_mem)),		/* name */
+		       0,				/* addr */
+		       0,				/* size */
+		       1,				/* quantum */
+		       NULL,				/* importfn */
+		       NULL,				/* releasefn */
+		       NULL,				/* source */
+		       0,				/* qcache_max */
+		       VM_NOSLEEP | VM_PRIVTAGS,
+		       IPL_NONE);
+	KASSERT(vm != NULL);
+
+	vmem_add_bts(vm, CHIP_MEM_BTAG_STORE(v), CHIP_MEM_BTAG_COUNT(v));
+	error = vmem_add(vm, 0, 0x100000000UL, VM_NOSLEEP);
+	KASSERT(error == 0);
 
-	CHIP_MEM_EXTENT(v) = ex;
+	CHIP_MEM_ARENA(v) = vm;
 }
 
 static int
@@ -365,12 +386,12 @@ __C(CHIP,_mem_map)(
 	printf("mem: allocating 0x%lx to 0x%lx\n", memaddr,
 	    memaddr + memsize - 1);
 #endif
-	error = extent_alloc_region(CHIP_MEM_EXTENT(v), memaddr, memsize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+	error = vmem_xalloc_addr(CHIP_MEM_ARENA(v), memaddr, memsize,
+	    VM_NOSLEEP);
 	if (error) {
 #ifdef EXTENT_DEBUG
 		printf("mem: allocation failed (%d)\n", error);
-		extent_print(CHIP_MEM_EXTENT(v));
+		/* vmem_print(CHIP_MEM_ARENA(v));	XXX */
 #endif
 		return (error);
 	}
@@ -389,7 +410,6 @@ __C(CHIP,_mem_unmap)(
 	int acct)
 {
 	bus_addr_t memaddr;
-	int error;
 
 	if (acct == 0)
 		return;
@@ -404,16 +424,7 @@ __C(CHIP,_mem_unmap)(
 	printf("mem: freeing 0x%lx to 0x%lx\n", memaddr, memaddr + memsize - 1);
 #endif
 
-	error = extent_free(CHIP_MEM_EXTENT(v), memaddr, memsize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
-	if (error) {
-		printf("%s: WARNING: could not unmap 0x%lx-0x%lx (error %d)\n",
-		    __S(__C(CHIP,_mem_unmap)), memaddr, memaddr + memsize - 1,
-		    error);
-#ifdef EXTENT_DEBUG
-		extent_print(CHIP_MEM_EXTENT(v));
-#endif
-	}
+	vmem_xfree(CHIP_MEM_ARENA(v), memaddr, memsize);
 }
 
 static int
@@ -441,7 +452,7 @@ __C(CHIP,_mem_alloc)(
 	bus_addr_t *addrp,
 	bus_space_handle_t *bshp)
 {
-	bus_addr_t memaddr;
+	vmem_addr_t memaddr;
 	int error;
 
 	/*
@@ -450,14 +461,18 @@ __C(CHIP,_mem_alloc)(
 #ifdef EXTENT_DEBUG
 	printf("mem: allocating from 0x%lx to 0x%lx\n", rstart, rend);
 #endif
-	error = extent_alloc_subregion(CHIP_MEM_EXTENT(v), rstart, rend,
-	    size, align, boundary,
-	    EX_FAST | EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0),
-	    &memaddr);
+	error = vmem_xalloc(CHIP_MEM_ARENA(v), size,
+			    align,		/* align */
+			    0,			/* phase */
+			    boundary,		/* nocross */
+			    rstart,		/* minaddr */
+			    rend,		/* maxaddr */
+			    VM_NOSLEEP,
+			    &memaddr);
 	if (error) {
 #ifdef EXTENT_DEBUG
 		printf("mem: allocation failed (%d)\n", error);
-		extent_print(CHIP_MEM_EXTENT(v));
+		/* vmem_print(CHIP_MEM_ARENA(v));	XXX */
 #endif
 	}
 

Index: src/sys/arch/alpha/pci/pci_swiz_bus_io_chipdep.c
diff -u src/sys/arch/alpha/pci/pci_swiz_bus_io_chipdep.c:1.43 src/sys/arch/alpha/pci/pci_swiz_bus_io_chipdep.c:1.44
--- src/sys/arch/alpha/pci/pci_swiz_bus_io_chipdep.c:1.43	Wed May  5 02:15:18 2021
+++ src/sys/arch/alpha/pci/pci_swiz_bus_io_chipdep.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pci_swiz_bus_io_chipdep.c,v 1.43 2021/05/05 02:15:18 thorpej Exp $ */
+/* $NetBSD: pci_swiz_bus_io_chipdep.c,v 1.44 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -64,21 +64,26 @@
  * uses:
  *	CHIP		name of the 'chip' it's being compiled for.
  *	CHIP_IO_BASE	Sparse I/O space base to use.
- *	CHIP_IO_EX_STORE
+ *	CHIP_IO_ARENA_STORE
  *			If defined, device-provided static storage area
- *			for the I/O space extent.  If this is defined,
- *			CHIP_IO_EX_STORE_SIZE must also be defined.  If
- *			this is not defined, a static area will be
- *			declared.
- *	CHIP_IO_EX_STORE_SIZE
- *			Size of the device-provided static storage area
- *			for the I/O memory space extent.
+ *			for the I/O space arena.  If this is defined,
+ *			CHIP_IO_BTAG_STORE and CHIP_IO_BTAG_COUNT must
+ *			also be defined.  If this is not defined, a
+ *			static area will be declared.
+ *	CHIP_IO_BTAG_STORE
+ *			Device-provided static storage area for the
+ *			I/O space arena's boundary tags.  Ignored
+ *			unless CHIP_IO_ARENA_STORE is defined.
+ *	CHIP_IO_BTAG_COUNT
+ *			The number of device-provided static I/O
+ *			space boundary tags.  Ignored unless
+ *			CHIP_IO_ARENA_STORE is defined.
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: pci_swiz_bus_io_chipdep.c,v 1.43 2021/05/05 02:15:18 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: pci_swiz_bus_io_chipdep.c,v 1.44 2023/12/04 00:32:10 thorpej Exp $");
 
-#include <sys/extent.h>
+#include <sys/vmem_impl.h>
 
 #define	__C(A,B)	__CONCAT(A,B)
 #define	__S(S)		__STRING(S)
@@ -203,12 +208,30 @@ static void	__C(CHIP,_io_copy_region_4)(
 static void	__C(CHIP,_io_copy_region_8)(void *, bus_space_handle_t,
 		    bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t);
 
-#ifndef	CHIP_IO_EX_STORE
-static long
-    __C(CHIP,_io_ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)];
-#define	CHIP_IO_EX_STORE(v)		(__C(CHIP, _io_ex_storage))
-#define	CHIP_IO_EX_STORE_SIZE(v)	(sizeof __C(CHIP, _io_ex_storage))
-#endif
+#ifndef CHIP_IO_ARENA_STORE
+
+#ifdef CHIP_IO_W1_BUS_START
+#define	CHIP_IO_W1_BUS_SPAN	1
+#else
+#define	CHIP_IO_W1_BUS_SPAN	0
+#endif /* CHIP_IO_W1_BUS_START */
+
+#ifdef CHIP_IO_W2_BUS_START
+#define	CHIP_IO_W2_BUS_SPAN	1
+#else
+#define	CHIP_IO_W2_BUS_SPAN	0
+#endif /* CHIP_IO_W2_BUS_START */
+
+#define	CHIP_IO_SPAN_COUNT	(CHIP_IO_W1_BUS_SPAN + CHIP_IO_W2_BUS_SPAN)
+
+#define	CHIP_IO_BTAG_COUNT(v)	VMEM_EST_BTCOUNT(CHIP_IO_SPAN_COUNT, 8)
+#define	CHIP_IO_BTAG_STORE(v)	__C(CHIP,_io_btag_store)
+#define	CHIP_IO_ARENA_STORE(v)	(&(__C(CHIP,_io_arena_store)))
+
+static struct vmem __C(CHIP,_io_arena_store);
+static struct vmem_btag __C(CHIP,_io_btag_store)[CHIP_IO_BTAG_COUNT(xxx)];
+
+#endif /* CHIP_IO_ARENA_STORE */
 
 #ifndef CHIP_ADDR_SHIFT
 #define	CHIP_ADDR_SHIFT		5
@@ -221,7 +244,8 @@ static long
 void
 __C(CHIP,_bus_io_init)(bus_space_tag_t t, void *v)
 {
-	struct extent *ex;
+	vmem_t *vm;
+	int error __diagused;
 
 	/*
 	 * Initialize the bus space tag.
@@ -305,33 +329,44 @@ __C(CHIP,_bus_io_init)(bus_space_tag_t t
 	t->abs_c_4 =		__C(CHIP,_io_copy_region_4);
 	t->abs_c_8 =		__C(CHIP,_io_copy_region_8);
 
-	/* XXX WE WANT EXTENT_NOCOALESCE, BUT WE CAN'T USE IT. XXX */
-	ex = extent_create(__S(__C(CHIP,_bus_io)), 0x0UL, 0xffffffffUL,
-	    (void *)CHIP_IO_EX_STORE(v), CHIP_IO_EX_STORE_SIZE(v),
-	    EX_NOWAIT);
-	extent_alloc_region(ex, 0, 0xffffffffUL, EX_NOWAIT);
+	vm = vmem_init(CHIP_IO_ARENA_STORE(v),
+		       __S(__C(CHIP,_bus_io)),		/* name */
+		       0,				/* addr */
+		       0,				/* size */
+		       1,				/* quantum */
+		       NULL,				/* importfn */
+		       NULL,				/* releasefn */
+		       NULL,				/* source */
+		       0,				/* qcache_max */
+		       VM_NOSLEEP | VM_PRIVTAGS,
+		       IPL_NONE);
+	KASSERT(vm != NULL);
+
+	vmem_add_bts(vm, CHIP_IO_BTAG_STORE(v), CHIP_IO_BTAG_COUNT(v));
 
 #ifdef CHIP_IO_W1_BUS_START
 #ifdef EXTENT_DEBUG
-	printf("io: freeing from 0x%lx to 0x%lx\n", CHIP_IO_W1_BUS_START(v),
+	printf("io: adding span 0x%lx to 0x%lx\n", CHIP_IO_W1_BUS_START(v),
 	    CHIP_IO_W1_BUS_END(v));
 #endif
-	extent_free(ex, CHIP_IO_W1_BUS_START(v),
-	    CHIP_IO_W1_BUS_END(v) - CHIP_IO_W1_BUS_START(v) + 1, EX_NOWAIT);
-#endif
+	error = vmem_add(vm, CHIP_IO_W1_BUS_START(v),
+	    CHIP_IO_W1_BUS_END(v) - CHIP_IO_W1_BUS_START(v) + 1, VM_NOSLEEP);
+	KASSERT(error == 0);
+#endif /* CHIP_IO_W1_BUS_START */
+
 #ifdef CHIP_IO_W2_BUS_START
 #ifdef EXTENT_DEBUG
-	printf("io: freeing from 0x%lx to 0x%lx\n", CHIP_IO_W2_BUS_START(v),
+	printf("io: adding span 0x%lx to 0x%lx\n", CHIP_IO_W2_BUS_START(v),
 	    CHIP_IO_W2_BUS_END(v));
 #endif
-	extent_free(ex, CHIP_IO_W2_BUS_START(v),
-	    CHIP_IO_W2_BUS_END(v) - CHIP_IO_W2_BUS_START(v) + 1, EX_NOWAIT);
-#endif
+	error = vmem_add(vm, CHIP_IO_W2_BUS_START(v),
+	    CHIP_IO_W2_BUS_END(v) - CHIP_IO_W2_BUS_START(v) + 1, VM_NOSLEEP);
+#endif /* CHIP_IO_W2_BUS_START */
 
 #ifdef EXTENT_DEBUG
-	extent_print(ex);
+	/* vmem_print(vm);			XXX */
 #endif
-	CHIP_IO_EXTENT(v) = ex;
+	CHIP_IO_ARENA(v) = vm;
 }
 
 static int
@@ -434,12 +469,11 @@ __C(CHIP,_io_map)(void *v, bus_addr_t io
 #ifdef EXTENT_DEBUG
 	printf("io: allocating 0x%lx to 0x%lx\n", ioaddr, ioaddr + iosize - 1);
 #endif
-	error = extent_alloc_region(CHIP_IO_EXTENT(v), ioaddr, iosize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+	error = vmem_xalloc_addr(CHIP_IO_ARENA(v), ioaddr, iosize, VM_NOSLEEP);
 	if (error) {
 #ifdef EXTENT_DEBUG
 		printf("io: allocation failed (%d)\n", error);
-		extent_print(CHIP_IO_EXTENT(v));
+		/* vmem_print(CHIP_IO_ARENA(v));	XXX */
 #endif
 		return (error);
 	}
@@ -456,7 +490,6 @@ __C(CHIP,_io_unmap)(void *v, bus_space_h
     bus_size_t iosize, int acct)
 {
 	bus_addr_t ioaddr;
-	int error;
 
 	if (acct == 0)
 		return;
@@ -500,16 +533,7 @@ __C(CHIP,_io_unmap)(void *v, bus_space_h
 #ifdef EXTENT_DEBUG
 	printf("io: freeing 0x%lx to 0x%lx\n", ioaddr, ioaddr + iosize - 1);
 #endif
-	error = extent_free(CHIP_IO_EXTENT(v), ioaddr, iosize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
-	if (error) {
-		printf("%s: WARNING: could not unmap 0x%lx-0x%lx (error %d)\n",
-		   __S(__C(CHIP,_io_unmap)), ioaddr, ioaddr + iosize - 1,
-		   error);
-#ifdef EXTENT_DEBUG
-		extent_print(CHIP_IO_EXTENT(v));
-#endif
-	}	
+	vmem_xfree(CHIP_IO_ARENA(v), ioaddr, iosize);
 }
 
 static int
@@ -528,7 +552,7 @@ __C(CHIP,_io_alloc)(void *v, bus_addr_t 
 {
 	struct alpha_bus_space_translation abst;
 	int linear = flags & BUS_SPACE_MAP_LINEAR;
-	bus_addr_t ioaddr;
+	vmem_addr_t ioaddr;
 	int error;
 
 	/*
@@ -543,10 +567,14 @@ __C(CHIP,_io_alloc)(void *v, bus_addr_t 
 #ifdef EXTENT_DEBUG
 	printf("io: allocating from 0x%lx to 0x%lx\n", rstart, rend);
 #endif
-	error = extent_alloc_subregion(CHIP_IO_EXTENT(v), rstart, rend,
-	    size, align, boundary,
-	    EX_FAST | EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0),
-	    &ioaddr);
+	error = vmem_xalloc(CHIP_IO_ARENA(v), size,
+			    align,		/* align */
+			    0,			/* phase */
+			    boundary,		/* nocross */
+			    rstart,		/* minaddr */
+			    rend,		/* maxaddr */
+			    VM_NOSLEEP,
+			    &ioaddr);
 	if (error) {
 #ifdef EXTENT_DEBUG
 		printf("io: allocation failed (%d)\n", error);
@@ -561,8 +589,7 @@ __C(CHIP,_io_alloc)(void *v, bus_addr_t 
 
 	error = __C(CHIP,_io_translate)(v, ioaddr, size, flags, &abst);
 	if (error) {
-		(void) extent_free(CHIP_IO_EXTENT(v), ioaddr, size,
-		    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+		vmem_xfree(CHIP_IO_ARENA(v), ioaddr, size);
 		return (error);
 	}
 

Index: src/sys/arch/alpha/pci/pci_swiz_bus_mem_chipdep.c
diff -u src/sys/arch/alpha/pci/pci_swiz_bus_mem_chipdep.c:1.48 src/sys/arch/alpha/pci/pci_swiz_bus_mem_chipdep.c:1.49
--- src/sys/arch/alpha/pci/pci_swiz_bus_mem_chipdep.c:1.48	Wed May  5 02:15:18 2021
+++ src/sys/arch/alpha/pci/pci_swiz_bus_mem_chipdep.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: pci_swiz_bus_mem_chipdep.c,v 1.48 2021/05/05 02:15:18 thorpej Exp $ */
+/* $NetBSD: pci_swiz_bus_mem_chipdep.c,v 1.49 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -63,31 +63,41 @@
  * uses:
  *	CHIP		name of the 'chip' it's being compiled for.
  *	CHIP_D_MEM_W1_SYS_START	Dense Mem space base to use.
- *	CHIP_D_MEM_EX_STORE
+ *	CHIP_D_MEM_ARENA_STORE
  *			If defined, device-provided static storage area
- *			for the dense memory space extent.  If this is
- *			defined, CHIP_D_MEM_EX_STORE_SIZE must also be
- *			defined.  If this is not defined, a static area
- *			will be declared.
- *	CHIP_D_MEM_EX_STORE_SIZE
- *			Size of the device-provided static storage area
- *			for the dense memory space extent.
+ *			for the dense memory space arena.  If this is
+ *			defined, CHIP_D_MEM_BTAG_STORE and
+ *			CHIP_D_MEM_BTAG_COUNT must also be defined.  If
+ *			this is not defined, a static area will be declared.
+ *	CHIP_D_MEM_BTAG_STORE
+ *			Device-provided static storage area for the
+ *			dense memory space arena's boundary tags.  Ignored
+ *			unless CHIP_D_MEM_ARENA_STORE is defined.
+ *	CHIP_D_MEM_BTAG_COUNT
+ *			The number of device-provided static dense memory
+ *			space boundary tags.  Ignored unless
+ *			CHIP_MEM_ARENA_STORE is defined.
  *	CHIP_S_MEM_BASE	Sparse Mem space base to use.
- *	CHIP_S_MEM_EX_STORE
+ *	CHIP_S_MEM_ARENA_STORE
  *			If defined, device-provided static storage area
- *			for the sparse memory space extent.  If this is
- *			defined, CHIP_S_MEM_EX_STORE_SIZE must also be
- *			defined.  If this is not defined, a static area
- *			will be declared.
- *	CHIP_S_MEM_EX_STORE_SIZE
- *			Size of the device-provided static storage area
- *			for the sparse memory space extent.
+ *			for the sparse memory space arena.  If this is
+ *			defined, CHIP_D_MEM_BTAG_STORE and
+ *			CHIP_D_MEM_BTAG_COUNT must also be defined.  If
+ *			this is not defined, a static area will be declared.
+ *	CHIP_S_MEM_BTAG_STORE
+ *			Device-provided static storage area for the
+ *			sparse memory space arena's boundary tags.  Ignored
+ *			unless CHIP_D_MEM_ARENA_STORE is defined.
+ *	CHIP_S_MEM_BTAG_COUNT
+ *			The number of device-provided static sparse memory
+ *			space boundary tags.  Ignored unless
+ *			CHIP_MEM_ARENA_STORE is defined.
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: pci_swiz_bus_mem_chipdep.c,v 1.48 2021/05/05 02:15:18 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: pci_swiz_bus_mem_chipdep.c,v 1.49 2023/12/04 00:32:10 thorpej Exp $");
 
-#include <sys/extent.h>
+#include <sys/vmem_impl.h>
 
 #define	__C(A,B)	__CONCAT(A,B)
 #define	__S(S)		__STRING(S)
@@ -213,20 +223,48 @@ static void	__C(CHIP,_mem_copy_region_8)
 		    bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t);
 
 #ifdef CHIP_D_MEM_W1_SYS_START
-#ifndef	CHIP_D_MEM_EX_STORE
-static long
-    __C(CHIP,_dmem_ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)];
-#define	CHIP_D_MEM_EX_STORE(v)		(__C(CHIP,_dmem_ex_storage))
-#define	CHIP_D_MEM_EX_STORE_SIZE(v)	(sizeof __C(CHIP,_dmem_ex_storage))
-#endif
+#ifndef CHIP_D_MEM_ARENA_STORE
+#define	CHIP_D_MEM_BTAG_COUNT(v)	VMEM_EST_BTCOUNT(1, 8)
+#define	CHIP_D_MEM_BTAG_STORE(v)	__C(CHIP,_dmem_btag_store)
+#define	CHIP_D_MEM_ARENA_STORE(v)	(&(__C(CHIP,_dmem_arena_store)))
+
+static struct vmem __C(CHIP,_dmem_arena_store);
+static struct vmem_btag __C(CHIP,_dmem_btag_store)[CHIP_D_MEM_BTAG_COUNT(xxx)];
+#endif /* CHIP_D_MEM_ARENA_STORE */
 #endif /* CHIP_D_MEM_W1_SYS_START */
 
-#ifndef	CHIP_S_MEM_EX_STORE
-static long
-    __C(CHIP,_smem_ex_storage)[EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long)];
-#define	CHIP_S_MEM_EX_STORE(v)		(__C(CHIP,_smem_ex_storage))
-#define	CHIP_S_MEM_EX_STORE_SIZE(v)	(sizeof __C(CHIP,_smem_ex_storage))
-#endif
+#ifndef	CHIP_S_MEM_ARENA_STORE
+
+#ifdef CHIP_S_MEM_W1_BUS_START
+#define	CHIP_S_MEM_W1_BUS_SPAN	1
+#else
+#define	CHIP_S_MEM_W1_BUS_SPAN	0
+#endif /* CHIP_S_MEM_W1_BUS_START */
+
+#ifdef CHIP_S_MEM_W2_BUS_START
+#define	CHIP_S_MEM_W2_BUS_SPAN	1
+#else
+#define	CHIP_S_MEM_W2_BUS_SPAN	0
+#endif /* CHIP_S_MEM_W2_BUS_START */
+
+#ifdef CHIP_S_MEM_W3_BUS_START
+#define	CHIP_S_MEM_W3_BUS_SPAN	1
+#else
+#define	CHIP_S_MEM_W3_BUS_SPAN	0
+#endif /* CHIP_S_MEM_W3_BUS_START */
+
+#define	CHIP_S_MEM_SPAN_COUNT					\
+	(CHIP_S_MEM_W1_BUS_SPAN + CHIP_S_MEM_W2_BUS_SPAN +	\
+	 CHIP_S_MEM_W3_BUS_SPAN)
+
+#define	CHIP_S_MEM_BTAG_COUNT(v)  VMEM_EST_BTCOUNT(CHIP_S_MEM_SPAN_COUNT, 8)
+#define	CHIP_S_MEM_BTAG_STORE(v)  __C(CHIP,_smem_btag_store)
+#define	CHIP_S_MEM_ARENA_STORE(v) (&(__C(CHIP,_smem_arena_store)))
+
+static struct vmem __C(CHIP,_smem_arena_store);
+static struct vmem_btag __C(CHIP,_smem_btag_store)[CHIP_S_MEM_BTAG_COUNT(xxx)];
+
+#endif /* CHIP_S_MEM_ARENA_STORE */
 
 #ifndef CHIP_ADDR_SHIFT
 #define	CHIP_ADDR_SHIFT		5
@@ -240,9 +278,10 @@ void
 __C(CHIP,_bus_mem_init)(bus_space_tag_t t, void *v)
 {
 #ifdef CHIP_D_MEM_W1_SYS_START
-	struct extent *dex;
+	vmem_t *dvm;
 #endif
-	struct extent *sex;
+	vmem_t *svm;
+	int error __diagused;
 
 	/*
 	 * Initialize the bus space tag.
@@ -327,54 +366,73 @@ __C(CHIP,_bus_mem_init)(bus_space_tag_t 
 	t->abs_c_8 =		__C(CHIP,_mem_copy_region_8);
 
 #ifdef CHIP_D_MEM_W1_SYS_START
-	/* XXX WE WANT EXTENT_NOCOALESCE, BUT WE CAN'T USE IT. XXX */
-	dex = extent_create(__S(__C(CHIP,_bus_dmem)), 0x0UL,
-	    0xffffffffffffffffUL,
-	    (void *)CHIP_D_MEM_EX_STORE(v), CHIP_D_MEM_EX_STORE_SIZE(v),
-	    EX_NOWAIT);
-	extent_alloc_region(dex, 0, 0xffffffffffffffffUL, EX_NOWAIT);
+	dvm = vmem_init(CHIP_D_MEM_ARENA_STORE(v),
+			__S(__C(CHIP,_bus_dmem)),	/* name */
+			0,				/* addr */
+			0,				/* size */
+			1,				/* quantum */
+			NULL,				/* importfn */
+			NULL,				/* releasefn */
+			NULL,				/* source */
+			0,				/* qcache_max */
+			VM_NOSLEEP | VM_PRIVTAGS,
+			IPL_NONE);
+	KASSERT(dvm != NULL);
+
+	vmem_add_bts(dvm, CHIP_D_MEM_BTAG_STORE(v), CHIP_D_MEM_BTAG_COUNT(v));
 
 #ifdef CHIP_D_MEM_W1_BUS_START
 #ifdef EXTENT_DEBUG
-	printf("dmem: freeing from 0x%lx to 0x%lx\n",
+	printf("dmem: adding span 0x%lx to 0x%lx\n",
 	    CHIP_D_MEM_W1_BUS_START(v), CHIP_D_MEM_W1_BUS_END(v));
 #endif
-	extent_free(dex, CHIP_D_MEM_W1_BUS_START(v),
+	error = vmem_add(dvm, CHIP_D_MEM_W1_BUS_START(v),
 	    CHIP_D_MEM_W1_BUS_END(v) - CHIP_D_MEM_W1_BUS_START(v) + 1,
-	    EX_NOWAIT);
-#endif
+	    VM_NOSLEEP);
+	KASSERT(error == 0);
+#endif /* CHIP_D_MEM_W1_BUS_START */
 
 #ifdef EXTENT_DEBUG
-	extent_print(dex);
+	/* vmem_print(dvm);			XXX */
 #endif
-	CHIP_D_MEM_EXTENT(v) = dex;
+	CHIP_D_MEM_ARENA(v) = dvm;
 #endif /* CHIP_D_MEM_W1_SYS_START */
 
-	/* XXX WE WANT EXTENT_NOCOALESCE, BUT WE CAN'T USE IT. XXX */
-	sex = extent_create(__S(__C(CHIP,_bus_smem)), 0x0UL,
-	    0xffffffffffffffffUL,
-	    (void *)CHIP_S_MEM_EX_STORE(v), CHIP_S_MEM_EX_STORE_SIZE(v),
-	    EX_NOWAIT);
-	extent_alloc_region(sex, 0, 0xffffffffffffffffUL, EX_NOWAIT);
+	svm = vmem_init(CHIP_S_MEM_ARENA_STORE(v),
+			__S(__C(CHIP,_bus_smem)),	/* name */
+			0,				/* addr */
+			0,				/* size */
+			1,				/* quantum */
+			NULL,				/* importfn */
+			NULL,				/* releasefn */
+			NULL,				/* source */
+			0,				/* qcache_max */
+			VM_NOSLEEP | VM_PRIVTAGS,
+			IPL_NONE);
+	KASSERT(svm != NULL);
+
+	vmem_add_bts(svm, CHIP_S_MEM_BTAG_STORE(v), CHIP_S_MEM_BTAG_COUNT(v));
 
 #ifdef CHIP_S_MEM_W1_BUS_START
 #ifdef EXTENT_DEBUG
-	printf("smem: freeing from 0x%lx to 0x%lx\n",
+	printf("smem: adding span 0x%lx to 0x%lx\n",
 	    CHIP_S_MEM_W1_BUS_START(v), CHIP_S_MEM_W1_BUS_END(v));
 #endif
-	extent_free(sex, CHIP_S_MEM_W1_BUS_START(v),
+	error = vmem_add(svm, CHIP_S_MEM_W1_BUS_START(v),
 	    CHIP_S_MEM_W1_BUS_END(v) - CHIP_S_MEM_W1_BUS_START(v) + 1,
-	    EX_NOWAIT);
+	    VM_NOSLEEP);
+	KASSERT(error == 0);
 #endif
 #ifdef CHIP_S_MEM_W2_BUS_START
 	if (CHIP_S_MEM_W2_BUS_START(v) != CHIP_S_MEM_W1_BUS_START(v)) {
 #ifdef EXTENT_DEBUG
-		printf("smem: freeing from 0x%lx to 0x%lx\n",
+		printf("smem: adding span 0x%lx to 0x%lx\n",
 		    CHIP_S_MEM_W2_BUS_START(v), CHIP_S_MEM_W2_BUS_END(v));
 #endif
-		extent_free(sex, CHIP_S_MEM_W2_BUS_START(v),
+		error = vmem_add(svm, CHIP_S_MEM_W2_BUS_START(v),
 		    CHIP_S_MEM_W2_BUS_END(v) - CHIP_S_MEM_W2_BUS_START(v) + 1,
-		    EX_NOWAIT);
+		    VM_NOSLEEP);
+		KASSERT(error == 0);
 	} else {
 #ifdef EXTENT_DEBUG
 		printf("smem: window 2 (0x%lx to 0x%lx) overlaps window 1\n",
@@ -386,24 +444,25 @@ __C(CHIP,_bus_mem_init)(bus_space_tag_t 
 	if (CHIP_S_MEM_W3_BUS_START(v) != CHIP_S_MEM_W1_BUS_START(v) &&
 	    CHIP_S_MEM_W3_BUS_START(v) != CHIP_S_MEM_W2_BUS_START(v)) {
 #ifdef EXTENT_DEBUG
-		printf("smem: freeing from 0x%lx to 0x%lx\n",
+		printf("smem: adding span 0x%lx to 0x%lx\n",
 		    CHIP_S_MEM_W3_BUS_START(v), CHIP_S_MEM_W3_BUS_END(v));
 #endif
-		extent_free(sex, CHIP_S_MEM_W3_BUS_START(v),
+		error = vmem_add(svm, CHIP_S_MEM_W3_BUS_START(v),
 		    CHIP_S_MEM_W3_BUS_END(v) - CHIP_S_MEM_W3_BUS_START(v) + 1,
-		    EX_NOWAIT);
+		    VM_NOSLEEP);
+		KASSERT(error == 0);
 	} else {
 #ifdef EXTENT_DEBUG
-		printf("smem: window 2 (0x%lx to 0x%lx) overlaps window 1\n",
-		    CHIP_S_MEM_W2_BUS_START(v), CHIP_S_MEM_W2_BUS_END(v));
+		printf("smem: window 3 (0x%lx to 0x%lx) overlaps window 1/2\n",
+		    CHIP_S_MEM_W3_BUS_START(v), CHIP_S_MEM_W3_BUS_END(v));
 #endif
 	}
 #endif
 
 #ifdef EXTENT_DEBUG
-	extent_print(sex);
+	/* vmem_print(svm);			XXX */
 #endif
-	CHIP_S_MEM_EXTENT(v) = sex;
+	CHIP_S_MEM_ARENA(v) = svm;
 }
 
 #ifdef CHIP_D_MEM_W1_SYS_START
@@ -671,14 +730,14 @@ __C(CHIP,_mem_map)(void *v, bus_addr_t m
 	    musts ? "need" : "want");
 #endif
 #ifdef CHIP_D_MEM_W1_SYS_START
-	errord = extent_alloc_region(CHIP_D_MEM_EXTENT(v), memaddr, memsize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+	errord = vmem_xalloc_addr(CHIP_D_MEM_ARENA(v), memaddr, memsize,
+	    VM_NOSLEEP);
 #else
 	errord = EINVAL;
 #endif
 	didd = (errord == 0);
-	errors = extent_alloc_region(CHIP_S_MEM_EXTENT(v), memaddr, memsize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+	errors = vmem_xalloc_addr(CHIP_S_MEM_ARENA(v), memaddr, memsize,
+	    VM_NOSLEEP);
 	dids = (errors == 0);
 
 #ifdef EXTENT_DEBUG
@@ -727,40 +786,30 @@ __C(CHIP,_mem_map)(void *v, bus_addr_t m
 		*memhp = sh;
 	return (0);
 
-bad:
+ bad:
 #ifdef EXTENT_DEBUG
 	printf("mem: failed\n");
 #endif
 #ifdef CHIP_D_MEM_W1_SYS_START
 	if (didd) {
 #ifdef EXTENT_DEBUG
-	printf("mem: freeing dense\n");
+		printf("mem: freeing dense\n");
 #endif
-		if (extent_free(CHIP_D_MEM_EXTENT(v), memaddr, memsize,
-		    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0)) != 0) {
-			printf("%s: WARNING: couldn't free dense 0x%lx-0x%lx\n",
-			    __S(__C(CHIP,_mem_map)), memaddr,
-			    memaddr + memsize - 1);
-		}
+		vmem_xfree(CHIP_D_MEM_ARENA(v), memaddr, memsize);
 	}
 #endif /* CHIP_D_MEM_W1_SYS_START */
 	if (dids) {
 #ifdef EXTENT_DEBUG
-	printf("mem: freeing sparse\n");
+		printf("mem: freeing sparse\n");
 #endif
-		if (extent_free(CHIP_S_MEM_EXTENT(v), memaddr, memsize,
-		    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0)) != 0) {
-			printf("%s: WARNING: couldn't free sparse 0x%lx-0x%lx\n",
-			    __S(__C(CHIP,_mem_map)), memaddr,
-			    memaddr + memsize - 1);
-		}
+		vmem_xfree(CHIP_S_MEM_ARENA(v), memaddr, memsize);
 	}
 
 #ifdef EXTENT_DEBUG
 #ifdef CHIP_D_MEM_W1_SYS_START
-	extent_print(CHIP_D_MEM_EXTENT(v));
+	/* vmem_print(CHIP_D_MEM_ARENA(v));		XXX */
 #endif
-	extent_print(CHIP_S_MEM_EXTENT(v));
+	/* vmem_print(CHIP_S_MEM_ARENA(v));		XXX */
 #endif
 
 	/*
@@ -830,18 +879,12 @@ __C(CHIP,_mem_unmap)(void *v, bus_space_
 	    haved ? "" : "not ", haves ? "" : "not ");
 #endif
 #ifdef CHIP_D_MEM_W1_SYS_START
-	if (haved && extent_free(CHIP_D_MEM_EXTENT(v), memaddr, memsize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0)) != 0) {
-		printf("%s: WARNING: couldn't free dense 0x%lx-0x%lx\n",
-		    __S(__C(CHIP,_mem_map)), memaddr,
-		    memaddr + memsize - 1);
+	if (haved) {
+		vmem_xfree(CHIP_D_MEM_ARENA(v), memaddr, memsize);
 	}
 #endif
-	if (haves && extent_free(CHIP_S_MEM_EXTENT(v), memaddr, memsize,
-	    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0)) != 0) {
-		printf("%s: WARNING: couldn't free sparse 0x%lx-0x%lx\n",
-		    __S(__C(CHIP,_mem_map)), memaddr,
-		    memaddr + memsize - 1);
+	if (haves) {
+		vmem_xfree(CHIP_S_MEM_ARENA(v), memaddr, memsize);
 	}
 }
 

Index: src/sys/arch/alpha/pci/tsc.c
diff -u src/sys/arch/alpha/pci/tsc.c:1.29 src/sys/arch/alpha/pci/tsc.c:1.30
--- src/sys/arch/alpha/pci/tsc.c:1.29	Sat Aug  7 16:18:41 2021
+++ src/sys/arch/alpha/pci/tsc.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: tsc.c,v 1.29 2021/08/07 16:18:41 thorpej Exp $ */
+/* $NetBSD: tsc.c,v 1.30 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 by Ross Harvey.  All rights reserved.
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(0, "$NetBSD: tsc.c,v 1.29 2021/08/07 16:18:41 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tsc.c,v 1.30 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -207,7 +207,7 @@ tspattach(device_t parent, device_t self
 	struct tsp_config *pcp;
 
 	printf("\n");
-	pcp = tsp_init(1, t->tsp_slot);
+	pcp = tsp_init(t->tsp_slot);
 
 	tsp_dma_init(pcp);
 
@@ -234,7 +234,7 @@ tspattach(device_t parent, device_t self
 }
 
 struct tsp_config *
-tsp_init(int mallocsafe, int n)
+tsp_init(int n)
 	/* n:	 Pchip number */
 {
 	struct tsp_config *pcp;
@@ -265,7 +265,6 @@ tsp_init(int mallocsafe, int n)
 
 		alpha_bus_get_window = tsp_bus_get_window;
 	}
-	pcp->pc_mallocsafe = mallocsafe;
 	tsp_pci_init(&pcp->pc_pc, pcp);
 	pcp->pc_initted = 1;
 	return pcp;

Index: src/sys/arch/alpha/pci/tsp_bus_io.c
diff -u src/sys/arch/alpha/pci/tsp_bus_io.c:1.9 src/sys/arch/alpha/pci/tsp_bus_io.c:1.10
--- src/sys/arch/alpha/pci/tsp_bus_io.c:1.9	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/tsp_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: tsp_bus_io.c,v 1.9 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: tsp_bus_io.c,v 1.10 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 by Ross Harvey.  All rights reserved.
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: tsp_bus_io.c,v 1.9 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: tsp_bus_io.c,v 1.10 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -53,10 +53,10 @@ __KERNEL_RCSID(1, "$NetBSD: tsp_bus_io.c
 
 typedef struct tsp_config *TSPCON;
 
-#define	CHIP_EX_MALLOC_SAFE(v)  (((TSPCON)(v))->pc_mallocsafe)
-#define CHIP_IO_EXTENT(v)       (((TSPCON)(v))->pc_io_ex)
-#define	CHIP_IO_EX_STORE(v)	(((TSPCON)(v))->pc_io_exstorage)
-#define	CHIP_IO_EX_STORE_SIZE(v) (sizeof (((TSPCON)(v))->pc_io_exstorage))
+#define CHIP_IO_ARENA(v)	(((TSPCON)(v))->pc_io_arena)
+#define	CHIP_IO_ARENA_STORE(v)	(&(((TSPCON)(v))->pc_io_arena_store))
+#define	CHIP_IO_BTAG_STORE(v)	(((TSPCON)(v))->pc_io_btag_store)
+#define	CHIP_IO_BTAG_COUNT(v)	TSP_NBTS
 
 #define CHIP_IO_SYS_START(v)    (((TSPCON)(v))->pc_iobase | P_PCI_IO)
 

Index: src/sys/arch/alpha/pci/tsp_bus_mem.c
diff -u src/sys/arch/alpha/pci/tsp_bus_mem.c:1.14 src/sys/arch/alpha/pci/tsp_bus_mem.c:1.15
--- src/sys/arch/alpha/pci/tsp_bus_mem.c:1.14	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/tsp_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: tsp_bus_mem.c,v 1.14 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: tsp_bus_mem.c,v 1.15 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 by Ross Harvey.  All rights reserved.
@@ -32,7 +32,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tsp_bus_mem.c,v 1.14 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tsp_bus_mem.c,v 1.15 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -50,11 +50,13 @@ __KERNEL_RCSID(0, "$NetBSD: tsp_bus_mem.
 
 #define	CHIP	tsp
 
-#define	CHIP_EX_MALLOC_SAFE(v)  (((struct tsp_config *)(v))->pc_mallocsafe)
-#define CHIP_MEM_EXTENT(v)       (((struct tsp_config *)(v))->pc_mem_ex)
-#define	CHIP_MEM_EX_STORE(v)	(((struct tsp_config *)(v))->pc_mem_exstorage)
-#define	CHIP_MEM_EX_STORE_SIZE(v)					\
-	(sizeof (((struct tsp_config *)(v))->pc_mem_exstorage))
+#define	CHIP_MEM_ARENA(v)		\
+	(((struct tsp_config *)(v))->pc_mem_arena)
+#define	CHIP_MEM_ARENA_STORE(v)		\
+	(&(((struct tsp_config *)(v))->pc_mem_arena_store))
+#define	CHIP_MEM_BTAG_STORE(v)		\
+	(((struct tsp_config *)(v))->pc_mem_btag_store)
+#define	CHIP_MEM_BTAG_COUNT(v)		TSP_NBTS
 
 #define CHIP_MEM_SYS_START(v)						\
 	(((struct tsp_config *)(v))->pc_iobase | P_PCI_MEM)
@@ -84,10 +86,10 @@ tsp_bus_mem_init2(bus_space_tag_t t, voi
 			continue;
 		}
 
-		error = extent_alloc_region(CHIP_MEM_EXTENT(v),
+		error = vmem_xalloc_addr(CHIP_MEM_ARENA(v),
 		    WSBA_ADDR(pccsr->tsp_wsba[i].tsg_r),
 		    WSM_LEN(pccsr->tsp_wsm[i].tsg_r),
-		    EX_NOWAIT | (CHIP_EX_MALLOC_SAFE(v) ? EX_MALLOCOK : 0));
+		    VM_NOSLEEP);
 		if (error) {
 			printf("WARNING: unable to reserve DMA window "
 			    "0x%lx - 0x%lx\n",

Index: src/sys/arch/alpha/pci/tsvar.h
diff -u src/sys/arch/alpha/pci/tsvar.h:1.17 src/sys/arch/alpha/pci/tsvar.h:1.18
--- src/sys/arch/alpha/pci/tsvar.h:1.17	Mon Jul 19 01:06:14 2021
+++ src/sys/arch/alpha/pci/tsvar.h	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: tsvar.h,v 1.17 2021/07/19 01:06:14 thorpej Exp $ */
+/* $NetBSD: tsvar.h,v 1.18 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 by Ross Harvey.  All rights reserved.
@@ -32,12 +32,14 @@
  */
 
 #include <sys/extent.h>
+#include <sys/vmem_impl.h>
+
 #include <dev/isa/isavar.h>
 #include <dev/pci/pcivar.h>
 #include <dev/i2c/i2cvar.h>
 #include <alpha/pci/pci_sgmap_pte64.h>
 
-#define	_FSTORE	(EXTENT_FIXED_STORAGE_SIZE(8) / sizeof(long))
+#define	TSP_NBTS	VMEM_EST_BTCOUNT(1, 8)
 
 #define	tsvar() { Generate ctags(1) key. }
 
@@ -62,10 +64,13 @@ struct tsp_config {
 	uint32_t pc_hae_mem;
 	uint32_t pc_hae_io;
 
-	long	pc_io_exstorage[_FSTORE];
-	long	pc_mem_exstorage[_FSTORE];
-	struct	extent *pc_io_ex, *pc_mem_ex;
-	int	pc_mallocsafe;
+	struct	vmem pc_io_arena_store;
+	struct	vmem pc_mem_arena_store;
+	struct	vmem_btag pc_io_btag_store[TSP_NBTS];
+	struct	vmem_btag pc_mem_btag_store[TSP_NBTS];
+
+	vmem_t	*pc_io_arena;
+	vmem_t	*pc_mem_arena;
 
 	struct {
 		uint64_t wsba[4];
@@ -91,7 +96,7 @@ struct tsciic_attach_args {
 
 extern int tsp_console_hose;
 
-struct	tsp_config *tsp_init(int, int);
+struct	tsp_config *tsp_init(int);
 void	tsp_pci_init(pci_chipset_tag_t, void *);
 void	tsp_dma_init(struct tsp_config *);
 

Index: src/sys/arch/alpha/pci/ttwoga.c
diff -u src/sys/arch/alpha/pci/ttwoga.c:1.20 src/sys/arch/alpha/pci/ttwoga.c:1.21
--- src/sys/arch/alpha/pci/ttwoga.c:1.20	Sat Aug  7 16:18:41 2021
+++ src/sys/arch/alpha/pci/ttwoga.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ttwoga.c,v 1.20 2021/08/07 16:18:41 thorpej Exp $ */
+/* $NetBSD: ttwoga.c,v 1.21 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(0, "$NetBSD: ttwoga.c,v 1.20 2021/08/07 16:18:41 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ttwoga.c,v 1.21 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -163,7 +163,7 @@ ttwogaprint(void *aux, const char *pnp)
  * Set up the chipset's function pointers.
  */
 struct ttwoga_config *
-ttwoga_init(int hose, int mallocsafe)
+ttwoga_init(int hose)
 {
 	struct ttwoga_config *tcp;
 
@@ -194,7 +194,6 @@ ttwoga_init(int hose, int mallocsafe)
 		ttwoga_bus_io_init(&tcp->tc_iot, tcp);
 		ttwoga_bus_mem_init(&tcp->tc_memt, tcp);
 	}
-	tcp->tc_mallocsafe = mallocsafe;
 
 	ttwoga_pci_init(&tcp->tc_pc, tcp);
 
@@ -225,7 +224,7 @@ ttwopciattach(device_t parent, device_t 
 	 * set up the chipset's info; done one at console init time
 	 * (maybe), but doesn't hurt to do it twice.
 	 */
-	tcp = ttwoga_init(pba->pba_bus, 1);
+	tcp = ttwoga_init(pba->pba_bus);
 
 	ttwoga_dma_init(tcp);
 

Index: src/sys/arch/alpha/pci/ttwoga_bus_io.c
diff -u src/sys/arch/alpha/pci/ttwoga_bus_io.c:1.4 src/sys/arch/alpha/pci/ttwoga_bus_io.c:1.5
--- src/sys/arch/alpha/pci/ttwoga_bus_io.c:1.4	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/ttwoga_bus_io.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ttwoga_bus_io.c,v 1.4 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: ttwoga_bus_io.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: ttwoga_bus_io.c,v 1.4 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: ttwoga_bus_io.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -47,11 +47,10 @@ __KERNEL_RCSID(1, "$NetBSD: ttwoga_bus_i
 
 #define	CHIP_V(v)		((struct ttwoga_config *)(v))
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(CHIP_V(v)->tc_mallocsafe)
-
-#define	CHIP_IO_EXTENT(v)	(CHIP_V(v)->tc_io_ex)
-#define	CHIP_IO_EX_STORE(v)	(CHIP_V(v)->tc_io_exstorage)
-#define	CHIP_IO_EX_STORE_SIZE(v) sizeof(CHIP_IO_EX_STORE(v))
+#define	CHIP_IO_ARENA(v)	(CHIP_V(v)->tc_io_arena)
+#define	CHIP_IO_ARENA_STORE(v)	(&(CHIP_V(v)->tc_io_arena_store))
+#define	CHIP_IO_BTAG_STORE(v)	(CHIP_V(v)->tc_io_btag_store)
+#define	CHIP_IO_BTAG_COUNT(v)	TTWOGA_NBTS
 
 /* IO region 1 */
 #define	CHIP_IO_W1_BUS_START(v)						\
Index: src/sys/arch/alpha/pci/ttwoga_bus_mem.c
diff -u src/sys/arch/alpha/pci/ttwoga_bus_mem.c:1.4 src/sys/arch/alpha/pci/ttwoga_bus_mem.c:1.5
--- src/sys/arch/alpha/pci/ttwoga_bus_mem.c:1.4	Sun Jul  4 22:42:36 2021
+++ src/sys/arch/alpha/pci/ttwoga_bus_mem.c	Mon Dec  4 00:32:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ttwoga_bus_mem.c,v 1.4 2021/07/04 22:42:36 thorpej Exp $ */
+/* $NetBSD: ttwoga_bus_mem.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $ */
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>			/* RCS ID & Copyright macro defns */
 
-__KERNEL_RCSID(1, "$NetBSD: ttwoga_bus_mem.c,v 1.4 2021/07/04 22:42:36 thorpej Exp $");
+__KERNEL_RCSID(1, "$NetBSD: ttwoga_bus_mem.c,v 1.5 2023/12/04 00:32:10 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -47,15 +47,15 @@ __KERNEL_RCSID(1, "$NetBSD: ttwoga_bus_m
 
 #define	CHIP_V(v)	((struct ttwoga_config *)(v))
 
-#define	CHIP_EX_MALLOC_SAFE(v)	(CHIP_V(v)->tc_mallocsafe)
-
-#define	CHIP_D_MEM_EXTENT(v)	(CHIP_V(v)->tc_d_mem_ex)
-#define	CHIP_D_MEM_EX_STORE(v)	(CHIP_V(v)->tc_dmem_exstorage)
-#define	CHIP_D_MEM_EX_STORE_SIZE(v) sizeof(CHIP_D_MEM_EX_STORE(v))
-
-#define	CHIP_S_MEM_EXTENT(v)	(CHIP_V(v)->tc_s_mem_ex)
-#define	CHIP_S_MEM_EX_STORE(v)	(CHIP_V(v)->tc_smem_exstorage)
-#define	CHIP_S_MEM_EX_STORE_SIZE(v) sizeof(CHIP_S_MEM_EX_STORE(v))
+#define	CHIP_D_MEM_ARENA(v)		(CHIP_V(v)->tc_d_mem_arena)
+#define	CHIP_D_MEM_ARENA_STORE(v)	(&(CHIP_V(v)->tc_d_mem_arena_store))
+#define	CHIP_D_MEM_BTAG_STORE(v)	(CHIP_V(v)->tc_d_mem_btag_store)
+#define	CHIP_D_MEM_BTAG_COUNT(v)	TTWOGA_NBTS
+
+#define	CHIP_S_MEM_ARENA(v)		(CHIP_V(v)->tc_s_mem_arena)
+#define	CHIP_S_MEM_ARENA_STORE(v)	(&(CHIP_V(v)->tc_s_mem_arena_store))
+#define	CHIP_S_MEM_BTAG_STORE(v)	(CHIP_V(v)->tc_s_mem_btag_store)
+#define	CHIP_S_MEM_BTAG_COUNT(v)	TTWOGA_NBTS
 
 /* Dense region 1 */
 #define	CHIP_D_MEM_W1_BUS_START(v)					\

Reply via email to