Works for me on net6501 on i386 GENERIC and GENERIC.MP after a succesfull watchdog fire:
e600pcib0 at pci0 dev 31 function 0 "Intel E600 LPC" rev 0x00: watchdog, reboot on timeout It did fire a bit too early though, my watchdog period was set to 32 seconds and the machine did reset after 26 seconds on my stopwatch. Similarly, with a 60 second period it fired after ~50 seconds. Don't know if it really matters though.... Finally, can you mention that the valid period range is 1-600 seconds? The code does it right by silently lowering a too-high period to 600, but it would be nice to have it mentioned in the manpages too. [msata] # sysctl kern.watchdog.period=1 kern.watchdog.period: 0 -> 1 [msata] # sysctl kern.watchdog.period kern.watchdog.period=1 [msata] # sysctl kern.watchdog.period=10000 kern.watchdog.period: 1 -> 10000 [msata] # sysctl kern.watchdog.period kern.watchdog.period=600 Regards, Mitja P.S. While I was composing this reply some other mails have come through. How about esixoopcib ? :) > -----Original Message----- > From: owner-t...@openbsd.org [mailto:owner-t...@openbsd.org] On Behalf > Of Jonathan Gray > Sent: Thursday, May 24, 2012 7:23 AM > To: Matt Dainty > Cc: tech@openbsd.org > Subject: Re: Intel Atom E600 watchdog(4) support > > As a general policy drivers do not have numbers in their name, > so it will have to be renamed. > > I'll have a look into trying it on a net6501 I have here with i386. > > On Wed, May 23, 2012 at 04:52:03PM -0400, Matt Dainty wrote: > > Attached are some patches that add support for the watchdog device on > > boards based on the Intel Atom E600 series such as the Soekris > net6501. > > > > Based on existing drivers such as amdpcib(4), ichpcib(4) and > ichwdt(4) > > I've created an e600pcib(4) to override the standard pcib(4) which > can > > then access the watchdog device. > > > > Here's the original dmesg: > > > > ---8<--- > > pcib0 at pci0 dev 31 function 0 "Intel E600 LPC" rev 0x00 > > isa0 at pcib0 > > ---8<--- > > > > Here's with my changes: > > > > ---8<--- > > e600pcib0 at pci0 dev 31 function 0 "Intel E600 LPC" rev 0x00: > watchdog > > isa0 at e600pcib0 > > ---8<--- > > > > I tested the watchdog by setting kern.watchdog.period to 60 and then > > breaking into ddb and starting a stopwatch and timing until my > net6501 > > resets, it take near enough to 60 seconds that I'm happy it's > working. > > > > On a watchdog-triggered reboot, I've done similar to ichwdt(4): > > > > ---8<--- > > e600pcib0 at pci0 dev 31 function 0 "Intel E600 LPC" rev 0x00: > watchdog, reboot on timeout > > isa0 at e600pcib0 > > ---8<--- > > > > I've included the driver itself, man pages, changes to GENERIC and > the > > various infrastructure files. > > > > I'm using it with GENERIC.MP on amd64 and I compile tested it on > i386. > > > > Any comments? > > > > Matt > > > > --- /dev/null Wed May 23 21:01:50 2012 > > +++ sys/dev/pci/e600pcib.c Wed May 23 21:00:44 2012 > > @@ -0,0 +1,220 @@ > > +/* $OpenBSD$ */ > > + > > +/* > > + * Copyright (c) 2012 Matt Dainty <m...@bodgit-n-scarper.com> > > + * > > + * Permission to use, copy, modify, and distribute this software for > any > > + * purpose with or without fee is hereby granted, provided that the > above > > + * copyright notice and this permission notice appear in all copies. > > + * > > + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL > WARRANTIES > > + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > > + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE > LIABLE FOR > > + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY > DAMAGES > > + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, > WHETHER IN > > + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, > ARISING OUT > > + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > + */ > > + > > +/* > > + * Intel Atom E600 series LPC bridge also containing watchdog > > + */ > > + > > +#include <sys/param.h> > > +#include <sys/systm.h> > > +#include <sys/device.h> > > + > > +#include <machine/bus.h> > > + > > +#include <dev/pci/pcireg.h> > > +#include <dev/pci/pcivar.h> > > +#include <dev/pci/pcidevs.h> > > + > > +#define E600_LPC_SMBA 0x40 /* SMBus Base Address */ > > +#define E600_LPC_GBA 0x44 /* GPIO Base Address */ > > +#define E600_LPC_WDTBA 0x84 /* WDT Base Address */ > > + > > +#define E600_WDT_SIZE 64 /* I/O region size */ > > +#define E600_WDT_PV1 0x00 /* Preload Value 1 > Register */ > > +#define E600_WDT_PV2 0x04 /* Preload Value 2 > Register */ > > +#define E600_WDT_RR0 0x0c /* Reload Register 0 */ > > +#define E600_WDT_RR1 0x0d /* Reload Register 1 */ > > +#define E600_WDT_RR1_RELOAD (1 << 0) /* WDT Reload Flag */ > > +#define E600_WDT_RR1_TIMEOUT (1 << 1) /* WDT Timeout Flag */ > > +#define E600_WDT_WDTCR 0x10 /* WDT Configuration > Register */ > > +#define E600_WDT_WDTCR_TIMEOUT (1 << 5) /* WDT Timeout Output > Enable */ > > +#define E600_WDT_WDTCR_ENABLE (1 << 4) /* WDT Reset Enable */ > > +#define E600_WDT_WDTCR_RESET (1 << 3) /* WDT Reset Select */ > > +#define E600_WDT_WDTCR_PRE (1 << 2) /* WDT Prescalar Select > */ > > +#define E600_WDT_DCR 0x14 /* Down Counter Register > */ > > +#define E600_WDT_WDTLR 0x18 /* WDT Lock Register */ > > +#define E600_WDT_WDTLR_LOCK (1 << 0) /* Watchdog Timer Lock > */ > > +#define E600_WDT_WDTLR_ENABLE (1 << 1) /* Watchdog Timer Enable > */ > > +#define E600_WDT_WDTLR_TIMEOUT (1 << 2) /* WDT Timeout > Configuration */ > > + > > +struct e600pcib_softc { > > + struct device sc_dev; > > + > > + /* Watchdog interface */ > > + bus_space_tag_t sc_wdt_iot; > > + bus_space_handle_t sc_wdt_ioh; > > + > > + int sc_wdt_period; > > +}; > > + > > +struct cfdriver e600pcib_cd = { > > + NULL, "e600pcib", DV_DULL > > +}; > > + > > +int e600pcib_match(struct device *, void *, void *); > > +void e600pcib_attach(struct device *, struct device *, void *); > > + > > +int e600pcib_wdt_cb(void *, int); > > + > > +struct cfattach e600pcib_ca = { > > + sizeof(struct e600pcib_softc), e600pcib_match, e600pcib_attach > > +}; > > + > > +/* from arch/<*>/pci/pcib.c */ > > +void pcibattach(struct device *parent, struct device *self, void > *aux); > > + > > +const struct pci_matchid e600pcib_devices[] = { > > + { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_E600_LPC } > > +}; > > + > > +#ifndef SMALL_KERNEL > > +static __inline void > > +e600pcib_wdt_unlock(struct e600pcib_softc *sc) > > +{ > > + /* Register unlocking sequence */ > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, E600_WDT_RR0, > 0x80); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, E600_WDT_RR0, > 0x86); > > +} > > +#endif /* !SMALL_KERNEL */ > > + > > +int > > +e600pcib_match(struct device *parent, void *match, void *aux) > > +{ > > + if (pci_matchbyid((struct pci_attach_args *)aux, > e600pcib_devices, > > + sizeof(e600pcib_devices) / sizeof(e600pcib_devices[0]))) > > + return (2); > > + > > + return (0); > > +} > > + > > +void > > +e600pcib_attach(struct device *parent, struct device *self, void > *aux) > > +{ > > +#ifndef SMALL_KERNEL > > + struct e600pcib_softc *sc = (struct e600pcib_softc *)self; > > + struct pci_attach_args *pa = aux; > > + u_int32_t reg, wdtbase; > > + > > + /* Map Watchdog I/O space */ > > + reg = pci_conf_read(pa->pa_pc, pa->pa_tag, E600_LPC_WDTBA); > > + wdtbase = reg & 0xffff; > > + sc->sc_wdt_iot = pa->pa_iot; > > + if (reg & (1 << 31) && wdtbase) { > > + if (PCI_MAPREG_IO_ADDR(wdtbase) == 0 || > > + bus_space_map(sc->sc_wdt_iot, > PCI_MAPREG_IO_ADDR(wdtbase), > > + E600_WDT_SIZE, 0, &sc->sc_wdt_ioh)) { > > + printf(": can't map watchdog I/O space"); > > + goto corepcib; > > + } > > + printf(": watchdog", wdtbase); > > + > > + /* Check for reboot on timeout */ > > + reg = bus_space_read_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_RR1); > > + if (reg & E600_WDT_RR1_TIMEOUT) { > > + printf(", reboot on timeout"); > > + > > + /* Clear timeout bit */ > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_RR1, E600_WDT_RR1_TIMEOUT); > > + } > > + > > + /* Check it's not locked already */ > > + reg = bus_space_read_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_WDTLR); > > + if (reg & E600_WDT_WDTLR_LOCK) { > > + printf(", locked"); > > + goto corepcib; > > + } > > + > > + /* Disable watchdog */ > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_WDTLR, 0); > > + sc->sc_wdt_period = 0; > > + > > + /* Register new watchdog */ > > + wdog_register(sc, e600pcib_wdt_cb); > > + } > > + > > +corepcib: > > +#endif /* !SMALL_KERNEL */ > > + /* Provide core pcib(4) functionality */ > > + pcibattach(parent, self, aux); > > +} > > + > > +#ifndef SMALL_KERNEL > > +int > > +e600pcib_wdt_cb(void *arg, int period) > > +{ > > + struct e600pcib_softc *sc = arg; > > + u_int32_t preload; > > + > > + if (period == 0) { > > + if (sc->sc_wdt_period != 0) { > > + /* Disable watchdog, with a reload before for safety > */ > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_RR1, E600_WDT_RR1_RELOAD); > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_WDTLR, 0); > > + } > > + } else { > > + /* 600 seconds is the maximum supported timeout value */ > > + if (period > 600) > > + period = 600; > > + if (sc->sc_wdt_period != period) { > > + /* Set new timeout */ > > + preload = (period * 33000000) >> 15; > > + preload--; > > + > > + /* Set watchdog to perform a cold reset toggling the > > + * GPIO pin and the timer set to 1ms-10m resolution > > + */ > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_WDTCR, E600_WDT_WDTCR_ENABLE); > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_4(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_PV1, 0); > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_4(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_PV2, preload); > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_RR1, E600_WDT_RR1_RELOAD); > > + } > > + if (sc->sc_wdt_period == 0) { > > + /* Enable watchdog */ > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_WDTLR, E600_WDT_WDTLR_ENABLE); > > + } else { > > + /* Reset timer */ > > + e600pcib_wdt_unlock(sc); > > + bus_space_write_1(sc->sc_wdt_iot, sc->sc_wdt_ioh, > > + E600_WDT_RR1, E600_WDT_RR1_RELOAD); > > + } > > + } > > + sc->sc_wdt_period = period; > > + > > + return (period); > > +} > > +#endif /* !SMALL_KERNEL */ > > --- /dev/null Wed May 23 21:02:08 2012 > > +++ share/man/man4/man4.i386/e600pcib.4 Wed May 23 20:37:44 2012 > > @@ -0,0 +1,55 @@ > > +.\" $OpenBSD$ > > +.\" > > +.\" Copyright (c) 2012 Matt Dainty <m...@bodgit-n-scarper.com> > > +.\" > > +.\" Permission to use, copy, modify, and distribute this software > for any > > +.\" purpose with or without fee is hereby granted, provided that the > above > > +.\" copyright notice and this permission notice appear in all > copies. > > +.\" > > +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL > WARRANTIES > > +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > > +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE > LIABLE FOR > > +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY > DAMAGES > > +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER > IN AN > > +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING > OUT OF > > +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > +.\" > > +.Dd $Mdocdate$ > > +.Dt E600PCIB 4 i386 > > +.Os > > +.Sh NAME > > +.Nm e600pcib > > +.Nd Intel Atom E600 series LPC bridge and watchdog > > +.Sh SYNOPSIS > > +.Cd "e600pcib* at pci?" > > +.Cd "isa* at e600pcib?" > > +.Sh DESCRIPTION > > +The > > +.Nm > > +driver provides support for the Intel Atom E600 series LPC bridge > and > > +provides the standard > > +.Xr watchdog 4 > > +interface to the watchdog timer and may be used with > > +.Xr watchdogd 8 . > > +The watchdog timer can be configured via > > +.Xr sysctl 8 . > > +.Pp > > +Once the watchdog timer resets the CPU, the driver reports it on the > > +next boot displaying the ``reboot on timeout'' message in the dmesg. > > +.Sh SEE ALSO > > +.Xr intro 4 , > > +.Xr isa 4 , > > +.Xr pci 4 , > > +.Xr watchdog 4 > > +.Xr sysctl 8 > > +.Xr watchdogd 8 > > +.Sh HISTORY > > +The > > +.Nm > > +driver first appeared in > > +.Ox 5.2 . > > +.Sh AUTHORS > > +The > > +.Nm > > +driver was written by > > +.An Matt Dainty Aq m...@bodgit-n-scarper.com . > > --- /dev/null Wed May 23 21:02:17 2012 > > +++ share/man/man4/man4.amd64/e600pcib.4 Wed May 23 20:53:39 2012 > > @@ -0,0 +1,55 @@ > > +.\" $OpenBSD$ > > +.\" > > +.\" Copyright (c) 2012 Matt Dainty <m...@bodgit-n-scarper.com> > > +.\" > > +.\" Permission to use, copy, modify, and distribute this software > for any > > +.\" purpose with or without fee is hereby granted, provided that the > above > > +.\" copyright notice and this permission notice appear in all > copies. > > +.\" > > +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL > WARRANTIES > > +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > > +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE > LIABLE FOR > > +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY > DAMAGES > > +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER > IN AN > > +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING > OUT OF > > +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > > +.\" > > +.Dd $Mdocdate$ > > +.Dt E600PCIB 4 amd64 > > +.Os > > +.Sh NAME > > +.Nm e600pcib > > +.Nd Intel Atom E600 series LPC bridge and watchdog > > +.Sh SYNOPSIS > > +.Cd "e600pcib* at pci?" > > +.Cd "isa* at e600pcib?" > > +.Sh DESCRIPTION > > +The > > +.Nm > > +driver provides support for the Intel Atom E600 series LPC bridge > and > > +provides the standard > > +.Xr watchdog 4 > > +interface to the watchdog timer and may be used with > > +.Xr watchdogd 8 . > > +The watchdog timer can be configured via > > +.Xr sysctl 8 . > > +.Pp > > +Once the watchdog timer resets the CPU, the driver reports it on the > > +next boot displaying the ``reboot on timeout'' message in the dmesg. > > +.Sh SEE ALSO > > +.Xr intro 4 , > > +.Xr isa 4 , > > +.Xr pci 4 , > > +.Xr watchdog 4 > > +.Xr sysctl 8 > > +.Xr watchdogd 8 > > +.Sh HISTORY > > +The > > +.Nm > > +driver first appeared in > > +.Ox 5.2 . > > +.Sh AUTHORS > > +The > > +.Nm > > +driver was written by > > +.An Matt Dainty Aq m...@bodgit-n-scarper.com . > > --- share/man/man4/man4.i386/Makefile.orig Wed May 23 21:03:38 2012 > > +++ share/man/man4/man4.i386/Makefile Wed May 23 21:04:33 2012 > > @@ -2,9 +2,9 @@ > > # from: @(#)Makefile 5.1 (Berkeley) 2/12/91 > > # Id: Makefile,v 1.4 1995/12/14 05:41:38 deraadt Exp $ > > > > -MAN= amdpcib.4 amdmsr.4 apm.4 autoconf.4 bios.4 cpu.4 elansc.4 \ > > - esm.4 geodesc.4 glxpcib.4 glxsb.4 gscpcib.4 gscpm.4 gus.4 ie.4 \ > > - ichpcib.4 intro.4 ioapic.4 \ > > +MAN= amdpcib.4 amdmsr.4 apm.4 autoconf.4 bios.4 cpu.4 e600pcib.4 > \ > > + elansc.4 esm.4 geodesc.4 glxpcib.4 glxsb.4 gscpcib.4 gscpm.4 \ > > + gus.4 ie.4 ichpcib.4 intro.4 ioapic.4 \ > > joy.4 le.4 lms.4 mem.4 mms.4 mpbios.4 mtrr.4 npx.4 nvram.4 \ > > pas.4 pcibios.4 pctr.4 piixpcib.4 sb.4 \ > > sea.4 uha.4 wds.4 wdt.4 wss.4 > > --- share/man/man4/man4.amd64/Makefile.orig Wed May 23 21:04:42 2012 > > +++ share/man/man4/man4.amd64/Makefile Wed May 23 21:05:12 2012 > > @@ -1,7 +1,7 @@ > > # $OpenBSD: Makefile,v 1.14 2011/03/18 12:40:29 deraadt Exp $ > > > > -MAN= amdpcib.4 apm.4 autoconf.4 bios.4 cpu.4 intro.4 ioapic.4 \ > > - mem.4 mpbios.4 nvram.4 mtrr.4 pctr.4 > > +MAN= amdpcib.4 apm.4 autoconf.4 bios.4 cpu.4 e600pcib.4 intro.4 > \ > > + ioapic.4 mem.4 mpbios.4 nvram.4 mtrr.4 pctr.4 > > > > MLINKS+= mem.4 kmem.4 > > MANSUBDIR=amd64 > > --- sys/arch/i386/conf/files.i386.orig Wed May 23 18:18:01 2012 > > +++ sys/arch/i386/conf/files.i386 Wed May 23 18:20:09 2012 > > @@ -147,7 +147,7 @@ > > # PCI-ISA bridge chipsets > > device pcib: isabus > > attach pcib at pci > > -file arch/i386/pci/pcib.c pcib | ichpcib | gscpcib | > glxpcib | piixpcib | amdpcib > > +file arch/i386/pci/pcib.c pcib | ichpcib | gscpcib | > glxpcib | piixpcib | amdpcib | e600pcib > > > > # Intel ICHx/ICHx-M LPC bridges > > device ichpcib: isabus > > @@ -168,6 +168,11 @@ > > device amdpcib: isabus > > attach amdpcib at pci > > file dev/pci/amdpcib.c amdpcib > > + > > +# Intel Atom E600 LPC bridge > > +device e600pcib: isabus > > +attach e600pcib at pci > > +file dev/pci/e600pcib.c e600pcib > > > > device hme: ether, ifnet, mii, ifmedia > > file dev/ic/hme.c hme > > --- sys/arch/i386/conf/GENERIC.orig Wed May 23 18:17:57 2012 > > +++ sys/arch/i386/conf/GENERIC Wed May 23 18:19:26 2012 > > @@ -72,6 +72,7 @@ > > isa0 at mainbus0 > > isa0 at pcib? > > isa0 at amdpcib? > > +isa0 at e600pcib? > > isa0 at ichpcib? > > isa0 at piixpcib? > > isa0 at gscpcib? > > @@ -85,6 +86,7 @@ > > pci* at pchb? > > pcib* at pci? # PCI-ISA bridge > > amdpcib* at pci? # AMD 8111 LPC bridge > > +e600pcib* at pci? # Intel Atom E600 LPC bridge > > ichpcib* at pci? # Intel ICHx/ICHx-M LPC bridges > > piixpcib* at pci? # Intel PIIX4 PCI-ISA bridge > > gscpcib* at pci? # NS Geode SC1100 PCI-ISA bridge > > --- sys/arch/amd64/conf/files.amd64.orig Wed May 23 14:16:11 2012 > > +++ sys/arch/amd64/conf/files.amd64 Wed May 23 14:17:00 2012 > > @@ -147,12 +147,17 @@ > > # PCI-ISA bridges > > device pcib: isabus > > attach pcib at pci > > -file arch/amd64/pci/pcib.c pcib | amdpcib > > +file arch/amd64/pci/pcib.c pcib | amdpcib | > e600pcib > > > > # AMD 8111 LPC bridge > > device amdpcib: isabus > > attach amdpcib at pci > > file dev/pci/amdpcib.c amdpcib > > + > > +# Intel Atom E600 LPC bridge > > +device e600pcib: isabus > > +attach e600pcib at pci > > +file dev/pci/e600pcib.c e600pcib > > > > device aapic > > attach aapic at pci > > --- sys/arch/amd64/conf/GENERIC.orig Wed May 23 12:29:16 2012 > > +++ sys/arch/amd64/conf/GENERIC Wed May 23 14:17:18 2012 > > @@ -34,6 +34,7 @@ > > isa0 at mainbus0 > > isa0 at pcib? > > isa0 at amdpcib? > > +isa0 at e600pcib? > > pci* at mainbus0 > > > > acpi0 at bios0 > > @@ -73,6 +74,7 @@ > > pci* at pchb? > > pcib* at pci? # PCI-ISA bridge > > amdpcib* at pci? # AMD 8111 LPC bridge > > +e600pcib* at pci? # Intel Atom E600 LPC bridge > > kate* at pci? # AMD K8 temperature sensor > > km* at pci? # AMD K10 temperature sensor > > amas* at pci? disable # AMD memory configuration