Date: Sat, 29 Mar 2008 19:20:04 GMT From: David Malone <dwmalone@maths.tcd.ie> To: freebsd-i386@FreeBSD.org Subject: Re: i386/106850: powernow0 attach returned 6 Message-ID: <200803291920.m2TJK4RB092725@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR i386/106850; it has been noted by GNATS. From: David Malone <dwmalone@maths.tcd.ie> To: bug-followup@FreeBSD.org Cc: Subject: Re: i386/106850: powernow0 attach returned 6 Date: Sat, 29 Mar 2008 17:43:39 +0000 I see the same thing on a machine that reports a similar BIOS: ACPI APIC Table: <VIAK8 AWRDACPI> I made the patch below to the driver to see what was going on. When I do this, it says: cpu0: <ACPI CPU> on acpi0 powernow0: <Cool`n'Quiet K8> on cpu0 powernow0: STATUS: 0x20200101010 powernow0: STATUS: maxfid: 0x10 powernow0: STATUS: maxvid: 0x00 sig 0 after pn_decode_pst rv = 19 device_attach: powernow0 attach returned 6 This suggests that the driver has failed to find the tables it needs in either the BIOS or ACPI. When I check, there is no _PSS entry in my ACPI tables, so the acpi_perf driver never attaches. I would guess that this is the real problem. David. Index: powernow.c =================================================================== RCS file: /cvs/FreeBSD-CVS/src/sys/i386/cpufreq/powernow.c,v retrieving revision 1.4 diff -u -r1.4 powernow.c --- powernow.c 23 Jan 2007 19:20:30 -0000 1.4 +++ powernow.c 27 Jan 2007 17:42:17 -0000 @@ -673,7 +673,7 @@ return (ENODEV); } - if (bootverbose) { + if (1 || bootverbose) { return (ENODEV); @@ -704,7 +706,7 @@ sc->irt = PN8_PSB_TO_IRT(psb->res1), sc->mvs = PN8_PSB_TO_MVS(psb->res1), sc->low = PN8_PSB_TO_BATT(psb->res1); - if (bootverbose) { + if (1 || bootverbose) { device_printf(dev, "PSB: VST: %d\n", psb->settlingtime); device_printf(dev, "PSB: RVO %x IRT %d " @@ -968,10 +970,12 @@ child = device_find_child(device_get_parent(dev), "acpi_perf", -1); if (child) { rv = pn_decode_acpi(dev, child); + printf("if (child) rv = %d\n", rv); if (rv) rv = pn_decode_pst(dev); } else rv = pn_decode_pst(dev); + printf("after pn_decode_pst rv = %d\n", rv); if (rv != 0) return (ENXIO);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803291920.m2TJK4RB092725>