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).