Print this page
acpica-unix2-20130823
PANKOVs restructure

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/intel/io/acpica/tables/tbxfroot.c
          +++ new/usr/src/common/acpica/components/tables/tbxfroot.c
   1    1  /******************************************************************************
   2    2   *
   3    3   * Module Name: tbxfroot - Find the root ACPI table (RSDT)
   4    4   *
   5    5   *****************************************************************************/
   6    6  
   7    7  /*
   8      - * Copyright (C) 2000 - 2011, Intel Corp.
        8 + * Copyright (C) 2000 - 2013, Intel Corp.
   9    9   * All rights reserved.
  10   10   *
  11   11   * Redistribution and use in source and binary forms, with or without
  12   12   * modification, are permitted provided that the following conditions
  13   13   * are met:
  14   14   * 1. Redistributions of source code must retain the above copyright
  15   15   *    notice, this list of conditions, and the following disclaimer,
  16   16   *    without modification.
  17   17   * 2. Redistributions in binary form must reproduce at minimum a disclaimer
  18   18   *    substantially similar to the "NO WARRANTY" disclaimer below
↓ open down ↓ 25 lines elided ↑ open up ↑
  44   44  #define __TBXFROOT_C__
  45   45  
  46   46  #include "acpi.h"
  47   47  #include "accommon.h"
  48   48  #include "actables.h"
  49   49  
  50   50  
  51   51  #define _COMPONENT          ACPI_TABLES
  52   52          ACPI_MODULE_NAME    ("tbxfroot")
  53   53  
  54      -/* Local prototypes */
  55   54  
  56      -static UINT8 *
  57      -AcpiTbScanMemoryForRsdp (
  58      -    UINT8                   *StartAddress,
  59      -    UINT32                  Length);
  60      -
  61      -static ACPI_STATUS
  62      -AcpiTbValidateRsdp (
  63      -    ACPI_TABLE_RSDP         *Rsdp);
  64      -
  65      -
  66   55  /*******************************************************************************
  67   56   *
  68   57   * FUNCTION:    AcpiTbValidateRsdp
  69   58   *
  70   59   * PARAMETERS:  Rsdp                - Pointer to unvalidated RSDP
  71   60   *
  72   61   * RETURN:      Status
  73   62   *
  74   63   * DESCRIPTION: Validate the RSDP (ptr)
  75   64   *
  76   65   ******************************************************************************/
  77   66  
  78      -static ACPI_STATUS
       67 +ACPI_STATUS
  79   68  AcpiTbValidateRsdp (
  80   69      ACPI_TABLE_RSDP         *Rsdp)
  81   70  {
  82      -    ACPI_FUNCTION_ENTRY ();
  83   71  
  84      -
  85   72      /*
  86   73       * The signature and checksum must both be correct
  87   74       *
  88   75       * Note: Sometimes there exists more than one RSDP in memory; the valid
  89   76       * RSDP has a valid checksum, all others have an invalid checksum.
  90   77       */
  91      -    if (ACPI_STRNCMP ((char *) Rsdp, ACPI_SIG_RSDP,
  92      -            sizeof (ACPI_SIG_RSDP)-1) != 0)
       78 +    if (!ACPI_VALIDATE_RSDP_SIG (Rsdp->Signature))
  93   79      {
  94   80          /* Nope, BAD Signature */
  95   81  
  96   82          return (AE_BAD_SIGNATURE);
  97   83      }
  98   84  
  99   85      /* Check the standard checksum */
 100   86  
 101   87      if (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0)
 102   88      {
↓ open down ↓ 14 lines elided ↑ open up ↑
 117  103  
 118  104  /*******************************************************************************
 119  105   *
 120  106   * FUNCTION:    AcpiFindRootPointer
 121  107   *
 122  108   * PARAMETERS:  TableAddress            - Where the table pointer is returned
 123  109   *
 124  110   * RETURN:      Status, RSDP physical address
 125  111   *
 126  112   * DESCRIPTION: Search lower 1Mbyte of memory for the root system descriptor
 127      - *              pointer structure.  If it is found, set *RSDP to point to it.
      113 + *              pointer structure. If it is found, set *RSDP to point to it.
 128  114   *
 129  115   * NOTE1:       The RSDP must be either in the first 1K of the Extended
 130  116   *              BIOS Data Area or between E0000 and FFFFF (From ACPI Spec.)
 131  117   *              Only a 32-bit physical address is necessary.
 132  118   *
 133  119   * NOTE2:       This function is always available, regardless of the
 134  120   *              initialization state of the rest of ACPI.
 135  121   *
 136  122   ******************************************************************************/
 137  123  
↓ open down ↓ 89 lines elided ↑ open up ↑
 227  213  
 228  214          PhysicalAddress = (UINT32)
 229  215              (ACPI_HI_RSDP_WINDOW_BASE + ACPI_PTR_DIFF (MemRover, TablePtr));
 230  216  
 231  217          *TableAddress = PhysicalAddress;
 232  218          return_ACPI_STATUS (AE_OK);
 233  219      }
 234  220  
 235  221      /* A valid RSDP was not found */
 236  222  
 237      -    ACPI_ERROR ((AE_INFO, "A valid RSDP was not found"));
      223 +    ACPI_BIOS_ERROR ((AE_INFO, "A valid RSDP was not found"));
 238  224      return_ACPI_STATUS (AE_NOT_FOUND);
 239  225  }
 240  226  
 241  227  ACPI_EXPORT_SYMBOL (AcpiFindRootPointer)
 242  228  
 243  229  
 244  230  /*******************************************************************************
 245  231   *
 246  232   * FUNCTION:    AcpiTbScanMemoryForRsdp
 247  233   *
 248  234   * PARAMETERS:  StartAddress        - Starting pointer for search
 249  235   *              Length              - Maximum length to search
 250  236   *
 251  237   * RETURN:      Pointer to the RSDP if found, otherwise NULL.
 252  238   *
 253  239   * DESCRIPTION: Search a block of memory for the RSDP signature
 254  240   *
 255  241   ******************************************************************************/
 256  242  
 257      -static UINT8 *
      243 +UINT8 *
 258  244  AcpiTbScanMemoryForRsdp (
 259  245      UINT8                   *StartAddress,
 260  246      UINT32                  Length)
 261  247  {
 262  248      ACPI_STATUS             Status;
 263  249      UINT8                   *MemRover;
 264  250      UINT8                   *EndAddress;
 265  251  
 266  252  
 267  253      ACPI_FUNCTION_TRACE (TbScanMemoryForRsdp);
↓ open down ↓ 21 lines elided ↑ open up ↑
 289  275          /* No sig match or bad checksum, keep searching */
 290  276      }
 291  277  
 292  278      /* Searched entire block, no RSDP was found */
 293  279  
 294  280      ACPI_DEBUG_PRINT ((ACPI_DB_INFO,
 295  281          "Searched entire block from %p, valid RSDP was not found\n",
 296  282          StartAddress));
 297  283      return_PTR (NULL);
 298  284  }
 299      -
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX