Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Aug 2007 14:41:03 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Dag-Erling =?utf-8?q?Sm=C3=B8rgrav?= <des@des.no>
Cc:        freebsd-acpi@freebsd.org, Mike Tancsa <mike@sentex.net>
Subject:   Re: ichwd for ICH8
Message-ID:  <200708131441.04526.jhb@freebsd.org>
In-Reply-To: <86ir7nnpxy.fsf@ds4.des.no>
References:  <46337B06.9080102@ybb.ne.jp> <200708101455.44492.jhb@freebsd.org> <86ir7nnpxy.fsf@ds4.des.no>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 10 August 2007 03:35:05 pm Dag-Erling Sm=C3=B8rgrav wrote:
> John Baldwin <jhb@freebsd.org> writes:
>=20
> > On Friday 10 August 2007 07:05:30 am Dag-Erling Sm=C3=B8rgrav wrote:
> >> Mike Tancsa <mike@sentex.net> writes:
> >> > At 11:55 AM 8/8/2007, Dag-Erling Sm=C3=83=C2=B8rgrav wrote:
> >> > > Mike Tancsa <mike@sentex.net> writes:
> >> > > > Dag-Erling Sm=C3=83=C2=B8rgrav <des@des.no> writes:
> >> > > > > I've tested the driver under -CURRENT on a couple more machine=
s,=20
> > with
> >> > > > > the same result everywhere: it probes and attaches and seems t=
o=20
work
> >> > > > > fine, but the box does not reboot.
> >> > > > kldload ichwd, watchdogd -t 20;killall -9 watchdogd and nada ?
> >> > >
> >> > > Precisely.
> >> > >
> >> > > > I can boot one of my working RELENG_6 boxes on current and test =
if=20
you
> >> > > > think it is some version issue.
> >> > >
> >> > > That would be great!
> >> >
> >> > Very strange indeed.  My RELENG_6 box reboots just fine with your
> >> > version and the version from the PR.  However, the box fails to rebo=
ot
> >> > running with a CURRENT kernel on either version of the watchdog.
> >> >
> >> > On a chance, I tried a trick I used to have to do ages ago in order =
to
> >> > get the driver to work.  I added
> >> >
> >> > debug.acpi.disabled=3D"sysresource"
> >> >
> >> > to /boot/loader.conf
> >> >
> >> > and then it worked on the CURRENT kernel.  i.e. kldload
> >> > /tmp/ichwd.ko,watchdogd -t 20;killall -9=20
> >> > watchdogd.... ~20 sec later, the box reboots running a CURRENT.
> >> > Without that in loader.conf, the box does not reboot.
> >> >
> >> > I _dont_ have to add debug.acpi.disabled=3D"sysresource" on RELENG_6=
 on
> >> > the same box for the ichwd to work as expected.
> >> >
> >> > dmesg.txt attached the for same machine-- running CURRENT, one from=
=20
> > RELENG_6
> >>=20
> >> Let's ask the ACPI folks if they know what's up...  To summarize, the
> >> ichwd driver (both the in-tree version and the new version available
> >> from http://people.freebsd.org/~des/software/) works fine in RELENG_6
> >> but fails silently (i.e. attaches and seems to work, but the machine
> >> does not reboot) in HEAD.
> >>=20
> >> There is one thing I think might be related.  To quote my own comments
> >> from the code:
> >>=20
> >>  * The WDT is programmed through I/O registers in the ACPI I/O space.
> >>  * Intel swears it's always at offset 0x60, so we use that.
> >>=20
> >> But perhaps it isn't?  Or perhaps access to the TCO registers silently
> >> fails due to the ACPI sysresource code?  Perhaps the ichwd driver shou=
ld
> >> access them through ACPI, instead of doing direct I/O?
> >
> > Don't use ~0ul for the end address, but use the real one.  However, the=
=20
> > resource management in this driver is all wrong.  What it should be doi=
ng,=20
is=20
> > to identify as a child of 'isab' and create a child device of 'isab'.  =
It=20
> > should then allocate the appropriate BAR from the 'isab' device (the is=
ab=20
> > driver can "proxy" alloc_resource requests from direct children to its=
=20
bars=20
> > just like the vgapci(4) device) and use that single BAR resource for I/=
O. =20
> > However, just fixing the end address to be appropriate should fix the=20
driver=20
> > for now.
>=20
> So basically, the quick fix is this?
>=20
>         sc->tco_res =3D bus_alloc_resource(dev, SYS_RES_IOPORT, &sc->tco_=
rid,
>             pmbase + TCO_BASE, pmbase + TCO_BASE + TCO_LEN, TCO_LEN,
>             RF_ACTIVE | RF_SHAREABLE);
>=20
> The man page isn't entirely clear on whether end is the last address in
> the range or the first address beyond the range.

Last in the range, so use 'pmbase + TCO_BASE + TCO_LEN - 1'

=2D-=20
John Baldwin



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