Skip site navigation (1)Skip section navigation (2)
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>