Understanding code12 resource conflict

I installed a barebones driver on a device I’ll be working on (only have DriverEntry/DeviceAdd and both return success). In device manager, my device has a yellow bang over it with the status saying there aren’t enough free resources that it can use.

Upon inspecting the output of !arbiter, I see a large range of addresses conflicting

DEVNODE ffffc88573d039c0 (ACPI\PNP0A08\0)
Memory Arbiter “PCI Memory (b=0)” at ffffc88579294ae0
Allocated ranges:
0000000000000000 - 000000000009ffff 00000000
0000000000100000 - 000000008fffffff 00000000
0000000092500000 - 00000000925fffff ffffc88579293060 (pci)
0000000092600000 - 000000009260ffff ffffc8857928f060
0000000092620000 - 0000000092623fff ffffc88579283060 (HDAudBus)
0000000092628000 - 0000000092629fff ffffc88579295830 (storahci)
000000009262a000 - 000000009262afff ffffc885793d7830 (MEIx64)
000000009262b000 - 000000009262b0ff B ffffc885793f2060
000000009262b800 - 000000009262bfff ffffc88579295830 (storahci)
000000009262c000 - 000000009262c0ff ffffc88579295830 (storahci)
0000000092700000 - 00000000a08fffff ffffc8857928d060 (pci)
00000000c0000000 - 00000000d01fffff ffffc88579293060 (pci)
00000000d0200000 - 00000000d02fffff ffffc88579285060 (pci)
00000000d0300000 - 00000000de2fffff ffffc8857928d060 (pci)
00000000e0000000 - 00000000efffffff
00000000e0000000 - 00000000efffffff CB 00000000
00000000e0000000 - 00000000efffffff CB ffffc88579293950
00000000fc800000 - 00000000fccfffff ffffc885793be060 (pci)
00000000fd000000 - 00000000fe7fffff B ffffc88579293950
00000000feb00000 - 0000003fffffffff
00000000feb00000 - 0000003fffffffff C 00000000
00000000fed00000 - 00000000fed03fff CB ffffc8857a318a90
00000000fed10000 - 00000000fed17fff CB ffffc88579293950
00000000fed18000 - 00000000fed18fff CB ffffc88579293950
00000000fed19000 - 00000000fed19fff CB ffffc88579293950
00000000fed20000 - 00000000fed3ffff CB ffffc88579293950
00000000fed45000 - 00000000fed8ffff CBA ffffc88579293950
00000000fed90000 - 00000000fed93fff CBA ffffc88579293950
00000000fee00000 - 00000000feefffff CBA ffffc88579293950
00000000fef00000 - 00000000fef0ffff CB ffffc8857a30b8b0 (MyDriver)
00000000ff000000 - 00000000ffffffff CBA ffffc88579293950
00000000ff000000 - 00000000ffffffff CBA ffffc885793c2c90
0000007fffff0000 - 0000007fffffffff ffffc88579283060 (HDAudBus)
0000008000000000 - ffffffffffffffff
0000008000000000 - ffffffffffffffff C 00000000
0001000000000000 - ffffffffffffffff C 00000000
Possible allocation:
< none >

I noticed there’s an address range of 00000000feb00000 - 0000003fffffffff with a note saying “Not on bus”.

When looking at the output of !devnode on the device I’m interested in, I tells me there’s a conflict and to run !code12, yet the output of that command looks goofy.

0: kd> !devnode ffffc8857928e010
DevNode 0xffffc8857928e010 for PDO 0xffffc8857a30b8b0
Parent 0xffffc885793a7a30 Sibling 0xffffc8857928e540 Child 0000000000
InstancePath is “ACPI\DEV0001\4&18e05879&0”
ServiceName is “MyDriver”
State = DeviceNodeDriversAdded (0x303)
Previous State = DeviceNodeInitialized (0x302)
StateHistory[01] = DeviceNodeInitialized (0x302)
StateHistory[00] = DeviceNodeUninitialized (0x301)
StateHistory[19] = Unknown State (0x0)
StateHistory[18] = Unknown State (0x0)
StateHistory[17] = Unknown State (0x0)
StateHistory[16] = Unknown State (0x0)
StateHistory[15] = Unknown State (0x0)
StateHistory[14] = Unknown State (0x0)
StateHistory[13] = Unknown State (0x0)
StateHistory[12] = Unknown State (0x0)
StateHistory[11] = Unknown State (0x0)
StateHistory[10] = Unknown State (0x0)
StateHistory[09] = Unknown State (0x0)
StateHistory[08] = Unknown State (0x0)
StateHistory[07] = Unknown State (0x0)
StateHistory[06] = Unknown State (0x0)
StateHistory[05] = Unknown State (0x0)
StateHistory[04] = Unknown State (0x0)
StateHistory[03] = Unknown State (0x0)
StateHistory[02] = Unknown State (0x0)
Flags (0x6c0020f0) DNF_ENUMERATED, DNF_IDS_QUERIED,
DNF_HAS_BOOT_CONFIG, DNF_BOOT_CONFIG_RESERVED,
DNF_HAS_PROBLEM, DNF_NO_LOWER_DEVICE_FILTERS,
DNF_NO_LOWER_CLASS_FILTERS, DNF_NO_UPPER_DEVICE_FILTERS,
DNF_NO_UPPER_CLASS_FILTERS
UserFlags (0x00000002) DNUF_DONT_SHOW_IN_UI
CapabilityFlags (0x00020080) SilentInstall, NoDisplayInUI
Problem = CM_PROB_NORMAL_CONFLICT
Problem Status = 0xc0000018
(For more information about this problem, run: !code12 0xffffc8857928e010)
!code12: Device node 0xffffc8857928e010
Rebalance triggered by Devnode 0x0000000000000000
Rebalance reason:

Dump conflicting resources that caused rebalance:
* Resource type: CmResourceTypeNull (0)
* Resource request alternatives count: 0

Dump arbiter instance: !arbinst 0x0000000000000000
!arbinst []
Error reading ArbiterInstance 00000000

First question, what exactly does “Not on bus” mean?

Second, why does the output of !code12 reference null addresses, lists errors, and say the resource type is CmResourceTypeNull?

So, what sort of resources does your driver require? Does it define these resources in the INF?

–pa

A modern pnp device should never declare its needed resources in an inf. Perhaps msi configuration, but not the hw resources themselves

Bent from my phone


From: xxxxx@lists.osr.com on behalf of xxxxx@fastmail.fm
Sent: Wednesday, February 14, 2018 4:35:45 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Understanding code12 resource conflict

So, what sort of resources does your driver require? Does it define these resources in the INF?

–pa


NTDEV is sponsored by OSR

Visit the list online at: https:

MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
Details at https:

To unsubscribe, visit the List Server section of OSR Online at https:</https:></https:></https:>

In the resources tab for my device in Device Manager shows it uses a range
of IO, has an IRQ line, and has a 64k region of memory.
The tree structure for my device looks like PCI Root Complex -> Intel LPC
Controller -> My device. The LPC controller does not have any resources
dedicated for it but the PCI Root Complex device does. The resources it
shows it has allocated for it includes several different memory regions
which within it, which several devices use sections of that memory,
however, non of which include devices under the LPC controller device. This
range is 00000000feb00000 - 0000003fffffffff.

Does this mean anything?

On Wed, Feb 14, 2018 at 5:33 PM, xxxxx@microsoft.com <
xxxxx@lists.osr.com> wrote:

A modern pnp device should never declare its needed resources in an inf.
Perhaps msi configuration, but not the hw resources themselves

Bent from my phone

*From:* xxxxx@lists.osr.com > osr.com> on behalf of xxxxx@fastmail.fm
> Sent: Wednesday, February 14, 2018 4:35:45 PM
> To: Windows System Software Devs Interest List
> Subject: RE:[ntdev] Understanding code12 resource conflict
>
> So, what sort of resources does your driver require? Does it define these
> resources in the INF?
>
> --pa
>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list online at: https:> protection.outlook.com/?url=http%3A%2F%2Fwww.osronline.
> com%2Fshowlists.cfm%3Flist%3Dntdev&data=04%7C01%7CDoron.
> Holan%40microsoft.com%7C052d07d2dac64031e83008d5740c118d%
> 7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636542517551684582%7CUnknown%
> 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik
> 1haWwifQ%3D%3D%7C-1&sdata=1urgiZJTTJsXrYi0Amvh5DysxPMatj
> WYdEt3jHzjDrg%3D&reserved=0>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at https:> http%3A%2F%2Fwww.osr.com%2Fseminars&data=04%7C01%
> 7CDoron.Holan%40microsoft.com%7C052d07d2dac64031e83008d5740c118d%
> 7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636542517551694587%7CUnknown%
> 7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik
> 1haWwifQ%3D%3D%7C-1&sdata=C6KzHVBis%2FDhds3qEIYSDwWrV0BbdAhO5Kj9CB
> YIbZI%3D&reserved=0>
>
> To unsubscribe, visit the List Server section of OSR Online at <
> https://na01.safelinks.protection.outlook.com/?url=
> http%3A%2F%2Fwww.osronline.com%2Fpage.cfm%3Fname%
> 3DListServer&data=04%7C01%7CDoron.Holan%40microsoft.com%
> 7C052d07d2dac64031e83008d5740c118d%7C72f988bf86f141af91ab2d7cd011
> db47%7C1%7C0%7C636542517551694587%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAw
> MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwifQ%3D%3D%7C-1&sdata=h%2FJpIgmK3%
> 2F4wexFbMOW1Ba5FU9FvK86%2BWdc5zbeH9mI%3D&reserved=0>
>
> —
> NTDEV is sponsored by OSR
>
> Visit the list online at: http:> showlists.cfm?list=ntdev>
>
> MONTHLY seminars on crash dump analysis, WDF, Windows internals and
> software drivers!
> Details at http:
>
> To unsubscribe, visit the List Server section of OSR Online at <
> http://www.osronline.com/page.cfm?name=ListServer&gt;
></http:></http:></https:></https:>

xxxxx@gmail.com wrote:

In the resources tab for my device in Device Manager shows it uses a
range of IO, has an IRQ line, and has a 64k region of memory. 
The tree structure for my device looks like PCI Root Complex -> Intel
LPC Controller -> My device. The LPC controller does not have any
resources dedicated for it but the PCI Root Complex device does.

Is that literally how your device is connected?  The LPC controller is
mostly used for serial and parallel ports, and some GPIO lines – things
that have I/O ports.  It shouldn’t have any PCI memory presence.  If
that’s not literally where your device is located, then your BIOS ACPI
tables are wrong.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

I’m experiencing exactly the same issue!

EvtDevicePrepareHardware is not being called. WdfDriverCreate returns 0 but if I don’t call this function and simply return 0 in DriverEntry, the exclamation (bang) icon is gone.


The driver works for all apple hardware excluding the one above (iMac Pro 2017)
For example it’s fine on the other mac:

SMC Device has memory range FE0B0000-FE0BFFFF, “Apple Graphics mux” device has memory range FE0B0200-FE0B0207
Looks like they are intersecting.

Windows doesn’t handle overlapping resource assignments. Have you checked the ACPI DSDT to see if the assignment is in there? If you disable the graphics mux, does it work?

Thanks for the answer, Tim. Yes, I did try to disable it, reboot, no success. Graphics mux has nulldriver anyway

`Windows doesn’t handle overlapping resource assignments.
Does it mean I cannot install my driver on this machine?

Have you checked the ACPI DSDT to see if the assignment is in there?
Sorry I don’t how to do that.

Ok, I managed to dump ACPI DSDT. Figured out how to recompile it and override in Windows test mode. I even removed the “Graphics mux” device from there, it disappeared from the Device Manager, still problem with allocating resources for my device. If I remove its memory resources from the dsdt, driver is loaded fine.