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) \