PERFORCE change 168520 for review
Marko Zec
zec at FreeBSD.org
Sun Sep 13 22:05:18 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=168520
Change 168520 by zec at 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) <<<
More information about the p4-projects
mailing list