Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Mar 2008 15:22:38 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-acpi@freebsd.org, Anish Mistry <amistry@am-productions.biz>
Subject:   Re: kern/121504: [patch] Correctly set hw.acpi.osname on certain machines
Message-ID:  <200803101522.39154.jhb@freebsd.org>
In-Reply-To: <200803101910.m2AJA26c037165@freefall.freebsd.org>
References:  <200803101910.m2AJA26c037165@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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="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
>  > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
>  
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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 16:20:03 -0000
>  > @@ -77,6 +77,9 @@
>  >  ACPI_STATUS
>  >  AcpiOsValidateInterface (char *Interface)
>  >  {
>  > +
>  > +    if (strcmp(Interface, acpi_osname) =3D=3D 0)
>  > +	return (AE_OK);
>  >      return (AE_SUPPORT);
>  >  }
>  
>  I get acpi_osname undeclared on compile.

Try this:

Index: acpivar.h
===================================================================
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
===================================================================
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) == 0)
+	return (AE_OK);
     return (AE_SUPPORT);
 }
 
Index: Osd/OsdTable.c
===================================================================
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

-- 
John Baldwin



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