Module Name: src Committed By: thorpej Date: Sat Jun 19 16:29:04 UTC 2021
Modified Files: src/sys/arch/alpha/pci: dwlpx.c pci_kn8ae.c pci_kn8ae.h Log Message: Remove the "first" argument from pci_kn8ae_pickintr(), instead using a real once control in that function. Removes a needless divergence from other "pickintr" routines. To generate a diff of this commit: cvs rdiff -u -r1.40 -r1.41 src/sys/arch/alpha/pci/dwlpx.c cvs rdiff -u -r1.31 -r1.32 src/sys/arch/alpha/pci/pci_kn8ae.c cvs rdiff -u -r1.5 -r1.6 src/sys/arch/alpha/pci/pci_kn8ae.h 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/pci/dwlpx.c diff -u src/sys/arch/alpha/pci/dwlpx.c:1.40 src/sys/arch/alpha/pci/dwlpx.c:1.41 --- src/sys/arch/alpha/pci/dwlpx.c:1.40 Sat Apr 24 23:36:23 2021 +++ src/sys/arch/alpha/pci/dwlpx.c Sat Jun 19 16:29:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dwlpx.c,v 1.40 2021/04/24 23:36:23 thorpej Exp $ */ +/* $NetBSD: dwlpx.c,v 1.41 2021/06/19 16:29:03 thorpej Exp $ */ /* * Copyright (c) 1997 by Matthew Jacob @@ -32,7 +32,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: dwlpx.c,v 1.40 2021/04/24 23:36:23 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dwlpx.c,v 1.41 2021/06/19 16:29:03 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -106,7 +106,6 @@ dwlpxmatch(device_t parent, cfdata_t cf, static void dwlpxattach(device_t parent, device_t self, void *aux) { - static int once = 0; struct dwlpx_softc *sc = device_private(self); struct dwlpx_config *ccp = &sc->dwlpx_cc; struct kft_dev_attach_args *ka = aux; @@ -158,15 +157,10 @@ dwlpxattach(device_t parent, device_t se } #endif - if (once == 0) { - /* - * Set up interrupts - */ - pci_kn8ae_pickintr(&sc->dwlpx_cc, 1); - once++; - } else { - pci_kn8ae_pickintr(&sc->dwlpx_cc, 0); - } + /* + * Set up interrupts + */ + pci_kn8ae_pickintr(&sc->dwlpx_cc); /* * Attach PCI bus Index: src/sys/arch/alpha/pci/pci_kn8ae.c diff -u src/sys/arch/alpha/pci/pci_kn8ae.c:1.31 src/sys/arch/alpha/pci/pci_kn8ae.c:1.32 --- src/sys/arch/alpha/pci/pci_kn8ae.c:1.31 Fri Sep 25 03:40:11 2020 +++ src/sys/arch/alpha/pci/pci_kn8ae.c Sat Jun 19 16:29:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_kn8ae.c,v 1.31 2020/09/25 03:40:11 thorpej Exp $ */ +/* $NetBSD: pci_kn8ae.c,v 1.32 2021/06/19 16:29:03 thorpej Exp $ */ /* * Copyright (c) 1997 by Matthew Jacob @@ -32,7 +32,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pci_kn8ae.c,v 1.31 2020/09/25 03:40:11 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pci_kn8ae.c,v 1.32 2021/06/19 16:29:03 thorpej Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -43,6 +43,7 @@ __KERNEL_RCSID(0, "$NetBSD: pci_kn8ae.c, #include <sys/device.h> #include <sys/cpu.h> #include <sys/syslog.h> +#include <sys/once.h> #include <machine/autoconf.h> @@ -87,10 +88,27 @@ kn8ae_intr_wrapper(void *arg, u_long vec KERNEL_UNLOCK_ONE(NULL); } -void -pci_kn8ae_pickintr(struct dwlpx_config *ccp, int first) +static ONCE_DECL(pci_kn8ae_once); + +static int +pci_kn8ae_init_imaskcache(void) { int io, hose, dev; + + for (io = 0; io < DWLPX_NIONODE; io++) { + for (hose = 0; hose < DWLPX_NHOSE; hose++) { + for (dev = 0; dev < NHPC; dev++) { + imaskcache[io][hose][dev] = DWLPX_IMASK_DFLT; + } + } + } + + return 0; +} + +void +pci_kn8ae_pickintr(struct dwlpx_config *ccp) +{ pci_chipset_tag_t pc = &ccp->cc_pc; pc->pc_intr_v = ccp; @@ -103,17 +121,7 @@ pci_kn8ae_pickintr(struct dwlpx_config * /* Not supported on KN8AE. */ pc->pc_pciide_compat_intr_establish = NULL; - if (!first) { - return; - } - - for (io = 0; io < DWLPX_NIONODE; io++) { - for (hose = 0; hose < DWLPX_NHOSE; hose++) { - for (dev = 0; dev < NHPC; dev++) { - imaskcache[io][hose][dev] = DWLPX_IMASK_DFLT; - } - } - } + RUN_ONCE(&pci_kn8ae_once, pci_kn8ae_init_imaskcache); } #define IH_MAKE(vec, dev, pin) \ Index: src/sys/arch/alpha/pci/pci_kn8ae.h diff -u src/sys/arch/alpha/pci/pci_kn8ae.h:1.5 src/sys/arch/alpha/pci/pci_kn8ae.h:1.6 --- src/sys/arch/alpha/pci/pci_kn8ae.h:1.5 Sat Mar 14 14:45:53 2009 +++ src/sys/arch/alpha/pci/pci_kn8ae.h Sat Jun 19 16:29:03 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: pci_kn8ae.h,v 1.5 2009/03/14 14:45:53 dsl Exp $ */ +/* $NetBSD: pci_kn8ae.h,v 1.6 2021/06/19 16:29:03 thorpej Exp $ */ /* * Copyright (c) 1997 by Matthew Jacob @@ -30,4 +30,4 @@ * SUCH DAMAGE. */ -void pci_kn8ae_pickintr(struct dwlpx_config *, int); +void pci_kn8ae_pickintr(struct dwlpx_config *);