Date: Mon, 10 Mar 2008 18:23:10 -0400 From: Anish Mistry <amistry@am-productions.biz> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-acpi@freebsd.org Subject: Re: kern/121504: [patch] Correctly set hw.acpi.osname on certain machines Message-ID: <200803101823.21617.amistry@am-productions.biz> In-Reply-To: <200803101753.51267.jhb@freebsd.org> References: <200803101910.m2AJA26c037165@freefall.freebsd.org> <200803101714.11219.amistry@am-productions.biz> <200803101753.51267.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--nextPart2517478.o8S6v1hFMe Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Monday 10 March 2008, John Baldwin wrote: > On Monday 10 March 2008 05:14:02 pm Anish Mistry wrote: > > On Monday 10 March 2008, John Baldwin wrote: > > > On Monday 10 March 2008 03:10:02 pm Anish Mistry wrote: > > > > The following reply was made to PR kern/121504; it has been > > > > noted by GNATS. > > > > > > > > From: Anish Mistry <amistry@am-productions.biz> > > > > To: John Baldwin <jhb@freebsd.org> > > > > Cc: bug-followup@freebsd.org, njl@freebsd.org > > > > Subject: Re: kern/121504: [patch] Correctly set > > > > hw.acpi.osname on certain > > > > > > machines > > > > > > > Date: Mon, 10 Mar 2008 15:09:04 -0400 > > > > > > > > --nextPart11816881.8XfUQkhbdk > > > > Content-Type: text/plain; > > > > charset=3D"iso-8859-1" > > > > Content-Transfer-Encoding: quoted-printable > > > > Content-Disposition: inline > > > > > > > > On Monday 10 March 2008, John Baldwin wrote: > > > > > This is not the correct patch. The _OSI method does not > > > > > return an OS name like _OS. Instead, it is a function > > > > > that returns a boolean (True/False) to say if a given OS > > > > > name is supported (OS name is passed as an argument). The > > > > > proper fix is to say that the osname is supported in the > > > > > AcpiOsValidateInterface() method. Something like this > > > > > should work: > > > > > > > > > > Index: Osd/OsdMemory.c > > > > > =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3= D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D > > > > >3D=3D3 D=3D3D=3D3D=3D3D=3D > > > > > > =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3= D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D > > >=3D3D=3D 3D=3D3D=3D3D=3D > > > > > > > =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D > > > > > > > > > RCS file: /usr/cvs/src/sys/dev/acpica/Osd/OsdMemory.c,v > > > > > retrieving revision 1.15 > > > > > diff -u -r1.15 OsdMemory.c > > > > > --- Osd/OsdMemory.c 22 Mar 2007 18:16:41 -0000 1.15 > > > > > +++ Osd/OsdMemory.c 10 Mar 2008 16:20:03 -0000 > > > > > @@ -77,6 +77,9 @@ > > > > > ACPI_STATUS > > > > > AcpiOsValidateInterface (char *Interface) > > > > > { > > > > > + > > > > > + if (strcmp(Interface, acpi_osname) =3D3D=3D3D 0) > > > > > + return (AE_OK); > > > > > return (AE_SUPPORT); > > > > > } > > > > > > > > I get acpi_osname undeclared on compile. > > > > > > Try this: > > > > > > Index: acpivar.h > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > >=3D=3D=3D=3D RCS file: /usr/cvs/src/sys/dev/acpica/acpivar.h,v > > > retrieving revision 1.108 > > > diff -u -r1.108 acpivar.h > > > --- acpivar.h 9 Oct 2007 07:48:07 -0000 1.108 > > > +++ acpivar.h 10 Mar 2008 19:18:53 -0000 > > > @@ -229,6 +229,11 @@ > > > #define ACPI_IVAR_FLAGS 0x103 > > > > > > /* > > > + * Storage for hw.acpi.osname tunable to override _OS or _OSI. > > > + */ > > > +extern char acpi_osname[]; > > > + > > > +/* > > > * Accessor functions for our ivars. Default value for > > > BUS_READ_IVAR is * (type) 0. The <sys/bus.h> accessor > > > functions don't check return values. */ > > > Index: Osd/OsdMemory.c > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > >=3D=3D=3D=3D RCS file: /usr/cvs/src/sys/dev/acpica/Osd/OsdMemory.c,v > > > retrieving revision 1.15 > > > diff -u -r1.15 OsdMemory.c > > > --- Osd/OsdMemory.c 22 Mar 2007 18:16:41 -0000 1.15 > > > +++ Osd/OsdMemory.c 10 Mar 2008 19:21:38 -0000 > > > @@ -33,13 +33,17 @@ > > > #include <sys/cdefs.h> > > > __FBSDID("$FreeBSD: src/sys/dev/acpica/Osd/OsdMemory.c,v 1.15 > > > 2007/03/22 18:16:41 jkim Exp $"); > > > > > > -#include <contrib/dev/acpica/acpi.h> > > > - > > > +#include <sys/param.h> > > > +#include <sys/bus.h> > > > #include <sys/kernel.h> > > > #include <sys/malloc.h> > > > #include <vm/vm.h> > > > #include <vm/pmap.h> > > > > > > +#include <contrib/dev/acpica/acpi.h> > > > + > > > +#include <dev/acpica/acpivar.h> > > > + > > > MALLOC_DEFINE(M_ACPICA, "acpica", "ACPI CA memory pool"); > > > > > > void * > > > @@ -77,6 +81,9 @@ > > > ACPI_STATUS > > > AcpiOsValidateInterface (char *Interface) > > > { > > > + > > > + if (strcmp(Interface, acpi_osname) =3D=3D 0) > > > + return (AE_OK); > > > return (AE_SUPPORT); > > > } > > > > > > Index: Osd/OsdTable.c > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > >=3D=3D=3D=3D RCS file: /usr/cvs/src/sys/dev/acpica/Osd/OsdTable.c,v > > > retrieving revision 1.12 > > > diff -u -r1.12 OsdTable.c > > > --- Osd/OsdTable.c 22 Mar 2007 18:16:41 -0000 1.12 > > > +++ Osd/OsdTable.c 10 Mar 2008 19:20:39 -0000 > > > @@ -32,6 +32,7 @@ > > > __FBSDID("$FreeBSD: src/sys/dev/acpica/Osd/OsdTable.c,v 1.12 > > > 2007/03/22 18:16:41 jkim Exp $"); > > > > > > #include <sys/param.h> > > > +#include <sys/bus.h> > > > #include <sys/endian.h> > > > #include <sys/kernel.h> > > > #include <sys/linker.h> > > > @@ -39,10 +40,12 @@ > > > #include <contrib/dev/acpica/acpi.h> > > > #include <contrib/dev/acpica/actables.h> > > > > > > +#include <dev/acpica/acpivar.h> > > > + > > > #undef _COMPONENT > > > #define _COMPONENT ACPI_TABLES > > > > > > -static char acpi_osname[128]; > > > +char acpi_osname[128]; > > > TUNABLE_STR("hw.acpi.osname", acpi_osname, > > > sizeof(acpi_osname)); > > > > > > ACPI_STATUS > > > > Ok, this compiles, but doesn't seem to set the override > > correctly. > > > > Here is my asl. > > http://am-productions.biz/docs/smallguy.asl > > > > Basically the entire reason for this is that the code calls the > > external method: > > External (\_SB_.PCI0.GFX0.LCD_.BLNF, MethodObj) > > > > When I press the backlight function keys and they don't do > > anything besides displaying a Namespace lookup error since that > > method is not defined. No one responded to my previous email > > about creating an external method that would get called. Getting > > the right _OSI name set just allows it to go to the fallback code > > that works with acpi_fujitsu. > > > > ACPI Error (psargs-0459): [\_SB_.PCI0.GFX0.LCD_.BLNF] Namespace > > lookup failure, AE_NOT_FOUND > > ACPI Error (psparse-0626): Method parse/execution failed > > [\_GPE._L1C] (Node 0xff ffff00011bd780), AE_NOT_FOUND ACPI > > Exception (evgpe-0687): AE_NOT_FOUND, while evaluating GPE method > > [_L1C] [20070320] > > The problem is that ACPI-CA matches "Windows 2006" internally and > thus sets OSTB to 0x40. The garbage you were using for _OSI must > have made it always fail. You probably will need to just patch > your ASL and/or figure out what BLNF does and implement it.=20 > Perhaps check to see what folks with Linux are seeing with this > laptop as it has the same ACPI-CA code. So there is no way to have that External method call out some C code? =20 I already have to code in my updated acpi_fujitsu module to handle=20 changing of the brightness, I just need it called. I'd like to get=20 this all working so it doesn't require ASL patching. As for the Linux stuff, Google doesn't reveal anything. This laptop=20 is pretty new, it's only been out for about a month. =2D-=20 Anish Mistry amistry@am-productions.biz AM Productions http://am-productions.biz/ --nextPart2517478.o8S6v1hFMe Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEABECAAYFAkfVtM8ACgkQxqA5ziudZT16cgCfV54SbN32CW/1q798b7qZtRbf gKEAn2eEsISa+n5XvuXSlfohH+fVhk4m =JjuD -----END PGP SIGNATURE----- --nextPart2517478.o8S6v1hFMe--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803101823.21617.amistry>