PERFORCE change 56321 for review
John Baldwin
jhb at FreeBSD.org
Fri Jul 2 12:18:17 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=56321
Change 56321 by jhb at jhb_slimer on 2004/07/02 19:16:11
IFC @56320 to get first preemption merge.
Affected files ...
.. //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#33 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_ioctl.h#10 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/CHANGES.txt#10 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/acconfig.h#22 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/acfreebsd.h#15 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/acinterp.h#15 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/acmacros.h#19 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/compiler/aslcompiler.y#5 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/dbcmds.c#19 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/dbdisply.c#19 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/dsopcode.c#18 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/evgpe.c#8 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/evgpeblk.c#7 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/exconfig.c#17 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/exfldio.c#18 integrate
.. //depot/projects/smpng/sys/contrib/dev/acpica/tbxfroot.c#14 integrate
.. //depot/projects/smpng/sys/dev/bfe/if_bfe.c#8 integrate
.. //depot/projects/smpng/sys/dev/em/if_em.c#34 integrate
.. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#53 integrate
.. //depot/projects/smpng/sys/dev/lnc/if_lnc.c#16 integrate
.. //depot/projects/smpng/sys/dev/pci/pci.c#41 integrate
.. //depot/projects/smpng/sys/dev/sound/pcm/dsp.c#22 integrate
.. //depot/projects/smpng/sys/kern/kern_idle.c#21 integrate
.. //depot/projects/smpng/sys/kern/kern_intr.c#47 integrate
.. //depot/projects/smpng/sys/kern/kern_mutex.c#78 integrate
.. //depot/projects/smpng/sys/kern/kern_shutdown.c#41 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#91 integrate
.. //depot/projects/smpng/sys/kern/kern_subr.c#33 integrate
.. //depot/projects/smpng/sys/kern/kern_synch.c#71 integrate
.. //depot/projects/smpng/sys/kern/kern_thread.c#59 integrate
.. //depot/projects/smpng/sys/kern/sched_4bsd.c#27 integrate
.. //depot/projects/smpng/sys/kern/sched_ule.c#31 integrate
.. //depot/projects/smpng/sys/kern/subr_sleepqueue.c#9 integrate
.. //depot/projects/smpng/sys/kern/subr_trap.c#66 integrate
.. //depot/projects/smpng/sys/kern/subr_turnstile.c#13 integrate
.. //depot/projects/smpng/sys/kern/sys_process.c#37 integrate
.. //depot/projects/smpng/sys/kern/uipc_usrreq.c#37 integrate
.. //depot/projects/smpng/sys/net/if_tun.c#34 integrate
.. //depot/projects/smpng/sys/pci/if_de.c#17 integrate
.. //depot/projects/smpng/sys/pci/if_rl.c#50 integrate
.. //depot/projects/smpng/sys/pci/if_sis.c#43 integrate
.. //depot/projects/smpng/sys/pci/if_xl.c#46 integrate
.. //depot/projects/smpng/sys/sys/proc.h#117 integrate
.. //depot/projects/smpng/sys/sys/sched.h#11 integrate
.. //depot/projects/smpng/sys/vm/vm_zeroidle.c#16 integrate
Differences ...
==== //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#33 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.119 2004/06/18 14:36:24 bms Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.120 2004/07/02 15:31:44 netchild Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1799,6 +1799,10 @@
args->cmd = SNDCTL_DSP_GETOPTR;
return (ioctl(td, (struct ioctl_args *)args));
+ case LINUX_SNDCTL_DSP_SETDUPLEX:
+ args->cmd = SNDCTL_DSP_SETDUPLEX;
+ return (ioctl(td, (struct ioctl_args *)args));
+
case LINUX_SNDCTL_DSP_GETODELAY:
args->cmd = SNDCTL_DSP_GETODELAY;
return (ioctl(td, (struct ioctl_args *)args));
==== //depot/projects/smpng/sys/compat/linux/linux_ioctl.h#10 (text+ko) ====
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.20 2004/06/18 14:36:24 bms Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.21 2004/07/02 15:31:44 netchild Exp $
*/
#ifndef _LINUX_IOCTL_H_
@@ -254,6 +254,7 @@
#define LINUX_SNDCTL_DSP_SETTRIGGER LINUX_SNDCTL_DSP_GETTRIGGER
#define LINUX_SNDCTL_DSP_GETIPTR 0x5011
#define LINUX_SNDCTL_DSP_GETOPTR 0x5012
+#define LINUX_SNDCTL_DSP_SETDUPLEX 0x5016
#define LINUX_SNDCTL_DSP_GETODELAY 0x5017
#define LINUX_SNDCTL_SEQ_RESET 0x5100
#define LINUX_SNDCTL_SEQ_SYNC 0x5101
==== //depot/projects/smpng/sys/contrib/dev/acpica/CHANGES.txt#10 (text+ko) ====
@@ -1,4 +1,51 @@
----------------------------------------
+27 May 2004. Summary of changes for version 20040527:
+
+1) ACPI CA Core Subsystem:
+
+Completed a new design and implementation for EBDA (Extended BIOS
+Data Area) support in the RSDP scan code. The original code
+improperly scanned for the EBDA by simply scanning from memory
+location 0 to 0x400. The correct method is to first obtain the
+EBDA pointer from within the BIOS data area, then scan 1K of
+memory starting at the EBDA pointer. There appear to be few if
+any machines that place the RSDP in the EBDA, however.
+
+Integrated a fix for a possible fault during evaluation of
+BufferField arguments. Obsolete code that was causing the
+problem was removed.
+
+Found and fixed a problem in the Field Support Code where data
+could be corrupted on a bit field read that starts on an aligned
+boundary but does not end on an aligned boundary. Merged the
+read/write "datum length" calculation code into a common
+procedure.
+
+Rolled in a couple of changes to the FreeBSD-specific header.
+
+Code and Data Size: Current and previous core subsystem library
+sizes are shown below. These are the code and data sizes for the
+acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
+these values do not include any ACPI driver or OSPM code. The
+debug version of the code includes the debug output trace
+mechanism and has a much larger code and data size. Note that
+these values will vary depending on the efficiency of the
+compiler and the compiler options used during generation.
+
+ Previous Release:
+ Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
+ Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
+ Current Release:
+ Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
+ Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
+
+
+2) iASL Compiler/Disassembler:
+
+Fixed a generation warning produced by some overly-verbose
+compilers for a 64-bit constant.
+
+----------------------------------------
14 May 2004. Summary of changes for version 20040514:
1) ACPI CA Core Subsystem:
==== //depot/projects/smpng/sys/contrib/dev/acpica/acconfig.h#22 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acconfig.h - Global configuration constants
- * $Revision: 156 $
+ * $Revision: 158 $
*
*****************************************************************************/
@@ -137,7 +137,7 @@
/* Version string */
-#define ACPI_CA_VERSION 0x20040514
+#define ACPI_CA_VERSION 0x20040527
/*
* OS name, used for the _OS object. The _OS object is essentially obsolete,
@@ -151,7 +151,7 @@
/* Maximum objects in the various object caches */
-#define ACPI_MAX_STATE_CACHE_DEPTH 64 /* State objects for stacks */
+#define ACPI_MAX_STATE_CACHE_DEPTH 64 /* State objects */
#define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */
#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 64 /* Parse tree objects */
#define ACPI_MAX_OBJECT_CACHE_DEPTH 64 /* Interpreter operand objects */
@@ -235,10 +235,11 @@
/* Constants used in searching for the RSDP in low memory */
-#define ACPI_LO_RSDP_WINDOW_BASE 0 /* Physical Address */
-#define ACPI_HI_RSDP_WINDOW_BASE 0xE0000 /* Physical Address */
-#define ACPI_LO_RSDP_WINDOW_SIZE 0x400
-#define ACPI_HI_RSDP_WINDOW_SIZE 0x20000
+#define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */
+#define ACPI_EBDA_PTR_LENGTH 2
+#define ACPI_EBDA_WINDOW_SIZE 1024
+#define ACPI_HI_RSDP_WINDOW_BASE 0x000E0000 /* Physical Address */
+#define ACPI_HI_RSDP_WINDOW_SIZE 0x00020000
#define ACPI_RSDP_SCAN_STEP 16
/* Operation regions */
==== //depot/projects/smpng/sys/contrib/dev/acpica/acfreebsd.h#15 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acfreebsd.h - OS specific defines, etc.
- * $Revision: 15 $
+ * $Revision: 17 $
*
*****************************************************************************/
@@ -156,6 +156,7 @@
/* Not building kernel code, so use libc */
#define ACPI_USE_STANDARD_HEADERS
#define ACPI_FLUSH_CPU_CACHE()
+
#if __STDC_HOSTED__
#include <ctype.h>
#endif
==== //depot/projects/smpng/sys/contrib/dev/acpica/acinterp.h#15 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acinterp.h - Interpreter subcomponent prototypes and defines
- * $Revision: 148 $
+ * $Revision: 149 $
*
*****************************************************************************/
@@ -191,6 +191,12 @@
*/
ACPI_STATUS
+AcpiExCommonBufferSetup (
+ ACPI_OPERAND_OBJECT *ObjDesc,
+ UINT32 BufferLength,
+ UINT32 *DatumCount);
+
+ACPI_STATUS
AcpiExExtractFromField (
ACPI_OPERAND_OBJECT *ObjDesc,
void *Buffer,
==== //depot/projects/smpng/sys/contrib/dev/acpica/acmacros.h#19 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Name: acmacros.h - C macros for the entire subsystem.
- * $Revision: 150 $
+ * $Revision: 151 $
*
*****************************************************************************/
@@ -126,6 +126,9 @@
#define ACPI_LOBYTE(l) ((UINT8)(UINT16)(l))
#define ACPI_HIBYTE(l) ((UINT8)((((UINT16)(l)) >> 8) & 0xFF))
+#define ACPI_SET_BIT(target,bit) ((target) |= (bit))
+#define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit))
+
#if ACPI_MACHINE_WIDTH == 16
==== //depot/projects/smpng/sys/contrib/dev/acpica/compiler/aslcompiler.y#5 (text+ko) ====
@@ -2252,7 +2252,7 @@
ConstExprTerm
: PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);}
| PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);}
- | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, 0xFFFFFFFFFFFFFFFFull);}
+ | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_INTEGER_MAX);}
;
/* OptionalCount must appear before ByteList or an incorrect reduction will result */
==== //depot/projects/smpng/sys/contrib/dev/acpica/dbcmds.c#19 (text+ko) ====
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbcmds - debug commands and output routines
- * $Revision: 112 $
+ * $Revision: 113 $
*
******************************************************************************/
@@ -161,6 +161,9 @@
AcpiDbSleep (
char *ObjectArg)
{
+#if ACPI_MACHINE_WIDTH == 16
+ return (AE_OK);
+#else
ACPI_STATUS Status;
UINT8 SleepState;
@@ -185,6 +188,7 @@
Status = AcpiLeaveSleepState (SleepState);
return (Status);
+#endif
}
==== //depot/projects/smpng/sys/contrib/dev/acpica/dbdisply.c#19 (text+ko) ====
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbdisply - debug display commands
- * $Revision: 105 $
+ * $Revision: 106 $
*
******************************************************************************/
@@ -824,8 +824,8 @@
(GpeBlock->RegisterCount * 8) -1);
AcpiOsPrintf (" RegisterInfo: %p Status %8.8X%8.8X Enable %8.8X%8.8X\n",
GpeBlock->RegisterInfo,
- ACPI_FORMAT_UINT64 (GpeBlock->RegisterInfo->StatusAddress.Address),
- ACPI_FORMAT_UINT64 (GpeBlock->RegisterInfo->EnableAddress.Address));
+ ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeBlock->RegisterInfo->StatusAddress.Address)),
+ ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeBlock->RegisterInfo->EnableAddress.Address)));
AcpiOsPrintf (" EventInfo: %p\n", GpeBlock->EventInfo);
/* Examine each GPE Register within the block */
@@ -838,8 +838,8 @@
" Reg %u: WakeEnable %2.2X, RunEnable %2.2X Status %8.8X%8.8X Enable %8.8X%8.8X\n",
i, GpeRegisterInfo->EnableForWake,
GpeRegisterInfo->EnableForRun,
- ACPI_FORMAT_UINT64 (GpeRegisterInfo->StatusAddress.Address),
- ACPI_FORMAT_UINT64 (GpeRegisterInfo->EnableAddress.Address));
+ ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeRegisterInfo->StatusAddress.Address)),
+ ACPI_FORMAT_UINT64 (ACPI_GET_ADDRESS (GpeRegisterInfo->EnableAddress.Address)));
/* Now look at the individual GPEs in this byte register */
==== //depot/projects/smpng/sys/contrib/dev/acpica/dsopcode.c#18 (text+ko) ====
@@ -2,7 +2,7 @@
*
* Module Name: dsopcode - Dispatcher Op Region support and handling of
* "control" opcodes
- * $Revision: 94 $
+ * $Revision: 95 $
*
*****************************************************************************/
@@ -153,7 +153,6 @@
ACPI_STATUS Status;
ACPI_PARSE_OBJECT *Op;
ACPI_WALK_STATE *WalkState;
- ACPI_PARSE_OBJECT *Arg;
ACPI_FUNCTION_TRACE ("DsExecuteArguments");
@@ -204,9 +203,7 @@
/* Get and init the Op created above */
- Arg = Op->Common.Value.Arg;
Op->Common.Node = Node;
- Arg->Common.Node = Node;
AcpiPsDeleteParseTree (Op);
/* Evaluate the deferred arguments */
==== //depot/projects/smpng/sys/contrib/dev/acpica/evgpe.c#8 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evgpe - General Purpose Event handling and dispatch
- * $Revision: 40 $
+ * $Revision: 42 $
*
*****************************************************************************/
@@ -206,28 +206,28 @@
if (Type == ACPI_GPE_DISABLE)
{
- GpeRegisterInfo->EnableForWake &= ~RegisterBit;
- GpeRegisterInfo->EnableForRun &= ~RegisterBit;
+ ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForWake, RegisterBit);
+ ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForRun, RegisterBit);
return_ACPI_STATUS (AE_OK);
}
- /* 2) Enable case. Set the appropriate enable bits */
+ /* 2) Enable case. Set/Clear the appropriate enable bits */
switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK)
{
case ACPI_GPE_TYPE_WAKE:
- GpeRegisterInfo->EnableForWake |= RegisterBit;
- GpeRegisterInfo->EnableForRun &= ~RegisterBit;
+ ACPI_SET_BIT (GpeRegisterInfo->EnableForWake, RegisterBit);
+ ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForRun, RegisterBit);
break;
case ACPI_GPE_TYPE_RUNTIME:
- GpeRegisterInfo->EnableForWake &= ~RegisterBit;
- GpeRegisterInfo->EnableForRun |= RegisterBit;
+ ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForWake, RegisterBit);
+ ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, RegisterBit);
break;
case ACPI_GPE_TYPE_WAKE_RUN:
- GpeRegisterInfo->EnableForWake |= RegisterBit;
- GpeRegisterInfo->EnableForRun |= RegisterBit;
+ ACPI_SET_BIT (GpeRegisterInfo->EnableForWake, RegisterBit);
+ ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, RegisterBit);
break;
default:
@@ -274,17 +274,19 @@
switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK)
{
case ACPI_GPE_TYPE_WAKE:
- GpeEventInfo->Flags |= ACPI_GPE_WAKE_ENABLED;
+
+ ACPI_SET_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED);
break;
case ACPI_GPE_TYPE_WAKE_RUN:
- GpeEventInfo->Flags |= ACPI_GPE_WAKE_ENABLED;
+
+ ACPI_SET_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED);
/*lint -fallthrough */
case ACPI_GPE_TYPE_RUNTIME:
- GpeEventInfo->Flags |= ACPI_GPE_RUN_ENABLED;
+ ACPI_SET_BIT (GpeEventInfo->Flags, ACPI_GPE_RUN_ENABLED);
if (WriteToHardware)
{
@@ -350,11 +352,11 @@
switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK)
{
case ACPI_GPE_TYPE_WAKE:
- GpeEventInfo->Flags &= ~ACPI_GPE_WAKE_ENABLED;
+ ACPI_CLEAR_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED);
break;
case ACPI_GPE_TYPE_WAKE_RUN:
- GpeEventInfo->Flags &= ~ACPI_GPE_WAKE_ENABLED;
+ ACPI_CLEAR_BIT (GpeEventInfo->Flags, ACPI_GPE_WAKE_ENABLED);
/*lint -fallthrough */
@@ -362,7 +364,7 @@
/* Disable the requested runtime GPE */
- GpeEventInfo->Flags &= ~ACPI_GPE_RUN_ENABLED;
+ ACPI_CLEAR_BIT (GpeEventInfo->Flags, ACPI_GPE_RUN_ENABLED);
Status = AcpiHwWriteGpeEnableReg (GpeEventInfo);
break;
@@ -721,11 +723,11 @@
if (AcpiGbl_SystemAwakeAndRunning)
{
- GpeEventInfo->Flags |= ACPI_GPE_SYSTEM_RUNNING;
+ ACPI_SET_BIT (GpeEventInfo->Flags, ACPI_GPE_SYSTEM_RUNNING);
}
else
{
- GpeEventInfo->Flags &= ~ACPI_GPE_SYSTEM_RUNNING;
+ ACPI_CLEAR_BIT (GpeEventInfo->Flags, ACPI_GPE_SYSTEM_RUNNING);
}
/*
@@ -739,9 +741,11 @@
{
case ACPI_GPE_DISPATCH_HANDLER:
- /* Invoke the installed handler (at interrupt level) */
-
- GpeEventInfo->Dispatch.Handler->Address ((void *)
+ /*
+ * Invoke the installed handler (at interrupt level)
+ * Ignore return status for now. TBD: leave GPE disabled on error?
+ */
+ (void) GpeEventInfo->Dispatch.Handler->Address (
GpeEventInfo->Dispatch.Handler->Context);
/* It is now safe to clear level-triggered events. */
==== //depot/projects/smpng/sys/contrib/dev/acpica/evgpeblk.c#7 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: evgpeblk - GPE block creation and initialization.
- * $Revision: 34 $
+ * $Revision: 36 $
*
*****************************************************************************/
@@ -1102,8 +1102,8 @@
/* Dump info about this GPE block */
ACPI_DEBUG_PRINT ((ACPI_DB_INIT,
- "GPE %02d to %02d [%4.4s] %d regs at %8.8X%8.8X on int %d\n",
- GpeBlock->BlockBaseNumber,
+ "GPE %02X to %02X [%4.4s] %u regs at %8.8X%8.8X on int 0x%X\n",
+ (UINT32) GpeBlock->BlockBaseNumber,
(UINT32) (GpeBlock->BlockBaseNumber +
((GpeBlock->RegisterCount * ACPI_GPE_REGISTER_WIDTH) -1)),
GpeDevice->Name.Ascii,
==== //depot/projects/smpng/sys/contrib/dev/acpica/exconfig.c#17 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes)
- * $Revision: 77 $
+ * $Revision: 78 $
*
*****************************************************************************/
@@ -415,7 +415,7 @@
for (i = 0; i < 8; i++)
{
Status = AcpiEvAddressSpaceDispatch (ObjDesc, ACPI_READ,
- (ACPI_PHYSICAL_ADDRESS) i + Address, 8,
+ (ACPI_PHYSICAL_ADDRESS) (i + Address), 8,
((UINT8 *) &TableHeader) + i);
if (ACPI_FAILURE (Status))
{
@@ -443,7 +443,7 @@
for (i = 0; i < TableHeader.Length; i++)
{
Status = AcpiEvAddressSpaceDispatch (ObjDesc, ACPI_READ,
- (ACPI_PHYSICAL_ADDRESS) i + Address, 8,
+ (ACPI_PHYSICAL_ADDRESS) (i + Address), 8,
((UINT8 *) TablePtr + i));
if (ACPI_FAILURE (Status))
{
==== //depot/projects/smpng/sys/contrib/dev/acpica/exfldio.c#18 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: exfldio - Aml Field I/O
- * $Revision: 104 $
+ * $Revision: 106 $
*
*****************************************************************************/
@@ -865,14 +865,84 @@
/*******************************************************************************
*
+ * FUNCTION: AcpiExCommonBufferSetup
+ *
+ * PARAMETERS: ObjDesc - Field object
+ * BufferLength - Length of caller's buffer
+ * DatumCount - Where the DatumCount is returned
+ *
+ * RETURN: Status, DatumCount
+ *
+ * DESCRIPTION: Common code to validate the incoming buffer size and compute
+ * the number of field "datums" that must be read or written.
+ * A "datum" is the smallest unit that can be read or written
+ * to the field, it is either 1,2,4, or 8 bytes.
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiExCommonBufferSetup (
+ ACPI_OPERAND_OBJECT *ObjDesc,
+ UINT32 BufferLength,
+ UINT32 *DatumCount)
+{
+ UINT32 ByteFieldLength;
+ UINT32 ActualByteFieldLength;
+
+
+ ACPI_FUNCTION_TRACE ("ExCommonBufferSetup");
+
+
+ /*
+ * Incoming buffer must be at least as long as the field, we do not
+ * allow "partial" field reads/writes. We do not care if the buffer is
+ * larger than the field, this typically happens when an integer is
+ * read/written to a field that is actually smaller than an integer.
+ */
+ ByteFieldLength = ACPI_ROUND_BITS_UP_TO_BYTES (
+ ObjDesc->CommonField.BitLength);
+ if (ByteFieldLength > BufferLength)
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
+ "Field size %X (bytes) is too large for buffer (%X)\n",
+ ByteFieldLength, BufferLength));
+
+ return_ACPI_STATUS (AE_BUFFER_OVERFLOW);
+ }
+
+ /*
+ * Create "actual" field byte count (minimum number of bytes that
+ * must be read), then convert to datum count (minimum number
+ * of datum-sized units that must be read)
+ */
+ ActualByteFieldLength = ACPI_ROUND_BITS_UP_TO_BYTES (
+ ObjDesc->CommonField.StartFieldBitOffset +
+ ObjDesc->CommonField.BitLength);
+
+
+ *DatumCount = ACPI_ROUND_UP_TO (ActualByteFieldLength,
+ ObjDesc->CommonField.AccessByteWidth);
+
+ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
+ "BufferBytes %X, ActualBytes %X, Datums %X, ByteGran %X\n",
+ ByteFieldLength, ActualByteFieldLength,
+ *DatumCount, ObjDesc->CommonField.AccessByteWidth));
+
+ return_ACPI_STATUS (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiExExtractFromField
*
- * PARAMETERS: *ObjDesc - Field to be read
- * *Value - Where to store value
+ * PARAMETERS: ObjDesc - Field to be read
+ * Buffer - Where to store the field data
+ * BufferLength - Length of Buffer
*
* RETURN: Status
*
- * DESCRIPTION: Retrieve the value of the given field
+ * DESCRIPTION: Retrieve the current value of the given field
*
******************************************************************************/
@@ -888,7 +958,6 @@
ACPI_INTEGER PreviousRawDatum = 0;
ACPI_INTEGER ThisRawDatum = 0;
ACPI_INTEGER MergedDatum = 0;
- UINT32 ByteFieldLength;
UINT32 DatumCount;
UINT32 i;
@@ -896,41 +965,14 @@
ACPI_FUNCTION_TRACE ("ExExtractFromField");
- /*
- * The field must fit within the caller's buffer
- */
- ByteFieldLength = ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength);
- if (ByteFieldLength > BufferLength)
- {
- ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
- "Field size %X (bytes) too large for buffer (%X)\n",
- ByteFieldLength, BufferLength));
+ /* Validate buffer, compute number of datums */
- return_ACPI_STATUS (AE_BUFFER_OVERFLOW);
- }
-
- /* Convert field byte count to datum count, round up if necessary */
-
- DatumCount = ACPI_ROUND_UP_TO (ByteFieldLength,
- ObjDesc->CommonField.AccessByteWidth);
-
- /*
- * If the field is not aligned on a datum boundary and does not
- * fit within a single datum, we must read an extra datum.
- *
- * We could just split the aligned and non-aligned cases since the
- * aligned case is so very simple, but this would require more code.
- */
- if ((ObjDesc->CommonField.EndFieldValidBits != 0) &&
- (!(ObjDesc->CommonField.Flags & AOPOBJ_SINGLE_DATUM)))
+ Status = AcpiExCommonBufferSetup (ObjDesc, BufferLength, &DatumCount);
+ if (ACPI_FAILURE (Status))
{
- DatumCount++;
+ return_ACPI_STATUS (Status);
}
- ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
- "ByteLen %X, DatumLen %X, ByteGran %X\n",
- ByteFieldLength, DatumCount,ObjDesc->CommonField.AccessByteWidth));
-
/*
* Clear the caller's buffer (the whole buffer length as given)
* This is very important, especially in the cases where the buffer
@@ -1052,12 +1094,13 @@
*
* FUNCTION: AcpiExInsertIntoField
*
- * PARAMETERS: *ObjDesc - Field to be set
- * Buffer - Value to store
+ * PARAMETERS: ObjDesc - Field to be written
+ * Buffer - Data to be written
+ * BufferLength - Length of Buffer
*
* RETURN: Status
*
- * DESCRIPTION: Store the value into the given field
+ * DESCRIPTION: Store the Buffer contents into the given field
*
******************************************************************************/
@@ -1074,43 +1117,20 @@
ACPI_INTEGER MergedDatum;
ACPI_INTEGER PreviousRawDatum;
ACPI_INTEGER ThisRawDatum;
- UINT32 ByteFieldLength;
UINT32 DatumCount;
ACPI_FUNCTION_TRACE ("ExInsertIntoField");
- /*
- * Incoming buffer must be at least as long as the field, we do not
- * allow "partial" field writes. We do not care if the buffer is
- * larger than the field, this typically happens when an integer is
- * written to a field that is actually smaller than an integer.
- */
- ByteFieldLength = ACPI_ROUND_BITS_UP_TO_BYTES (
- ObjDesc->CommonField.BitLength);
- if (BufferLength < ByteFieldLength)
+ /* Validate buffer, compute number of datums */
+
+ Status = AcpiExCommonBufferSetup (ObjDesc, BufferLength, &DatumCount);
+ if (ACPI_FAILURE (Status))
{
- ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
- "Buffer length %X too small for field %X\n",
- BufferLength, ByteFieldLength));
-
- return_ACPI_STATUS (AE_BUFFER_OVERFLOW);
+ return_ACPI_STATUS (Status);
}
- ByteFieldLength = ACPI_ROUND_BITS_UP_TO_BYTES (
- ObjDesc->CommonField.StartFieldBitOffset +
- ObjDesc->CommonField.BitLength);
-
- /* Convert byte count to datum count, round up if necessary */
-
- DatumCount = ACPI_ROUND_UP_TO (ByteFieldLength,
- ObjDesc->CommonField.AccessByteWidth);
-
- ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
- "Bytes %X, Datums %X, ByteGran %X\n",
- ByteFieldLength, DatumCount, ObjDesc->CommonField.AccessByteWidth));
-
/*
* Break the request into up to three parts (similar to an I/O request):
* 1) non-aligned part at start
==== //depot/projects/smpng/sys/contrib/dev/acpica/tbxfroot.c#14 (text+ko) ====
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: tbxfroot - Find the root ACPI table (RSDT)
- * $Revision: 72 $
+ * $Revision: 73 $
*
*****************************************************************************/
@@ -486,14 +486,17 @@
* Flags - Current memory mode (logical vs.
* physical addressing)
*
- * RETURN: Status
+ * RETURN: Status, RSDP physical address
*
* DESCRIPTION: Search lower 1Mbyte of memory for the root system descriptor
* pointer structure. If it is found, set *RSDP to point to it.
*
- * NOTE: The RSDP must be either in the first 1K of the Extended
- * BIOS Data Area or between E0000 and FFFFF (ACPI 1.0 section
- * 5.2.2; assertion #421).
+ * NOTE1: The RSDP must be either in the first 1K of the Extended
+ * BIOS Data Area or between E0000 and FFFFF (From ACPI Spec.)
+ * Only a 32-bit physical address is necessary.
+ *
+ * NOTE2: This function is always available, regardless of the
+ * initialization state of the rest of ACPI.
*
******************************************************************************/
@@ -504,8 +507,8 @@
{
UINT8 *TablePtr;
UINT8 *MemRover;
- UINT64 PhysAddr;
- ACPI_STATUS Status = AE_OK;
+ UINT32 PhysicalAddress;
+ ACPI_STATUS Status;
ACPI_FUNCTION_TRACE ("TbFindRsdp");
@@ -517,39 +520,62 @@
if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING)
{
/*
- * 1) Search EBDA (low memory) paragraphs
+ * 1a) Get the location of the EBDA
*/
- Status = AcpiOsMapMemory ((UINT64) ACPI_LO_RSDP_WINDOW_BASE, ACPI_LO_RSDP_WINDOW_SIZE,
+ Status = AcpiOsMapMemory ((ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION,
+ ACPI_EBDA_PTR_LENGTH,
(void *) &TablePtr);
if (ACPI_FAILURE (Status))
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",
- ACPI_LO_RSDP_WINDOW_BASE, ACPI_LO_RSDP_WINDOW_SIZE));
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %8.8X for length %X\n",
+ ACPI_EBDA_PTR_LOCATION, ACPI_EBDA_PTR_LENGTH));
return_ACPI_STATUS (Status);
}
- MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_LO_RSDP_WINDOW_SIZE);
- AcpiOsUnmapMemory (TablePtr, ACPI_LO_RSDP_WINDOW_SIZE);
+ ACPI_MOVE_16_TO_32 (&PhysicalAddress, TablePtr);
+ PhysicalAddress <<= 4; /* Convert segment to physical address */
+ AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_PTR_LENGTH);
+
+ /* EBDA present? */
- if (MemRover)
+ if (PhysicalAddress > 0x400)
{
- /* Found it, return the physical address */
+ /*
+ * 1b) Search EBDA paragraphs (EBDA is required to be a minimum of 1K length)
+ */
+ Status = AcpiOsMapMemory ((ACPI_PHYSICAL_ADDRESS) PhysicalAddress,
+ ACPI_EBDA_WINDOW_SIZE,
+ (void *) &TablePtr);
+ if (ACPI_FAILURE (Status))
+ {
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %8.8X for length %X\n",
+ PhysicalAddress, ACPI_EBDA_WINDOW_SIZE));
+ return_ACPI_STATUS (Status);
+ }
+
+ MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_EBDA_WINDOW_SIZE);
+ AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE);
+
+ if (MemRover)
+ {
+ /* Found it, return the physical address */
- PhysAddr = ACPI_LO_RSDP_WINDOW_BASE;
- PhysAddr += ACPI_PTR_DIFF (MemRover,TablePtr);
+ PhysicalAddress += ACPI_PTR_DIFF (MemRover, TablePtr);
- TableInfo->PhysicalAddress = PhysAddr;
- return_ACPI_STATUS (AE_OK);
+ TableInfo->PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) PhysicalAddress;
+ return_ACPI_STATUS (AE_OK);
+ }
}
/*
- * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h
+ * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh
*/
- Status = AcpiOsMapMemory ((UINT64) ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE,
+ Status = AcpiOsMapMemory ((ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE,
+ ACPI_HI_RSDP_WINDOW_SIZE,
(void *) &TablePtr);
if (ACPI_FAILURE (Status))
{
- ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %X for length %X\n",
+ ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not map memory at %8.8X for length %X\n",
ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE));
return_ACPI_STATUS (Status);
}
@@ -561,10 +587,9 @@
{
/* Found it, return the physical address */
- PhysAddr = ACPI_HI_RSDP_WINDOW_BASE;
- PhysAddr += ACPI_PTR_DIFF (MemRover, TablePtr);
+ PhysicalAddress = ACPI_HI_RSDP_WINDOW_BASE + ACPI_PTR_DIFF (MemRover, TablePtr);
- TableInfo->PhysicalAddress = PhysAddr;
+ TableInfo->PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) PhysicalAddress;
return_ACPI_STATUS (AE_OK);
}
}
@@ -575,20 +600,31 @@
else
{
/*
- * 1) Search EBDA (low memory) paragraphs
+ * 1a) Get the location of the EBDA
*/
- MemRover = AcpiTbScanMemoryForRsdp (ACPI_PHYSADDR_TO_PTR (ACPI_LO_RSDP_WINDOW_BASE),
- ACPI_LO_RSDP_WINDOW_SIZE);
- if (MemRover)
+ ACPI_MOVE_16_TO_32 (&PhysicalAddress, ACPI_EBDA_PTR_LOCATION);
+ PhysicalAddress <<= 4; /* Convert segment to physical address */
+
+ /* EBDA present? */
+
+ if (PhysicalAddress > 0x400)
{
- /* Found it, return the physical address */
+ /*
+ * 1b) Search EBDA paragraphs (EBDA is required to be a minimum of 1K length)
+ */
+ MemRover = AcpiTbScanMemoryForRsdp (ACPI_PHYSADDR_TO_PTR (PhysicalAddress),
+ ACPI_EBDA_WINDOW_SIZE);
+ if (MemRover)
+ {
+ /* Found it, return the physical address */
- TableInfo->PhysicalAddress = ACPI_TO_INTEGER (MemRover);
- return_ACPI_STATUS (AE_OK);
+ TableInfo->PhysicalAddress = ACPI_TO_INTEGER (MemRover);
+ return_ACPI_STATUS (AE_OK);
+ }
}
/*
- * 2) Search upper memory: 16-byte boundaries in E0000h-F0000h
+ * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh
*/
MemRover = AcpiTbScanMemoryForRsdp (ACPI_PHYSADDR_TO_PTR (ACPI_HI_RSDP_WINDOW_BASE),
ACPI_HI_RSDP_WINDOW_SIZE);
==== //depot/projects/smpng/sys/dev/bfe/if_bfe.c#8 (text+ko) ====
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.13 2004/05/30 20:08:27 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bfe/if_bfe.c,v 1.14 2004/07/02 12:16:01 mlaier Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -402,7 +402,9 @@
ifp->if_init = bfe_init;
ifp->if_mtu = ETHERMTU;
ifp->if_baudrate = 100000000;
- ifp->if_snd.ifq_maxlen = BFE_TX_QLEN;
+ IFQ_SET_MAXLEN(&ifp->if_snd, BFE_TX_QLEN);
+ ifp->if_snd.ifq_drv_maxlen = BFE_TX_QLEN;
+ IFQ_SET_READY(&ifp->if_snd);
bfe_get_config(sc);
@@ -1256,7 +1258,7 @@
bfe_txeof(sc);
/* We have packets pending, fire them out */
- if (ifp->if_flags & IFF_RUNNING && ifp->if_snd.ifq_head != NULL)
+ if (ifp->if_flags & IFF_RUNNING && !IFQ_DRV_IS_EMPTY(&ifp->if_snd))
bfe_start(ifp);
BFE_UNLOCK(sc);
@@ -1375,7 +1377,7 @@
}
while(sc->bfe_tx_ring[idx].bfe_mbuf == NULL) {
- IF_DEQUEUE(&ifp->if_snd, m_head);
+ IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
if(m_head == NULL)
break;
@@ -1384,7 +1386,7 @@
* enough room, let the chip drain the ring.
*/
if(bfe_encap(sc, m_head, &idx)) {
- IF_PREPEND(&ifp->if_snd, m_head);
+ IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
ifp->if_flags |= IFF_OACTIVE;
break;
}
==== //depot/projects/smpng/sys/dev/em/if_em.c#34 (text+ko) ====
@@ -31,7 +31,7 @@
***************************************************************************/
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list