Print this page
12195 acpidump failed under EFI

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/i86pc/dboot/dboot_startkern.c
          +++ new/usr/src/uts/i86pc/dboot/dboot_startkern.c
↓ open down ↓ 15 lines elided ↑ open up ↑
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  24   24   * Use is subject to license terms.
  25   25   *
  26      - * Copyright 2013 Joyent, Inc.  All rights reserved.
       26 + * Copyright 2020 Joyent, Inc.
  27   27   */
  28   28  
  29   29  
  30   30  #include <sys/types.h>
  31   31  #include <sys/machparam.h>
  32   32  #include <sys/x86_archext.h>
  33   33  #include <sys/systm.h>
  34   34  #include <sys/mach_mmu.h>
  35   35  #include <sys/multiboot.h>
  36   36  #include <sys/multiboot2.h>
↓ open down ↓ 1715 lines elided ↑ open up ↑
1752 1752                  if (efi32tagp != NULL) {
1753 1753                          bi->bi_uefi_arch = XBI_UEFI_ARCH_32;
1754 1754                          bi->bi_uefi_systab = (native_ptr_t)(uintptr_t)
1755 1755                              efi32tagp->mb_pointer;
1756 1756                          process_efi32((EFI_SYSTEM_TABLE32 *)(uintptr_t)
1757 1757                              efi32tagp->mb_pointer);
1758 1758                  }
1759 1759          }
1760 1760  
1761 1761          /*
1762      -         * The ACPI RSDP can be found by scanning the BIOS memory areas or
1763      -         * from the EFI system table. The boot loader may pass in the address
1764      -         * it found the ACPI tables at.
     1762 +         * The multiboot2 info contains a copy of the RSDP; stash a pointer to
     1763 +         * it (see find_rsdp() in fakebop).
1765 1764           */
1766 1765          nacpitagp = (multiboot_tag_new_acpi_t *)
1767      -            dboot_multiboot2_find_tag(mb2_info,
1768      -            MULTIBOOT_TAG_TYPE_ACPI_NEW);
     1766 +            dboot_multiboot2_find_tag(mb2_info, MULTIBOOT_TAG_TYPE_ACPI_NEW);
1769 1767          oacpitagp = (multiboot_tag_old_acpi_t *)
1770      -            dboot_multiboot2_find_tag(mb2_info,
1771      -            MULTIBOOT_TAG_TYPE_ACPI_OLD);
     1768 +            dboot_multiboot2_find_tag(mb2_info, MULTIBOOT_TAG_TYPE_ACPI_OLD);
1772 1769  
1773 1770          if (nacpitagp != NULL) {
1774      -                bi->bi_acpi_rsdp = (native_ptr_t)(uintptr_t)
     1771 +                bi->bi_acpi_rsdp_copy = (native_ptr_t)(uintptr_t)
1775 1772                      &nacpitagp->mb_rsdp[0];
1776 1773          } else if (oacpitagp != NULL) {
1777      -                bi->bi_acpi_rsdp = (native_ptr_t)(uintptr_t)
     1774 +                bi->bi_acpi_rsdp_copy = (native_ptr_t)(uintptr_t)
1778 1775                      &oacpitagp->mb_rsdp[0];
1779 1776          }
1780 1777  }
1781 1778  
1782 1779  /* print out EFI version string with newline */
1783 1780  static void
1784 1781  dboot_print_efi_version(uint32_t ver)
1785 1782  {
1786 1783          int rev;
1787 1784  
↓ open down ↓ 492 lines elided ↑ open up ↑
2280 2277                  dboot_panic(NO_MULTIBOOT);
2281 2278          }
2282 2279  
2283 2280          DBG((uintptr_t)bi);
2284 2281  #if !defined(__xpv)
2285 2282          DBG((uintptr_t)mb_info);
2286 2283          DBG((uintptr_t)mb2_info);
2287 2284          if (mb2_info != NULL)
2288 2285                  DBG(mb2_info->mbi_total_size);
2289 2286          DBG(bi->bi_acpi_rsdp);
     2287 +        DBG(bi->bi_acpi_rsdp_copy);
2290 2288          DBG(bi->bi_smbios);
2291 2289          DBG(bi->bi_uefi_arch);
2292 2290          DBG(bi->bi_uefi_systab);
2293 2291  
2294 2292          if (bi->bi_uefi_systab && prom_debug) {
2295 2293                  if (bi->bi_uefi_arch == XBI_UEFI_ARCH_64) {
2296 2294                          print_efi64((EFI_SYSTEM_TABLE64 *)(uintptr_t)
2297 2295                              bi->bi_uefi_systab);
2298 2296                  } else {
2299 2297                          print_efi32((EFI_SYSTEM_TABLE32 *)(uintptr_t)
↓ open down ↓ 318 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX