Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Sep 2009 22:05:17 GMT
From:      Marko Zec <zec@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 168520 for review
Message-ID:  <200909132205.n8DM5HsA091034@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=168520

Change 168520 by zec@zec_tpx32 on 2009/09/13 22:04:23

	IFC @ 168505 part two

Affected files ...

.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_ioctl.c#27 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/debugger/dbcmds.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/debugger/dbdisply.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/debugger/dbexec.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsfield.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsmethod.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsmthdat.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsobject.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dswload.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/events/evgpe.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/events/evgpeblk.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/events/evrgnini.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/executer/exconfig.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/executer/exfield.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/executer/exfldio.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/executer/exstorob.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/executer/exutils.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/hardware/hwgpe.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/hardware/hwregs.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/hardware/hwsleep.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/hardware/hwtimer.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/hardware/hwxface.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acconfig.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acdebug.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acdisasm.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acglobal.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/achware.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acinterp.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/aclocal.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acmacros.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acnamesp.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acobject.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acparser.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acpixf.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acpredef.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/actbl.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/actbl1.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/actypes.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/acutils.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/include/amlcode.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/namespace/nsalloc.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/namespace/nseval.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/namespace/nsinit.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/namespace/nsload.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/namespace/nspredef.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/namespace/nsxfeval.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/namespace/nsxfname.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/parser/psloop.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/parser/psxface.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/tables/tbutils.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/tools/acpiexec/aecommon.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/utilities/uteval.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/utilities/utglobal.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/utilities/utinit.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/utilities/utmisc.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/utilities/utxface.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpi.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpi_cpu.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpi_pcib_acpi.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpivar.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/agp/agp_i810.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/amdtemp/amdtemp.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_pciids.h#9 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/r600_blit.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/e1000/if_em.c#17 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/e1000/if_igb.c#14 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ichwd/ichwd.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ixgbe/ixgbe.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/pci/pci_user.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/pci/pcireg.h#9 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/pci/pcivar.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/daemon/daemon_saver.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/scterm-teken.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/syscons.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/syscons.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/fifofs/fifo_vnops.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/acpica/acpi_machdep.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/cpufreq/hwpstate.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/i386/identcpu.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/i386/msi.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/i386/pmap.c#18 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/ibcs2/ibcs2_proto.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/include/specialreg.h#10 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/include/xen/xen-os.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/linux/linux_proto.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/xen/locore.s#5 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/xen/pmap.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_event.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_shutdown.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_sig.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_timeout.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/subr_bus.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/sys_pipe.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/tty.c#30 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/tty_pts.c#17 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/uipc_mqueue.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/uipc_socket.c#35 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_aio.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_subr.c#21 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/acpi/acpi/Makefile#5 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/dtrace/lockstat/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/net/bpf.c#24 integrate
.. //depot/projects/vimage-commit2/src/sys/netgraph/bluetooth/include/ng_btsocket_rfcomm.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in_mcast.c#29 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_mroute.c#22 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/sctp_pcb.c#22 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6.c#30 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_ifattach.c#36 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_proto.c#28 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_input.c#40 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6.c#42 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6.h#13 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6_nbr.c#29 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6_rtr.c#33 integrate
.. //depot/projects/vimage-commit2/src/sys/netsmb/smb_dev.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/pci/intpm.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/pci/intpmreg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/powerpc/conf/GENERIC#15 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/ofw_pci.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/psycho.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/schizo.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/jbusppm.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/bus.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/teken/teken.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/teken/teken.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/teken/teken_demo.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/teken/teken_subr.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/teken/teken_subr_compat.h#2 integrate

Differences ...

==== //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c#4 (text+ko) ====

@@ -341,7 +341,7 @@
 					zap->zap_m.zap_num_entries++;
 				else {
 					printf("ZFS WARNING: Duplicated ZAP "
-					    "entry detected (%s).",
+					    "entry detected (%s).\n",
 					    mze->mze_name);
 				}
 				zap_name_free(zn);

==== //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#9 (text+ko) ====

@@ -1114,6 +1114,20 @@
 	znode_t		*zp;
 	int 		err;
 
+	/*
+	 * XXXPJD: zfs_zget() can't operate on virtual entires like .zfs/ or
+	 * .zfs/snapshot/ directories, so for now just return EOPNOTSUPP.
+	 * This will make NFS to fall back to using READDIR instead of
+	 * READDIRPLUS.
+	 * Also snapshots are stored in AVL tree, but based on their names,
+	 * not inode numbers, so it will be very inefficient to iterate
+	 * over all snapshots to find the right one.
+	 * Note that OpenSolaris READDIRPLUS implementation does LOOKUP on
+	 * d_name, and not VGET on d_fileno as we do.
+	 */
+	if (ino == ZFSCTL_INO_ROOT || ino == ZFSCTL_INO_SNAPDIR)
+		return (EOPNOTSUPP);
+
 	ZFS_ENTER(zfsvfs);
 	err = zfs_zget(zfsvfs, ino, &zp);
 	if (err == 0 && zp->z_unlinked) {
@@ -1168,11 +1182,10 @@
 	ZFS_ENTER(zfsvfs);
 
 	/*
-	 * On FreeBSD we are already called with snapshot's mount point
-	 * and not the mount point of its parent.
+	 * On FreeBSD we can get snapshot's mount point or its parent file
+	 * system mount point depending if snapshot is already mounted or not.
 	 */
-#ifndef __FreeBSD__
-	if (fidp->fid_len == LONG_FID_LEN) {
+	if (zfsvfs->z_parent == zfsvfs && fidp->fid_len == LONG_FID_LEN) {
 		zfid_long_t	*zlfid = (zfid_long_t *)fidp;
 		uint64_t	objsetid = 0;
 		uint64_t	setgen = 0;
@@ -1190,7 +1203,6 @@
 			return (EINVAL);
 		ZFS_ENTER(zfsvfs);
 	}
-#endif
 
 	if (fidp->fid_len == SHORT_FID_LEN || fidp->fid_len == LONG_FID_LEN) {
 		zfid_short_t	*zfid = (zfid_short_t *)fidp;

==== //depot/projects/vimage-commit2/src/sys/compat/linux/linux_ioctl.c#27 (text+ko) ====

@@ -29,7 +29,7 @@
 #include "opt_compat.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.157 2009/08/28 22:51:07 zec Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.158 2009/09/13 21:30:18 zec Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -2152,6 +2152,7 @@
 	/* handle the 'request buffer size' case */
 	if (ifc.ifc_buf == PTROUT(NULL)) {
 		ifc.ifc_len = 0;
+		IFNET_RLOCK();
 		TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
 			TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
 				struct sockaddr *sa = ifa->ifa_addr;
@@ -2159,6 +2160,7 @@
 					ifc.ifc_len += sizeof(ifr);
 			}
 		}
+		IFNET_RUNLOCK();
 		error = copyout(&ifc, uifc, sizeof(ifc));
 		CURVNET_RESTORE();
 		return (error);

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/debugger/dbcmds.c#2 (text+ko) ====

@@ -500,17 +500,16 @@
     void                    *Context,
     void                    **ReturnValue)
 {
-    ACPI_NAMESPACE_NODE         *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
-    UINT32                      *Count = (UINT32 *) Context;
-    const ACPI_PREDEFINED_INFO  *Predefined;
-    ACPI_BUFFER                 ReturnObj;
-    ACPI_STATUS                 Status;
-    char                        *Pathname;
-    ACPI_BUFFER             Buffer;
+    ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
+    UINT32                  *Count = (UINT32 *) Context;
+    ACPI_BUFFER             ReturnObj;
+    ACPI_STATUS             Status;
+    char                    *Pathname;
     UINT32                  i;
     ACPI_DEVICE_INFO        *ObjInfo;
     ACPI_OBJECT_LIST        ParamObjects;
     ACPI_OBJECT             Params[ACPI_METHOD_NUM_ARGS];
+    const ACPI_PREDEFINED_INFO *Predefined;
 
 
     Predefined = AcpiNsCheckForPredefinedName (Node);
@@ -532,8 +531,7 @@
 
     /* Get the object info for number of method parameters */
 
-    Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
-    Status = AcpiGetObjectInfo (ObjHandle, &Buffer);
+    Status = AcpiGetObjectInfo (ObjHandle, &ObjInfo);
     if (ACPI_FAILURE (Status))
     {
         return (Status);
@@ -542,7 +540,6 @@
     ParamObjects.Pointer = NULL;
     ParamObjects.Count   = 0;
 
-    ObjInfo = Buffer.Pointer;
     if (ObjInfo->Type == ACPI_TYPE_METHOD)
     {
 
@@ -558,7 +555,7 @@
         ParamObjects.Count       = ObjInfo->ParamCount;
     }
 
-    ACPI_FREE (Buffer.Pointer);
+    ACPI_FREE (ObjInfo);
 
     ReturnObj.Pointer = NULL;
     ReturnObj.Length = ACPI_ALLOCATE_BUFFER;
@@ -1997,12 +1994,17 @@
     ACPI_NAMESPACE_NODE     *Node = (ACPI_NAMESPACE_NODE *) ObjHandle;
     ACPI_STATUS             Status;
     ACPI_BUFFER             Buffer;
-    ACPI_INTEGER            ADR;
-    ACPI_DEVICE_ID          Id;
-    ACPI_COMPATIBLE_ID_LIST *Cid;
     ACPI_NAMESPACE_NODE     *TempNode;
+    ACPI_DEVICE_INFO        *Info;
+    UINT32                  i;
 
 
+    if ((Node->Type != ACPI_TYPE_DEVICE) &&
+        (Node->Type != ACPI_TYPE_PROCESSOR))
+    {
+        return (AE_OK);
+    }
+
     /* Exit if there is no _PRT under this device */
 
     Status = AcpiGetHandle (Node, METHOD_NAME__PRT,
@@ -2022,57 +2024,70 @@
         return (AE_OK);
     }
 
+    Status = AcpiGetObjectInfo (ObjHandle, &Info);
+    if (ACPI_FAILURE (Status))
+    {
+        return (AE_OK);
+    }
+
     /* Display the full path */
 
-    AcpiOsPrintf ("%-32s", (char *) Buffer.Pointer);
+    AcpiOsPrintf ("%-32s Type %X", (char *) Buffer.Pointer, Node->Type);
     ACPI_FREE (Buffer.Pointer);
 
+    if (Info->Flags & ACPI_PCI_ROOT_BRIDGE)
+    {
+        AcpiOsPrintf ("  - Is PCI Root Bridge");
+    }
+    AcpiOsPrintf ("\n");
+
     /* _PRT info */
 
-    AcpiOsPrintf ("_PRT=%p", TempNode);
+    AcpiOsPrintf ("_PRT: %p\n", TempNode);
 
-    /* Get the _ADR value */
+    /* Dump _ADR, _HID, _UID, _CID */
 
-    Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, &ADR);
-    if (ACPI_FAILURE (Status))
+    if (Info->Valid & ACPI_VALID_ADR)
     {
-        AcpiOsPrintf (" No _ADR      ");
+        AcpiOsPrintf ("_ADR: %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Info->Address));
     }
     else
     {
-        AcpiOsPrintf (" _ADR=%8.8X", (UINT32) ADR);
+        AcpiOsPrintf ("_ADR: <Not Present>\n");
     }
 
-    /* Get the _HID if present */
+    if (Info->Valid & ACPI_VALID_HID)
+    {
+        AcpiOsPrintf ("_HID: %s\n", Info->HardwareId.String);
+    }
+    else
+    {
+        AcpiOsPrintf ("_HID: <Not Present>\n");
+    }
 
-    Status = AcpiUtExecute_HID (Node, &Id);
-    if (ACPI_SUCCESS (Status))
+    if (Info->Valid & ACPI_VALID_UID)
     {
-        AcpiOsPrintf (" _HID=%s", Id.Value);
+        AcpiOsPrintf ("_UID: %s\n", Info->UniqueId.String);
     }
     else
     {
-        AcpiOsPrintf ("             ");
+        AcpiOsPrintf ("_UID: <Not Present>\n");
     }
 
-    /* Get the _UID if present */
-
-    Status = AcpiUtExecute_UID (Node, &Id);
-    if (ACPI_SUCCESS (Status))
+    if (Info->Valid & ACPI_VALID_CID)
     {
-        AcpiOsPrintf (" _UID=%s", Id.Value);
+        for (i = 0; i < Info->CompatibleIdList.Count; i++)
+        {
+            AcpiOsPrintf ("_CID: %s\n",
+                Info->CompatibleIdList.Ids[i].String);
+        }
     }
-
-    /* Get the _CID if present */
-
-    Status = AcpiUtExecute_CID (Node, &Cid);
-    if (ACPI_SUCCESS (Status))
+    else
     {
-        AcpiOsPrintf (" _CID=%s", Cid->Id[0].Value);
-        ACPI_FREE (Cid);
+        AcpiOsPrintf ("_CID: <Not Present>\n");
     }
 
-    AcpiOsPrintf ("\n");
+    ACPI_FREE (Info);
     return (AE_OK);
 }
 
@@ -2095,7 +2110,7 @@
 {
     /* Search all nodes in namespace */
 
-    (void) AcpiWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX,
+    (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX,
                     AcpiDbBusWalk, NULL, NULL);
 }
 

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/debugger/dbdisply.c#2 (text+ko) ====

@@ -682,42 +682,52 @@
     char                    *ObjectArg)
 {
     ACPI_HANDLE             Handle;
-    ACPI_BUFFER             Buffer;
     ACPI_DEVICE_INFO        *Info;
     ACPI_STATUS             Status;
     UINT32                  i;
 
 
     Handle = ACPI_TO_POINTER (ACPI_STRTOUL (ObjectArg, NULL, 16));
-    Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
 
-    Status = AcpiGetObjectInfo (Handle, &Buffer);
-    if (ACPI_SUCCESS (Status))
+    Status = AcpiGetObjectInfo (Handle, &Info);
+    if (ACPI_FAILURE (Status))
     {
-        Info = Buffer.Pointer;
-        AcpiOsPrintf (
-            "S1D-%2.2X S2D-%2.2X S3D-%2.2X S4D-%2.2X    HID: %s, ADR: %8.8X%8.8X, Status %8.8X\n",
-            Info->HighestDstates[0], Info->HighestDstates[1],
-            Info->HighestDstates[2], Info->HighestDstates[3],
-            Info->HardwareId.Value,
-            ACPI_FORMAT_UINT64 (Info->Address),
-            Info->CurrentStatus);
+        AcpiOsPrintf ("Could not get object info, %s\n",
+            AcpiFormatException (Status));
+        return;
+    }
+
+    AcpiOsPrintf ("ADR: %8.8X%8.8X, STA: %8.8X, Flags: %X\n",
+        ACPI_FORMAT_UINT64 (Info->Address),
+        Info->CurrentStatus, Info->Flags);
+
+    AcpiOsPrintf ("S1D-%2.2X S2D-%2.2X S3D-%2.2X S4D-%2.2X\n",
+        Info->HighestDstates[0], Info->HighestDstates[1],
+        Info->HighestDstates[2], Info->HighestDstates[3]);
 
-        if (Info->Valid & ACPI_VALID_CID)
-        {
-            for (i = 0; i < Info->CompatibilityId.Count; i++)
-            {
-                AcpiOsPrintf ("CID #%d: %s\n", i,
-                    Info->CompatibilityId.Id[i].Value);
-            }
-        }
+    AcpiOsPrintf ("S0W-%2.2X S1W-%2.2X S2W-%2.2X S3W-%2.2X S4W-%2.2X\n",
+        Info->LowestDstates[0], Info->LowestDstates[1],
+        Info->LowestDstates[2], Info->LowestDstates[3],
+        Info->LowestDstates[4]);
 
-        ACPI_FREE (Info);
+    if (Info->Valid & ACPI_VALID_HID)
+    {
+        AcpiOsPrintf ("HID: %s\n", Info->HardwareId.String);
+    }
+    if (Info->Valid & ACPI_VALID_UID)
+    {
+        AcpiOsPrintf ("UID: %s\n", Info->UniqueId.String);
     }
-    else
+    if (Info->Valid & ACPI_VALID_CID)
     {
-        AcpiOsPrintf ("%s\n", AcpiFormatException (Status));
+        for (i = 0; i < Info->CompatibleIdList.Count; i++)
+        {
+            AcpiOsPrintf ("CID %d: %s\n", i,
+                Info->CompatibleIdList.Ids[i].String);
+        }
     }
+
+    ACPI_FREE (Info);
 }
 
 

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/debugger/dbexec.c#2 (text+ko) ====

@@ -176,7 +176,6 @@
     ACPI_OBJECT_LIST        ParamObjects;
     ACPI_OBJECT             Params[ACPI_METHOD_NUM_ARGS];
     ACPI_HANDLE             Handle;
-    ACPI_BUFFER             Buffer;
     UINT32                  i;
     ACPI_DEVICE_INFO        *ObjInfo;
 
@@ -196,8 +195,7 @@
 
     /* Get the object info for number of method parameters */
 
-    Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
-    Status = AcpiGetObjectInfo (Handle, &Buffer);
+    Status = AcpiGetObjectInfo (Handle, &ObjInfo);
     if (ACPI_FAILURE (Status))
     {
         return (Status);
@@ -206,7 +204,6 @@
     ParamObjects.Pointer = NULL;
     ParamObjects.Count   = 0;
 
-    ObjInfo = Buffer.Pointer;
     if (ObjInfo->Type == ACPI_TYPE_METHOD)
     {
         /* Are there arguments to the method? */
@@ -256,7 +253,7 @@
         }
     }
 
-    ACPI_FREE (Buffer.Pointer);
+    ACPI_FREE (ObjInfo);
 
     /* Prepare for a return object of arbitrary size */
 

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsfield.c#2 (text+ko) ====

@@ -211,9 +211,12 @@
         Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE |
                 ACPI_NS_ERROR_IF_FOUND;
 
-        /* Mark node temporary if we are executing a method */
-
-        if (WalkState->MethodNode)
+        /*
+         * Mark node temporary if we are executing a normal control
+         * method. (Don't mark if this is a module-level code method)
+         */
+        if (WalkState->MethodNode &&
+            !(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
         {
             Flags |= ACPI_NS_TEMPORARY;
         }
@@ -566,9 +569,12 @@
     Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE |
             ACPI_NS_ERROR_IF_FOUND;
 
-    /* Mark node(s) temporary if we are executing a method */
-
-    if (WalkState->MethodNode)
+    /*
+     * Mark node(s) temporary if we are executing a normal control
+     * method. (Don't mark if this is a module-level code method)
+     */
+    if (WalkState->MethodNode &&
+        !(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
     {
         Flags |= ACPI_NS_TEMPORARY;
     }

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsmethod.c#2 (text+ko) ====

@@ -693,10 +693,15 @@
         }
 
         /*
-         * Delete any namespace objects created anywhere within
-         * the namespace by the execution of this method
+         * Delete any namespace objects created anywhere within the
+         * namespace by the execution of this method. Unless this method
+         * is a module-level executable code method, in which case we
+         * want make the objects permanent.
          */
-        AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId);
+        if (!(MethodDesc->Method.Flags & AOPOBJ_MODULE_LEVEL))
+        {
+            AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId);
+        }
     }
 
     /* Decrement the thread count on the method */
@@ -745,7 +750,10 @@
 
         /* No more threads, we can free the OwnerId */
 
-        AcpiUtReleaseOwnerId (&MethodDesc->Method.OwnerId);
+        if (!(MethodDesc->Method.Flags & AOPOBJ_MODULE_LEVEL))
+        {
+            AcpiUtReleaseOwnerId (&MethodDesc->Method.OwnerId);
+        }
     }
 
     return_VOID;

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsmthdat.c#2 (text+ko) ====

@@ -548,9 +548,10 @@
 
         case ACPI_REFCLASS_LOCAL:
 
-            ACPI_ERROR ((AE_INFO,
-                "Uninitialized Local[%d] at node %p", Index, Node));
-
+            /*
+             * No error message for this case, will be trapped again later to
+             * detect and ignore cases of Store(LocalX,LocalX)
+             */
             return_ACPI_STATUS (AE_AML_UNINITIALIZED_LOCAL);
 
         default:

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dsobject.c#2 (text+ko) ====

@@ -570,15 +570,28 @@
     {
         /*
          * NumElements was exhausted, but there are remaining elements in the
-         * PackageList.
+         * PackageList. Truncate the package to NumElements.
          *
          * Note: technically, this is an error, from ACPI spec: "It is an error
          * for NumElements to be less than the number of elements in the
-         * PackageList". However, for now, we just print an error message and
-         * no exception is returned.
+         * PackageList". However, we just print an error message and
+         * no exception is returned. This provides Windows compatibility. Some
+         * BIOSs will alter the NumElements on the fly, creating this type
+         * of ill-formed package object.
          */
         while (Arg)
         {
+            /*
+             * We must delete any package elements that were created earlier
+             * and are not going to be used because of the package truncation.
+             */
+            if (Arg->Common.Node)
+            {
+                AcpiUtRemoveReference (
+                    ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node));
+                Arg->Common.Node = NULL;
+            }
+
             /* Find out how many elements there really are */
 
             i++;
@@ -586,7 +599,7 @@
         }
 
         ACPI_ERROR ((AE_INFO,
-            "Package List length (%X) larger than NumElements count (%X), truncated\n",
+            "Package List length (0x%X) larger than NumElements count (0x%X), truncated\n",
             i, ElementCount));
     }
     else if (i < ElementCount)
@@ -596,7 +609,7 @@
          * Note: this is not an error, the package is padded out with NULLs.
          */
         ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
-            "Package List length (%X) smaller than NumElements count (%X), padded with null elements\n",
+            "Package List length (0x%X) smaller than NumElements count (0x%X), padded with null elements\n",
             i, ElementCount));
     }
 

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/dispatcher/dswload.c#2 (text+ko) ====

@@ -672,20 +672,6 @@
               (WalkState->Opcode != AML_INT_NAMEPATH_OP)) ||
             (!(WalkState->OpInfo->Flags & AML_NAMED)))
         {
-#ifdef ACPI_ENABLE_MODULE_LEVEL_CODE
-            if ((WalkState->OpInfo->Class == AML_CLASS_EXECUTE) ||
-                (WalkState->OpInfo->Class == AML_CLASS_CONTROL))
-            {
-                ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
-                    "Begin/EXEC: %s (fl %8.8X)\n", WalkState->OpInfo->Name,
-                    WalkState->OpInfo->Flags));
-
-                /* Executing a type1 or type2 opcode outside of a method */
-
-                Status = AcpiDsExecBeginOp (WalkState, OutOp);
-                return_ACPI_STATUS (Status);
-            }
-#endif
             return_ACPI_STATUS (AE_OK);
         }
 
@@ -862,7 +848,12 @@
         {
             /* Execution mode, node cannot already exist, node is temporary */
 
-            Flags |= (ACPI_NS_ERROR_IF_FOUND | ACPI_NS_TEMPORARY);
+            Flags |= ACPI_NS_ERROR_IF_FOUND;
+
+            if (!(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL))
+            {
+                Flags |= ACPI_NS_TEMPORARY;
+            }
         }
 
         /* Add new entry or lookup existing entry */
@@ -952,24 +943,6 @@
 
     if (!(WalkState->OpInfo->Flags & AML_NSOBJECT))
     {
-#ifndef ACPI_NO_METHOD_EXECUTION
-#ifdef ACPI_ENABLE_MODULE_LEVEL_CODE
-        /* No namespace object. Executable opcode? */
-
-        if ((WalkState->OpInfo->Class == AML_CLASS_EXECUTE) ||
-            (WalkState->OpInfo->Class == AML_CLASS_CONTROL))
-        {
-            ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,
-                "End/EXEC:   %s (fl %8.8X)\n", WalkState->OpInfo->Name,
-                WalkState->OpInfo->Flags));
-
-            /* Executing a type1 or type2 opcode outside of a method */
-
-            Status = AcpiDsExecEndOp (WalkState);
-            return_ACPI_STATUS (Status);
-        }
-#endif
-#endif
         return_ACPI_STATUS (AE_OK);
     }
 

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/events/evgpe.c#2 (text+ko) ====

@@ -543,7 +543,7 @@
 
             /* Read the Status Register */
 
-            Status = AcpiRead (&StatusReg, &GpeRegisterInfo->StatusAddress);
+            Status = AcpiHwRead (&StatusReg, &GpeRegisterInfo->StatusAddress);
             if (ACPI_FAILURE (Status))
             {
                 goto UnlockAndExit;
@@ -551,7 +551,7 @@
 
             /* Read the Enable Register */
 
-            Status = AcpiRead (&EnableReg, &GpeRegisterInfo->EnableAddress);
+            Status = AcpiHwRead (&EnableReg, &GpeRegisterInfo->EnableAddress);
             if (ACPI_FAILURE (Status))
             {
                 goto UnlockAndExit;

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/events/evgpeblk.c#2 (text+ko) ====

@@ -995,7 +995,7 @@
 
         /* Disable all GPEs within this register */
 
-        Status = AcpiWrite (0x00, &ThisRegister->EnableAddress);
+        Status = AcpiHwWrite (0x00, &ThisRegister->EnableAddress);
         if (ACPI_FAILURE (Status))
         {
             goto ErrorExit;
@@ -1003,7 +1003,7 @@
 
         /* Clear any pending GPE events within this register */
 
-        Status = AcpiWrite (0xFF, &ThisRegister->StatusAddress);
+        Status = AcpiHwWrite (0xFF, &ThisRegister->StatusAddress);
         if (ACPI_FAILURE (Status))
         {
             goto ErrorExit;

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/events/evrgnini.c#2 (text+ko) ====

@@ -127,10 +127,6 @@
 /* Local prototypes */
 
 static BOOLEAN
-AcpiEvMatchPciRootBridge (
-    char                    *Id);
-
-static BOOLEAN
 AcpiEvIsPciRootBridge (
     ACPI_NAMESPACE_NODE     *Node);
 
@@ -444,42 +440,6 @@
 
 /*******************************************************************************
  *
- * FUNCTION:    AcpiEvMatchPciRootBridge
- *
- * PARAMETERS:  Id              - The HID/CID in string format
- *
- * RETURN:      TRUE if the Id is a match for a PCI/PCI-Express Root Bridge
- *
- * DESCRIPTION: Determine if the input ID is a PCI Root Bridge ID.
- *
- ******************************************************************************/
-
-static BOOLEAN
-AcpiEvMatchPciRootBridge (
-    char                    *Id)
-{
-
-    /*
-     * Check if this is a PCI root.
-     * ACPI 3.0+: check for a PCI Express root also.
-     */
-    if (!(ACPI_STRNCMP (Id,
-            PCI_ROOT_HID_STRING,
-            sizeof (PCI_ROOT_HID_STRING)))      ||
-
-        !(ACPI_STRNCMP (Id,
-            PCI_EXPRESS_ROOT_HID_STRING,
-            sizeof (PCI_EXPRESS_ROOT_HID_STRING))))
-    {
-        return (TRUE);
-    }
-
-    return (FALSE);
-}
-
-
-/*******************************************************************************
- *
  * FUNCTION:    AcpiEvIsPciRootBridge
  *
  * PARAMETERS:  Node            - Device node being examined
@@ -496,9 +456,10 @@
     ACPI_NAMESPACE_NODE     *Node)
 {
     ACPI_STATUS             Status;
-    ACPI_DEVICE_ID          Hid;
-    ACPI_COMPATIBLE_ID_LIST *Cid;
+    ACPI_DEVICE_ID          *Hid;
+    ACPI_DEVICE_ID_LIST     *Cid;
     UINT32                  i;
+    BOOLEAN                 Match;
 
 
     /* Get the _HID and check for a PCI Root Bridge */
@@ -509,7 +470,10 @@
         return (FALSE);
     }
 
-    if (AcpiEvMatchPciRootBridge (Hid.Value))
+    Match = AcpiUtIsPciRootBridge (Hid->String);
+    ACPI_FREE (Hid);
+
+    if (Match)
     {
         return (TRUE);
     }
@@ -526,7 +490,7 @@
 
     for (i = 0; i < Cid->Count; i++)
     {
-        if (AcpiEvMatchPciRootBridge (Cid->Id[i].Value))
+        if (AcpiUtIsPciRootBridge (Cid->Ids[i].String))
         {
             ACPI_FREE (Cid);
             return (TRUE);

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/executer/exconfig.c#2 (text+ko) ====

@@ -196,8 +196,15 @@
     {
         AcpiUtRemoveReference (ObjDesc);
         *DdbHandle = NULL;
+        return_ACPI_STATUS (Status);
     }
 
+    /* Execute any module-level code that was found in the table */
+
+    AcpiExExitInterpreter ();
+    AcpiNsExecModuleCodeList ();
+    AcpiExEnterInterpreter ();
+
     return_ACPI_STATUS (Status);
 }
 

==== //depot/projects/vimage-commit2/src/sys/contrib/dev/acpica/executer/exfield.c#2 (text+ko) ====

@@ -151,6 +151,7 @@
     ACPI_OPERAND_OBJECT     *BufferDesc;
     ACPI_SIZE               Length;
     void                    *Buffer;
+    UINT32                  Function;
 
 
     ACPI_FUNCTION_TRACE_PTR (ExReadDataFromField, ObjDesc);
@@ -183,13 +184,27 @@
         }
     }
     else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
-             (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS))
+             (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
+              ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI))
     {
         /*
-         * This is an SMBus read.  We must create a buffer to hold the data
-         * and directly access the region handler.
+         * This is an SMBus or IPMI read. We must create a buffer to hold
+         * the data and then directly access the region handler.
+         *
+         * Note: Smbus protocol value is passed in upper 16-bits of Function
          */
-        BufferDesc = AcpiUtCreateBufferObject (ACPI_SMBUS_BUFFER_SIZE);
+        if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS)
+        {
+            Length = ACPI_SMBUS_BUFFER_SIZE;
+            Function = ACPI_READ | (ObjDesc->Field.Attribute << 16);
+        }
+        else /* IPMI */
+        {
+            Length = ACPI_IPMI_BUFFER_SIZE;
+            Function = ACPI_READ;
+        }
+
+        BufferDesc = AcpiUtCreateBufferObject (Length);
         if (!BufferDesc)
         {
             return_ACPI_STATUS (AE_NO_MEMORY);
@@ -199,13 +214,11 @@
 
         AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags);
 
-        /*
-         * Perform the read.
-         * Note: Smbus protocol value is passed in upper 16-bits of Function
-         */
+        /* Call the region handler for the read */
+
         Status = AcpiExAccessRegion (ObjDesc, 0,
                     ACPI_CAST_PTR (ACPI_INTEGER, BufferDesc->Buffer.Pointer),
-                    ACPI_READ | (ObjDesc->Field.Attribute << 16));
+                    Function);
         AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags);
         goto Exit;
     }
@@ -304,6 +317,7 @@
     UINT32                  Length;
     void                    *Buffer;
     ACPI_OPERAND_OBJECT     *BufferDesc;
+    UINT32                  Function;
 
 
     ACPI_FUNCTION_TRACE_PTR (ExWriteDataToField, ObjDesc);
@@ -332,40 +346,59 @@
         }
     }
     else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
-             (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS))
+             (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
+              ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI))
     {
         /*
-         * This is an SMBus write.  We will bypass the entire field mechanism
-         * and handoff the buffer directly to the handler.
+         * This is an SMBus or IPMI write. We will bypass the entire field
+         * mechanism and handoff the buffer directly to the handler. For
+         * these address spaces, the buffer is bi-directional; on a write,
+         * return data is returned in the same buffer.
+         *
+         * Source must be a buffer of sufficient size:
+         * ACPI_SMBUS_BUFFER_SIZE or ACPI_IPMI_BUFFER_SIZE.
          *
-         * Source must be a buffer of sufficient size (ACPI_SMBUS_BUFFER_SIZE).
+         * Note: SMBus protocol type is passed in upper 16-bits of Function
          */
         if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER)
         {
-            ACPI_ERROR ((AE_INFO, "SMBus write requires Buffer, found type %s",
+            ACPI_ERROR ((AE_INFO,
+                "SMBus or IPMI write requires Buffer, found type %s",
                 AcpiUtGetObjectTypeName (SourceDesc)));
 
             return_ACPI_STATUS (AE_AML_OPERAND_TYPE);
         }
 
-        if (SourceDesc->Buffer.Length < ACPI_SMBUS_BUFFER_SIZE)
+        if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS)
+        {
+            Length = ACPI_SMBUS_BUFFER_SIZE;
+            Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16);
+        }
+        else /* IPMI */
+        {
+            Length = ACPI_IPMI_BUFFER_SIZE;
+            Function = ACPI_WRITE;
+        }
+
+        if (SourceDesc->Buffer.Length < Length)
         {
             ACPI_ERROR ((AE_INFO,
-                "SMBus write requires Buffer of length %X, found length %X",
-                ACPI_SMBUS_BUFFER_SIZE, SourceDesc->Buffer.Length));
+                "SMBus or IPMI write requires Buffer of length %X, found length %X",
+                Length, SourceDesc->Buffer.Length));
 
             return_ACPI_STATUS (AE_AML_BUFFER_LIMIT);
         }
 
-        BufferDesc = AcpiUtCreateBufferObject (ACPI_SMBUS_BUFFER_SIZE);

>>> TRUNCATED FOR MAIL (1000 lines) <<<



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