--- -	2018-12-24 08:27:48.000000000 +0100
+++ sys/dev/ipmi.c	2018-12-23 09:50:53.000000000 +0100
@@ -1,4 +1,4 @@
-/*	$NetBSD: ipmi.c,v 1.70 2018/12/17 16:26:03 christos Exp $ */
+/*	$NetBSD$ */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -67,8 +67,6 @@ __KERNEL_RCSID(0, "$NetBSD: ipmi.c,v 1.7
 #include <sys/bus.h>
 #include <sys/intr.h>
 
-#include <x86/smbiosvar.h>
-
 #include <dev/isa/isareg.h>
 #include <dev/isa/isavar.h>
 
@@ -90,33 +88,14 @@ struct ipmi_sensor {
 	int32_t		i_prevval;	/* feed rnd source on change */
 };
 
-int	ipmi_nintr;
-int	ipmi_dbg = 0;
-int	ipmi_enabled = 0;
+#if 0
+static	int ipmi_nintr;
+#endif
+static	int ipmi_dbg = 0;
+static	int ipmi_enabled = 0;
 
 #define SENSOR_REFRESH_RATE (hz / 2)
 
-#define SMBIOS_TYPE_IPMI	0x26
-
-/*
- * Format of SMBIOS IPMI Flags
- *
- * bit0: interrupt trigger mode (1=level, 0=edge)
- * bit1: interrupt polarity (1=active high, 0=active low)
- * bit2: reserved
- * bit3: address LSB (1=odd,0=even)
- * bit4: interrupt (1=specified, 0=not specified)
- * bit5: reserved
- * bit6/7: register spacing (1,4,2,err)
- */
-#define SMIPMI_FLAG_IRQLVL		(1L << 0)
-#define SMIPMI_FLAG_IRQEN		(1L << 3)
-#define SMIPMI_FLAG_ODDOFFSET		(1L << 4)
-#define SMIPMI_FLAG_IFSPACING(x)	(((x)>>6)&0x3)
-#define	 IPMI_IOSPACING_BYTE		 0
-#define	 IPMI_IOSPACING_WORD		 2
-#define	 IPMI_IOSPACING_DWORD		 1
-
 #define IPMI_BTMSG_LEN			0
 #define IPMI_BTMSG_NFLN			1
 #define IPMI_BTMSG_SEQ			2
@@ -164,74 +143,89 @@ int	ipmi_enabled = 0;
 	if (len && ipmi_dbg >= lvl) \
 		dumpb(msg, len, (const uint8_t *)(buf));
 
-long signextend(unsigned long, int);
+static	long signextend(unsigned long, int);
 
 SLIST_HEAD(ipmi_sensors_head, ipmi_sensor);
-struct ipmi_sensors_head ipmi_sensor_list =
+static struct ipmi_sensors_head ipmi_sensor_list =
     SLIST_HEAD_INITIALIZER(&ipmi_sensor_list);
 
-void	dumpb(const char *, int, const uint8_t *);
+static	void dumpb(const char *, int, const uint8_t *);
 
-int	read_sensor(struct ipmi_softc *, struct ipmi_sensor *);
-int	add_sdr_sensor(struct ipmi_softc *, uint8_t *);
-int	get_sdr_partial(struct ipmi_softc *, uint16_t, uint16_t,
+static	int read_sensor(struct ipmi_softc *, struct ipmi_sensor *);
+static	int add_sdr_sensor(struct ipmi_softc *, uint8_t *);
+static	int get_sdr_partial(struct ipmi_softc *, uint16_t, uint16_t,
 	    uint8_t, uint8_t, void *, uint16_t *);
-int	get_sdr(struct ipmi_softc *, uint16_t, uint16_t *);
+static	int get_sdr(struct ipmi_softc *, uint16_t, uint16_t *);
 
-char	*ipmi_buf_acquire(struct ipmi_softc *, size_t);
-void	ipmi_buf_release(struct ipmi_softc *, char *);
-int	ipmi_sendcmd(struct ipmi_softc *, int, int, int, int, int, const void*);
-int	ipmi_recvcmd(struct ipmi_softc *, int, int *, void *);
-void	ipmi_delay(struct ipmi_softc *, int);
-
-int	ipmi_watchdog_setmode(struct sysmon_wdog *);
-int	ipmi_watchdog_tickle(struct sysmon_wdog *);
-void	ipmi_dotickle(struct ipmi_softc *);
-
-int	ipmi_intr(void *);
-int	ipmi_match(device_t, cfdata_t, void *);
-void	ipmi_attach(device_t, device_t, void *);
-static int ipmi_detach(device_t, int);
+static	char *ipmi_buf_acquire(struct ipmi_softc *, size_t);
+static	void ipmi_buf_release(struct ipmi_softc *, char *);
+static	int ipmi_sendcmd(struct ipmi_softc *, int, int, int, int, int, const void*);
+static	int ipmi_recvcmd(struct ipmi_softc *, int, int *, void *);
+static	void ipmi_delay(struct ipmi_softc *, int);
+
+static	int ipmi_watchdog_setmode(struct sysmon_wdog *);
+static	int ipmi_watchdog_tickle(struct sysmon_wdog *);
+static	void ipmi_dotickle(struct ipmi_softc *);
 
-long	ipmi_convert(uint8_t, struct sdrtype1 *, long);
-void	ipmi_sensor_name(char *, int, uint8_t, uint8_t *);
+#if 0
+static	int ipmi_intr(void *);
+#endif
 
-/* BMC Helper Functions */
-uint8_t bmc_read(struct ipmi_softc *, int);
-void	bmc_write(struct ipmi_softc *, int, uint8_t);
-int	bmc_io_wait(struct ipmi_softc *, int, uint8_t, uint8_t, const char *);
-int	bmc_io_wait_spin(struct ipmi_softc *, int, uint8_t, uint8_t);
-int	bmc_io_wait_sleep(struct ipmi_softc *, int, uint8_t, uint8_t);
-
-void	*bt_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
-void	*cmn_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
-
-int	getbits(uint8_t *, int, int);
-int	ipmi_sensor_type(int, int, int);
-
-void	ipmi_smbios_probe(struct smbios_ipmi *, struct ipmi_attach_args *);
-void	ipmi_refresh_sensors(struct ipmi_softc *);
-int	ipmi_map_regs(struct ipmi_softc *, struct ipmi_attach_args *);
-void	ipmi_unmap_regs(struct ipmi_softc *);
-
-void	*scan_sig(long, long, int, int, const void *);
-
-int32_t	ipmi_convert_sensor(uint8_t *, struct ipmi_sensor *);
-void	ipmi_set_limits(struct sysmon_envsys *, envsys_data_t *,
-			sysmon_envsys_lim_t *, uint32_t *);
-void	ipmi_get_limits(struct sysmon_envsys *, envsys_data_t *,
-			sysmon_envsys_lim_t *, uint32_t *);
-void	ipmi_get_sensor_limits(struct ipmi_softc *, struct ipmi_sensor *,
-			       sysmon_envsys_lim_t *, uint32_t *);
-int	ipmi_sensor_status(struct ipmi_softc *, struct ipmi_sensor *,
-			   envsys_data_t *, uint8_t *);
+static	int ipmi_match(device_t, cfdata_t, void *);
+static	void ipmi_attach(device_t, device_t, void *);
+static	int ipmi_detach(device_t, int);
 
-int	 add_child_sensors(struct ipmi_softc *, uint8_t *, int, int, int,
-    int, int, int, const char *);
+static	long	ipmi_convert(uint8_t, struct sdrtype1 *, long);
+static	void	ipmi_sensor_name(char *, int, uint8_t, uint8_t *);
 
-bool	ipmi_suspend(device_t, const pmf_qual_t *);
+/* BMC Helper Functions */
+static	uint8_t bmc_read(struct ipmi_softc *, int);
+static	void bmc_write(struct ipmi_softc *, int, uint8_t);
+static	int bmc_io_wait(struct ipmi_softc *, int, uint8_t, uint8_t, const char *);
+static	int bmc_io_wait_spin(struct ipmi_softc *, int, uint8_t, uint8_t);
+static	int bmc_io_wait_sleep(struct ipmi_softc *, int, uint8_t, uint8_t);
+
+static	void *bt_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
+static	void *cmn_buildmsg(struct ipmi_softc *, int, int, int, const void *, int *);
+
+static	int getbits(uint8_t *, int, int);
+static	int ipmi_sensor_type(int, int, int);
+
+static	void ipmi_refresh_sensors(struct ipmi_softc *);
+static	int ipmi_map_regs(struct ipmi_softc *, struct ipmi_attach_args *);
+static	void ipmi_unmap_regs(struct ipmi_softc *);
+
+static	int32_t ipmi_convert_sensor(uint8_t *, struct ipmi_sensor *);
+static	void ipmi_set_limits(struct sysmon_envsys *, envsys_data_t *,
+		sysmon_envsys_lim_t *, uint32_t *);
+static	void ipmi_get_limits(struct sysmon_envsys *, envsys_data_t *,
+		sysmon_envsys_lim_t *, uint32_t *);
+static	void ipmi_get_sensor_limits(struct ipmi_softc *, struct ipmi_sensor *,
+		sysmon_envsys_lim_t *, uint32_t *);
+static	int ipmi_sensor_status(struct ipmi_softc *, struct ipmi_sensor *,
+		envsys_data_t *, uint8_t *);
+
+static	int add_child_sensors(struct ipmi_softc *, uint8_t *, int, int, int,
+		int, int, int, const char *);
+
+static	bool ipmi_suspend(device_t, const pmf_qual_t *);
+
+static	int kcs_probe(struct ipmi_softc *);
+static	int kcs_reset(struct ipmi_softc *);
+static	int kcs_sendmsg(struct ipmi_softc *, int, const uint8_t *);
+static	int kcs_recvmsg(struct ipmi_softc *, int, int *len, uint8_t *);
+
+static	int bt_probe(struct ipmi_softc *);
+static	int bt_reset(struct ipmi_softc *);
+static	int bt_sendmsg(struct ipmi_softc *, int, const uint8_t *);
+static	int bt_recvmsg(struct ipmi_softc *, int, int *, uint8_t *);
+
+static	int smic_probe(struct ipmi_softc *);
+static	int smic_reset(struct ipmi_softc *);
+static	int smic_sendmsg(struct ipmi_softc *, int, const uint8_t *);
+static	int smic_recvmsg(struct ipmi_softc *, int, int *, uint8_t *);
 
-struct ipmi_if kcs_if = {
+static struct ipmi_if kcs_if = {
 	"KCS",
 	IPMI_IF_KCS_NREGS,
 	cmn_buildmsg,
@@ -241,7 +235,7 @@ struct ipmi_if kcs_if = {
 	kcs_probe,
 };
 
-struct ipmi_if smic_if = {
+static struct ipmi_if smic_if = {
 	"SMIC",
 	IPMI_IF_SMIC_NREGS,
 	cmn_buildmsg,
@@ -251,7 +245,7 @@ struct ipmi_if smic_if = {
 	smic_probe,
 };
 
-struct ipmi_if bt_if = {
+static struct ipmi_if bt_if = {
 	"BT",
 	IPMI_IF_BT_NREGS,
 	bt_buildmsg,
@@ -261,9 +255,9 @@ struct ipmi_if bt_if = {
 	bt_probe,
 };
 
-struct ipmi_if *ipmi_get_if(int);
+static	struct ipmi_if *ipmi_get_if(int);
 
-struct ipmi_if *
+static struct ipmi_if *
 ipmi_get_if(int iftype)
 {
 	switch (iftype) {
@@ -281,21 +275,21 @@ ipmi_get_if(int iftype)
 /*
  * BMC Helper Functions
  */
-uint8_t
+static uint8_t
 bmc_read(struct ipmi_softc *sc, int offset)
 {
 	return bus_space_read_1(sc->sc_iot, sc->sc_ioh,
 	    offset * sc->sc_if_iospacing);
 }
 
-void
+static void
 bmc_write(struct ipmi_softc *sc, int offset, uint8_t val)
 {
 	bus_space_write_1(sc->sc_iot, sc->sc_ioh,
 	    offset * sc->sc_if_iospacing, val);
 }
 
-int
+static int
 bmc_io_wait_sleep(struct ipmi_softc *sc, int offset, uint8_t mask,
     uint8_t value)
 {
@@ -315,7 +309,7 @@ bmc_io_wait_sleep(struct ipmi_softc *sc,
 	return -1;
 }
 
-int
+static int
 bmc_io_wait(struct ipmi_softc *sc, int offset, uint8_t mask, uint8_t value,
     const char *lbl)
 {
@@ -328,7 +322,7 @@ bmc_io_wait(struct ipmi_softc *sc, int o
 	return bmc_io_wait_sleep(sc, offset, mask, value);
 }
 
-int
+static int
 bmc_io_wait_spin(struct ipmi_softc *sc, int offset, uint8_t mask,
     uint8_t value)
 {
@@ -373,16 +367,16 @@ bmc_io_wait_spin(struct ipmi_softc *sc, 
 #define	 BT_IM_SMI_EN			(1L << 3)
 #define	 BT_IM_NMI2SMI			(1L << 4)
 
-int bt_read(struct ipmi_softc *, int);
-int bt_write(struct ipmi_softc *, int, uint8_t);
+static int bt_read(struct ipmi_softc *, int);
+static int bt_write(struct ipmi_softc *, int, uint8_t);
 
-int
+static int
 bt_read(struct ipmi_softc *sc, int reg)
 {
 	return bmc_read(sc, reg);
 }
 
-int
+static int
 bt_write(struct ipmi_softc *sc, int reg, uint8_t data)
 {
 	if (bmc_io_wait(sc, _BT_CTRL_REG, BT_BMC_BUSY, 0, __func__) < 0)
@@ -392,7 +386,7 @@ bt_write(struct ipmi_softc *sc, int reg,
 	return 0;
 }
 
-int
+static int
 bt_sendmsg(struct ipmi_softc *sc, int len, const uint8_t *data)
 {
 	int i;
@@ -409,7 +403,7 @@ bt_sendmsg(struct ipmi_softc *sc, int le
 	return 0;
 }
 
-int
+static int
 bt_recvmsg(struct ipmi_softc *sc, int maxlen, int *rxlen, uint8_t *data)
 {
 	uint8_t len, v, i;
@@ -433,13 +427,13 @@ bt_recvmsg(struct ipmi_softc *sc, int ma
 	return 0;
 }
 
-int
+static int
 bt_reset(struct ipmi_softc *sc)
 {
 	return -1;
 }
 
-int
+static int
 bt_probe(struct ipmi_softc *sc)
 {
 	uint8_t rv;
@@ -499,11 +493,11 @@ bt_probe(struct ipmi_softc *sc)
 #define	  SMIC_TX_DATA_RDY		(1L << 6)
 #define	  SMIC_RX_DATA_RDY		(1L << 7)
 
-int	smic_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
-int	smic_write_cmd_data(struct ipmi_softc *, uint8_t, const uint8_t *);
-int	smic_read_data(struct ipmi_softc *, uint8_t *);
+static int smic_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
+static int smic_write_cmd_data(struct ipmi_softc *, uint8_t, const uint8_t *);
+static int smic_read_data(struct ipmi_softc *, uint8_t *);
 
-int
+static int
 smic_wait(struct ipmi_softc *sc, uint8_t mask, uint8_t val, const char *lbl)
 {
 	int v;
@@ -519,7 +513,7 @@ smic_wait(struct ipmi_softc *sc, uint8_t
 	return v;
 }
 
-int
+static int
 smic_write_cmd_data(struct ipmi_softc *sc, uint8_t cmd, const uint8_t *data)
 {
 	int	sts, v;
@@ -541,7 +535,7 @@ smic_write_cmd_data(struct ipmi_softc *s
 	return smic_wait(sc, SMIC_BUSY, 0, __func__);
 }
 
-int
+static int
 smic_read_data(struct ipmi_softc *sc, uint8_t *data)
 {
 	int sts;
@@ -557,7 +551,7 @@ smic_read_data(struct ipmi_softc *sc, ui
 
 #define ErrStat(a, ...) if (a) printf(__VA_ARGS__);
 
-int
+static int
 smic_sendmsg(struct ipmi_softc *sc, int len, const uint8_t *data)
 {
 	int sts, idx;
@@ -578,7 +572,7 @@ smic_sendmsg(struct ipmi_softc *sc, int 
 	return 0;
 }
 
-int
+static int
 smic_recvmsg(struct ipmi_softc *sc, int maxlen, int *len, uint8_t *data)
 {
 	int sts, idx;
@@ -610,13 +604,13 @@ smic_recvmsg(struct ipmi_softc *sc, int 
 	return 0;
 }
 
-int
+static int
 smic_reset(struct ipmi_softc *sc)
 {
 	return -1;
 }
 
-int
+static int
 smic_probe(struct ipmi_softc *sc)
 {
 	/* Flag register should not be 0xFF on a good system */
@@ -651,12 +645,12 @@ smic_probe(struct ipmi_softc *sc)
 #define	    KCS_WRITE_STATE		0x80
 #define	    KCS_ERROR_STATE		0xC0
 
-int	kcs_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
-int	kcs_write_cmd(struct ipmi_softc *, uint8_t);
-int	kcs_write_data(struct ipmi_softc *, uint8_t);
-int	kcs_read_data(struct ipmi_softc *, uint8_t *);
+static int kcs_wait(struct ipmi_softc *, uint8_t, uint8_t, const char *);
+static int kcs_write_cmd(struct ipmi_softc *, uint8_t);
+static int kcs_write_data(struct ipmi_softc *, uint8_t);
+static int kcs_read_data(struct ipmi_softc *, uint8_t *);
 
-int
+static int
 kcs_wait(struct ipmi_softc *sc, uint8_t mask, uint8_t value, const char *lbl)
 {
 	int v;
@@ -681,7 +675,7 @@ kcs_wait(struct ipmi_softc *sc, uint8_t 
 	return v & KCS_STATE_MASK;
 }
 
-int
+static int
 kcs_write_cmd(struct ipmi_softc *sc, uint8_t cmd)
 {
 	/* ASSERT: IBF and OBF are clear */
@@ -691,7 +685,7 @@ kcs_write_cmd(struct ipmi_softc *sc, uin
 	return kcs_wait(sc, KCS_IBF, 0, "write_cmd");
 }
 
-int
+static int
 kcs_write_data(struct ipmi_softc *sc, uint8_t data)
 {
 	/* ASSERT: IBF and OBF are clear */
@@ -701,7 +695,7 @@ kcs_write_data(struct ipmi_softc *sc, ui
 	return kcs_wait(sc, KCS_IBF, 0, "write_data");
 }
 
-int
+static int
 kcs_read_data(struct ipmi_softc *sc, uint8_t * data)
 {
 	int sts;
@@ -720,7 +714,7 @@ kcs_read_data(struct ipmi_softc *sc, uin
 }
 
 /* Exported KCS functions */
-int
+static int
 kcs_sendmsg(struct ipmi_softc *sc, int len, const uint8_t * data)
 {
 	int idx, sts;
@@ -746,7 +740,7 @@ kcs_sendmsg(struct ipmi_softc *sc, int l
 	return 0;
 }
 
-int
+static int
 kcs_recvmsg(struct ipmi_softc *sc, int maxlen, int *rxlen, uint8_t * data)
 {
 	int idx, sts;
@@ -769,13 +763,13 @@ kcs_recvmsg(struct ipmi_softc *sc, int m
 	return 0;
 }
 
-int
+static int
 kcs_reset(struct ipmi_softc *sc)
 {
 	return -1;
 }
 
-int
+static int
 kcs_probe(struct ipmi_softc *sc)
 {
 	uint8_t v;
@@ -859,24 +853,7 @@ struct ipmi_bmc_response {
 CFATTACH_DECL2_NEW(ipmi, sizeof(struct ipmi_softc),
     ipmi_match, ipmi_attach, ipmi_detach, NULL, NULL, NULL);
 
-/* Scan memory for signature */
-void *
-scan_sig(long start, long end, int skip, int len, const void *data)
-{
-	void *va;
-
-	while (start < end) {
-		va = ISA_HOLE_VADDR(start);
-		if (memcmp(va, data, len) == 0)
-			return va;
-
-		start += skip;
-	}
-
-	return NULL;
-}
-
-void
+static void
 dumpb(const char *lbl, int len, const uint8_t *data)
 {
 	int idx;
@@ -888,76 +865,6 @@ dumpb(const char *lbl, int len, const ui
 	printf("\n");
 }
 
-void
-ipmi_smbios_probe(struct smbios_ipmi *pipmi, struct ipmi_attach_args *ia)
-{
-	const char *platform;
-
-	dbg_printf(1, "%s: %#.2x %#.2x %#.2x %#.2x %#08" PRIx64
-	    " %#.2x %#.2x\n", __func__,
-	    pipmi->smipmi_if_type,
-	    pipmi->smipmi_if_rev,
-	    pipmi->smipmi_i2c_address,
-	    pipmi->smipmi_nvram_address,
-	    pipmi->smipmi_base_address,
-	    pipmi->smipmi_base_flags,
-	    pipmi->smipmi_irq);
-
-	ia->iaa_if_type = pipmi->smipmi_if_type;
-	ia->iaa_if_rev = pipmi->smipmi_if_rev;
-	ia->iaa_if_irq = (pipmi->smipmi_base_flags & SMIPMI_FLAG_IRQEN) ?
-	    pipmi->smipmi_irq : -1;
-	ia->iaa_if_irqlvl = (pipmi->smipmi_base_flags & SMIPMI_FLAG_IRQLVL) ?
-	    IST_LEVEL : IST_EDGE;
-
-	switch (SMIPMI_FLAG_IFSPACING(pipmi->smipmi_base_flags)) {
-	case IPMI_IOSPACING_BYTE:
-		ia->iaa_if_iospacing = 1;
-		break;
-
-	case IPMI_IOSPACING_DWORD:
-		ia->iaa_if_iospacing = 4;
-		break;
-
-	case IPMI_IOSPACING_WORD:
-		ia->iaa_if_iospacing = 2;
-		break;
-
-	default:
-		ia->iaa_if_iospacing = 1;
-		aprint_error("%s: unknown register spacing\n", __func__);
-	}
-
-	/* Calculate base address (PCI BAR format) */
-	if (pipmi->smipmi_base_address & 0x1) {
-		ia->iaa_if_iotype = 'i';
-		ia->iaa_if_iobase = pipmi->smipmi_base_address & ~0x1;
-	} else {
-		ia->iaa_if_iotype = 'm';
-		ia->iaa_if_iobase = pipmi->smipmi_base_address & ~0xF;
-	}
-	if (pipmi->smipmi_base_flags & SMIPMI_FLAG_ODDOFFSET)
-		ia->iaa_if_iobase++;
-
-	platform = pmf_get_platform("system-product");
-	if (platform != NULL &&
-	    strcmp(platform, "ProLiant MicroServer") == 0 &&
-	    pipmi->smipmi_base_address != 0) {
-                ia->iaa_if_iospacing = 1;
-                ia->iaa_if_iobase = pipmi->smipmi_base_address & ~0x7;
-                ia->iaa_if_iotype = 'i';
-                return;
-        }
-
-	if (pipmi->smipmi_base_flags == 0x7f) {
-		/* IBM 325 eServer workaround */
-		ia->iaa_if_iospacing = 1;
-		ia->iaa_if_iobase = pipmi->smipmi_base_address;
-		ia->iaa_if_iotype = 'i';
-		return;
-	}
-}
-
 /*
  * bt_buildmsg builds an IPMI message from a nfLun, cmd, and data
  * This is used by BT protocol
@@ -965,7 +872,7 @@ ipmi_smbios_probe(struct smbios_ipmi *pi
  * Returns a buffer to an allocated message, txlen contains length
  *   of allocated message
  */
-void *
+static void *
 bt_buildmsg(struct ipmi_softc *sc, int nfLun, int cmd, int len,
     const void *data, int *txlen)
 {
@@ -994,7 +901,7 @@ bt_buildmsg(struct ipmi_softc *sc, int n
  * Returns a buffer to an allocated message, txlen contains length
  *   of allocated message
  */
-void *
+static void *
 cmn_buildmsg(struct ipmi_softc *sc, int nfLun, int cmd, int len,
     const void *data, int *txlen)
 {
@@ -1019,7 +926,7 @@ cmn_buildmsg(struct ipmi_softc *sc, int 
  *
  * Send an IPMI command
  */
-int
+static int
 ipmi_sendcmd(struct ipmi_softc *sc, int rssa, int rslun, int netfn, int cmd,
     int txlen, const void *data)
 {
@@ -1066,7 +973,7 @@ done:
 	return rc;
 }
 
-void
+static void
 ipmi_buf_release(struct ipmi_softc *sc, char *buf)
 {
 	KASSERT(sc->sc_buf_rsvd);
@@ -1074,7 +981,7 @@ ipmi_buf_release(struct ipmi_softc *sc, 
 	sc->sc_buf_rsvd = false;
 }
 
-char *
+static char *
 ipmi_buf_acquire(struct ipmi_softc *sc, size_t len)
 {
 	KASSERT(len <= sizeof(sc->sc_buf));
@@ -1088,7 +995,7 @@ ipmi_buf_acquire(struct ipmi_softc *sc, 
 /*
  * ipmi_recvcmd: caller must hold sc_cmd_mtx.
  */
-int
+static int
 ipmi_recvcmd(struct ipmi_softc *sc, int maxlen, int *rxlen, void *data)
 {
 	uint8_t	*buf, rc = 0;
@@ -1127,7 +1034,7 @@ ipmi_recvcmd(struct ipmi_softc *sc, int 
 /*
  * ipmi_delay: caller must hold sc_cmd_mtx.
  */
-void
+static void
 ipmi_delay(struct ipmi_softc *sc, int ms)
 {
 	if (cold) {
@@ -1140,7 +1047,7 @@ ipmi_delay(struct ipmi_softc *sc, int ms
 }
 
 /* Read a partial SDR entry */
-int
+static int
 get_sdr_partial(struct ipmi_softc *sc, uint16_t recordId, uint16_t reserveId,
     uint8_t offset, uint8_t length, void *buffer, uint16_t *nxtRecordId)
 {
@@ -1171,10 +1078,10 @@ get_sdr_partial(struct ipmi_softc *sc, u
 	return 0;
 }
 
-int maxsdrlen = 0x10;
+static int maxsdrlen = 0x10;
 
 /* Read an entire SDR; pass to add sensor */
-int
+static int
 get_sdr(struct ipmi_softc *sc, uint16_t recid, uint16_t *nxtrec)
 {
 	uint16_t	resid = 0;
@@ -1232,7 +1139,7 @@ get_sdr(struct ipmi_softc *sc, uint16_t 
 	return 0;
 }
 
-int
+static int
 getbits(uint8_t *bytes, int bitpos, int bitlen)
 {
 	int	v;
@@ -1251,7 +1158,7 @@ getbits(uint8_t *bytes, int bitpos, int 
 }
 
 /* Decode IPMI sensor name */
-void
+static void
 ipmi_sensor_name(char *name, int len, uint8_t typelen, uint8_t *bits)
 {
 	int	i, slen;
@@ -1295,7 +1202,7 @@ ipmi_sensor_name(char *name, int len, ui
 }
 
 /* Sign extend a n-bit value */
-long
+static long
 signextend(unsigned long val, int bits)
 {
 	long msk = (1L << (bits-1))-1;
@@ -1450,7 +1357,7 @@ done:
 }
 
 /* Convert IPMI reading from sensor factors */
-long
+static long
 ipmi_convert(uint8_t v, struct sdrtype1 *s1, long adj)
 {
 	int64_t	M, B;
@@ -1499,7 +1406,7 @@ ipmi_convert(uint8_t v, struct sdrtype1 
 	return FIX2INT(val);
 }
 
-int32_t
+static int32_t
 ipmi_convert_sensor(uint8_t *reading, struct ipmi_sensor *psensor)
 {
 	struct sdrtype1	*s1 = (struct sdrtype1 *)psensor->i_sdr;
@@ -1526,7 +1433,7 @@ ipmi_convert_sensor(uint8_t *reading, st
 	return val;
 }
 
-void
+static void
 ipmi_set_limits(struct sysmon_envsys *sme, envsys_data_t *edata,
 		sysmon_envsys_lim_t *limits, uint32_t *props)
 {
@@ -1548,7 +1455,7 @@ ipmi_set_limits(struct sysmon_envsys *sm
 	return;
 }
 
-void
+static void
 ipmi_get_limits(struct sysmon_envsys *sme, envsys_data_t *edata,
 		sysmon_envsys_lim_t *limits, uint32_t *props)
 {
@@ -1571,7 +1478,7 @@ ipmi_get_limits(struct sysmon_envsys *sm
 	return;
 }
 
-void
+static void
 ipmi_get_sensor_limits(struct ipmi_softc *sc, struct ipmi_sensor *psensor,
 		       sysmon_envsys_lim_t *limits, uint32_t *props)
 {
@@ -1647,7 +1554,7 @@ ipmi_get_sensor_limits(struct ipmi_softc
 	return;
 }
 
-int
+static int
 ipmi_sensor_status(struct ipmi_softc *sc, struct ipmi_sensor *psensor,
     envsys_data_t *edata, uint8_t *reading)
 {
@@ -1707,7 +1614,7 @@ ipmi_sensor_status(struct ipmi_softc *sc
 	return ENVSYS_SVALID;
 }
 
-int
+static int
 read_sensor(struct ipmi_softc *sc, struct ipmi_sensor *psensor)
 {
 	struct sdrtype1	*s1 = (struct sdrtype1 *) psensor->i_sdr;
@@ -1744,7 +1651,7 @@ err:
 	return -1;
 }
 
-int
+static int
 ipmi_sensor_type(int type, int ext_type, int entity)
 {
 	switch (ext_type << 8L | type) {
@@ -1770,7 +1677,7 @@ ipmi_sensor_type(int type, int ext_type,
 }
 
 /* Add Sensor to BSD Sysctl interface */
-int
+static int
 add_sdr_sensor(struct ipmi_softc *sc, uint8_t *psdr)
 {
 	int			rc;
@@ -1812,7 +1719,7 @@ ipmi_is_dupname(char *name)
 	return 0;
 }
 
-int
+static int
 add_child_sensors(struct ipmi_softc *sc, uint8_t *psdr, int count,
     int sensor_num, int sensor_type, int ext_type, int sensor_base,
     int entity, const char *name)
@@ -1889,8 +1796,9 @@ add_child_sensors(struct ipmi_softc *sc,
 	return 1;
 }
 
+#if 0
 /* Interrupt handler */
-int
+static int
 ipmi_intr(void *arg)
 {
 	struct ipmi_softc	*sc = (struct ipmi_softc *)arg;
@@ -1902,9 +1810,10 @@ ipmi_intr(void *arg)
 
 	return 0;
 }
+#endif
 
 /* Handle IPMI Timer - reread sensor values */
-void
+static void
 ipmi_refresh_sensors(struct ipmi_softc *sc)
 {
 
@@ -1920,7 +1829,7 @@ ipmi_refresh_sensors(struct ipmi_softc *
 	}
 }
 
-int
+static int
 ipmi_map_regs(struct ipmi_softc *sc, struct ipmi_attach_args *ia)
 {
 	int error;
@@ -1955,40 +1864,14 @@ ipmi_map_regs(struct ipmi_softc *sc, str
 	return 0;
 }
 
-void
+static void
 ipmi_unmap_regs(struct ipmi_softc *sc)
 {
 	bus_space_unmap(sc->sc_iot, sc->sc_ioh,
 	    sc->sc_if->nregs * sc->sc_if_iospacing);
 }
 
-int
-ipmi_probe(struct ipmi_attach_args *ia)
-{
-	struct dmd_ipmi *pipmi;
-	struct smbtable tbl;
-
-	tbl.cookie = 0;
-
-	if (smbios_find_table(SMBIOS_TYPE_IPMIDEV, &tbl))
-		ipmi_smbios_probe(tbl.tblhdr, ia);
-	else {
-		pipmi = scan_sig(0xC0000L, 0xFFFFFL, 16, 4, "IPMI");
-		/* XXX hack to find Dell PowerEdge 8450 */
-		if (pipmi == NULL) {
-			/* no IPMI found */
-			return 0;
-		}
-
-		/* we have an IPMI signature, fill in attach arg structure */
-		ia->iaa_if_type = pipmi->dmd_if_type;
-		ia->iaa_if_rev = pipmi->dmd_if_rev;
-	}
-
-	return 1;
-}
-
-int
+static int
 ipmi_match(device_t parent, cfdata_t cf, void *aux)
 {
 	struct ipmi_softc sc;
@@ -2150,7 +2033,7 @@ ipmi_thread(void *cookie)
 	kthread_exit(0);
 }
 
-void
+static void
 ipmi_attach(device_t parent, device_t self, void *aux)
 {
 	struct ipmi_softc	*sc = device_private(self);
@@ -2230,7 +2113,7 @@ ipmi_detach(device_t self, int flags)
 	return 0;
 }
 
-int
+static int
 ipmi_watchdog_setmode(struct sysmon_wdog *smwdog)
 {
 	struct ipmi_softc	*sc = smwdog->smw_cookie;
@@ -2280,7 +2163,7 @@ ipmi_watchdog_setmode(struct sysmon_wdog
 	return 0;
 }
 
-int
+static int
 ipmi_watchdog_tickle(struct sysmon_wdog *smwdog)
 {
 	struct ipmi_softc	*sc = smwdog->smw_cookie;
@@ -2292,7 +2175,7 @@ ipmi_watchdog_tickle(struct sysmon_wdog 
 	return 0;
 }
 
-void
+static void
 ipmi_dotickle(struct ipmi_softc *sc)
 {
 	int			rc, len;
@@ -2309,7 +2192,7 @@ ipmi_dotickle(struct ipmi_softc *sc)
 	}
 }
 
-bool
+static bool
 ipmi_suspend(device_t dev, const pmf_qual_t *qual)
 {
 	struct ipmi_softc *sc = device_private(dev);
