riastr...@netbsd.org (Taylor R Campbell) writes:

>   #include <ddb/ddb.h>

>       if (bpa <=3D BADADDR && BADADDR < bpa + size)
>               db_stacktrace();

>Then share the dmesg output on boot with this change to
>bus_space_reserve?

>This way we can track down who's reserving the registers that
>intel_opregion.c wants.


In my case (T420 with Sandy Bridge) nobody did bus_space_reserve
the registers that intel_opregion wants.

This here is the attempt to map the opregion:

 bus_space_reserve 0xffffffff80554799: 0xdaef6018+0x2000 -> extent_alloc_region 
failed
 bus_space_map 0xffffffff807689ee: 0xdaef6018+0x2000 -> bus_space_reserve failed

The iomem extent at that point is:

extent `iomem' (0x0 - 0xffffffffffff), flags = 0x3
      0x0 - 0x57fff
      0x58000 - 0x58fff
      0x59000 - 0x9ffff
      0x100000 - 0x1fffffff
      0x20200000 - 0x3fffffff
      0x40200000 - 0xda99efff
      0xdae9f000 - 0xdaf9efff                 <--------
      0xdaf9f000 - 0xdaffefff
      0xdafff000 - 0xdaffffff
      0xf0000000 - 0xf01fffff
      0xf0200000 - 0xf03fffff
      0xf1400000 - 0xf14000ff
      0xf2400000 - 0xf2401fff
      0xf2500000 - 0xf251ffff
      0xf2520000 - 0xf2523fff
      0xf2528000 - 0xf25287ff
      0xf2529000 - 0xf25293ff
      0xf252a000 - 0xf252a3ff
      0xf252b000 - 0xf252bfff
      0xf8000000 - 0xf8000fff
      0xf8010000 - 0xf8010fff
      0xf80b0000 - 0xf80b0fff
      0xf80c8000 - 0xf80c8fff
      0xf80d0000 - 0xf80d0fff
      0xf80d8000 - 0xf80d8fff
      0xf80e0000 - 0xf80e0fff
      0xf80e1000 - 0xf80e1fff
      0xf80e3000 - 0xf80e3fff
      0xf80e4000 - 0xf80e4fff
      0xf80e8000 - 0xf80e8fff
      0xf80f8000 - 0xf80f8fff
      0xf80fa000 - 0xf80fafff
      0xf80fb000 - 0xf80fbfff
      0xf8300000 - 0xf8300fff
      0xf8d00000 - 0xf8d00fff
      0xfed00000 - 0xfed003ff
      0xfed1c000 - 0xfed1ffff
      0xfed40000 - 0xfed44fff
      0x100000000 - 0x21e5fffff

The iomem extent is initialized from the UEFI memory map:

  #  N START            END
  0  7 0000000000000000 0000000000057fff
  1 10 0000000000058000 0000000000058fff
  2  7 0000000000059000 000000000009ffff
  3  7 0000000000100000 000000001fffffff
  4  0 0000000020000000 00000000201fffff
  5  7 0000000020200000 000000003fffffff
  6  0 0000000040000000 00000000401fffff
  7  7 0000000040200000 00000000da99efff
  8  5 00000000da99f000 00000000daac1fff
  9  5 00000000daac2000 00000000dab9efff
 10  6 00000000dab9f000 00000000dacb1fff
 11  6 00000000dacb2000 00000000dad9efff
 12  0 00000000dad9f000 00000000dae21fff
 13  0 00000000dae22000 00000000dae9afff
 14  0 00000000dae9b000 00000000dae9bfff
 15  0 00000000dae9c000 00000000dae9efff
 16 10 00000000dae9f000 00000000daeddfff
 17 10 00000000daede000 00000000daf9efff      <--------------
 18  9 00000000daf9f000 00000000dafdcfff
 19  9 00000000dafdd000 00000000daffefff
 20  7 00000000dafff000 00000000daffffff
 21 11 00000000f80f8000 00000000f80f8fff
 22 11 00000000fed1c000 00000000fed1ffff
 23  7 0000000100000000 000000021e5fffff

The second column is the EFI md_type that gets translated to a
bootinfo memory type:
    0 = null         -> BIM_Reserved
    5 = rt_code      -> BIM_Reserved
    6 = rt_data      -> BIM_Reserved
    7 = free         -> BIM_Memory
    9 = reclaim      -> BIM_ACPI
   10 = firmware     -> BIM_NVS
   11 = iomem        -> BIM_Reserved

The needed pages are in cluster 17 of type BIM_NVS, which the
extent has added as pre-allocated (merged with cluster 16).

Reply via email to