Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Mar 2009 14:57:23 +0100
From:      Harald Schmalzbauer <h.schmalzbauer@OmniLAN.de>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-current@freebsd.org, Mike Tancsa <mike@sentex.net>
Subject:   Re: ichwd on ich9 attach failing ?
Message-ID:  <49BD0943.3000400@OmniLAN.de>
In-Reply-To: <200810011121.21908.jhb@freebsd.org>
References:  <200810011405.m91E5ugg028685@lava.sentex.ca> <200810011121.21908.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
John Baldwin schrieb am 01.10.2008 17:21 (localtime):
> On Wednesday 01 October 2008 10:05:48 am Mike Tancsa wrote:
>> Does anyone have a board with this chipset where ichwd attaches properly ?
>>
>> When I try to load the driver I get
>>
>> ichwd module loaded
>> isab0: found ICH9 or equivalent chipset: Intel ICH9R watchdog timer
>> ichwd0: <Intel ICH9R watchdog timer> on isa0
>> isab0: found ICH9 or equivalent chipset: Intel ICH9R watchdog timer
>> ichwd0: ICH WDT present but disabled in BIOS or hardware
>> device_attach: ichwd0 attach returned 6
>> ppc0: parallel port not found.
>>
>> the ppc0 error seems normal, as on other boards I see the same error 
>> and things attach just fine
>>
>> It is enabled in the BIOS as the box will automatically reboot after 
>> 5 min, since the watchdog is not set by the OS
> 
> Hmm, looks like the test to clear a bit is failing.  Maybe some quality time 
> with the ICH9 datasheet (you should be able to find it on 
> developer.intel.com) can help resolve this.  Here is the relevant code:
> 
> static __inline int
> ichwd_clear_noreboot(struct ichwd_softc *sc)
> {
> 	uint32_t status;
> 	int rc = 0;
> 
> 	/* try to clear the NO_REBOOT bit */
> 	if (sc->ich_version <= 5) {
> 		status = pci_read_config(sc->ich, ICH_GEN_STA, 1);
> 		status &= ~ICH_GEN_STA_NO_REBOOT;
> 		pci_write_config(sc->ich, ICH_GEN_STA, status, 1);
> 		status = pci_read_config(sc->ich, ICH_GEN_STA, 1);
> 		if (status & ICH_GEN_STA_NO_REBOOT)
> 			rc = EIO;
> 	} else {
> 		status = ichwd_read_gcs_4(sc, 0);
> 		status &= ~ICH_GCS_NO_REBOOT;
> 		ichwd_write_gcs_4(sc, 0, status);
> 		status = ichwd_read_gcs_4(sc, 0);
> 		if (status & ICH_GCS_NO_REBOOT)
> 			rc = EIO;
> 	}
> 
> 	if (rc)
> 		device_printf(sc->device,
> 		    "ICH WDT present but disabled in BIOS or hardware\n");
> 
> 	return (rc);
> }

Hello,

has anybody had time to look at it? I have a new server board with ich9 
and can't any longer use the watchdog. Unfortunately I'm not able to 
solve it myself.
Any help appreciated.

Best regards,

-Harry


[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.10 (FreeBSD)

iEYEARECAAYFAkm9CVQACgkQLDqVQ9VXb8hFPACcDpFnOqkyHy1W0eAzNjNqS4ty
MqYAnilm8txsFh2kYSIxKIggTZnrRU+2
=mSaa
-----END PGP SIGNATURE-----

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49BD0943.3000400>