none
Issue with Loading PCI based driver RRS feed

  • Question

  • Hello All,

    My test PCI driver is not getting loaded on ARM based board Below is the reg settings :

    I have a PCIe core driver which is loading OK.

    I am using busenum2 to load the driver.

    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCIeAsyncLoadingGroup]
        "Dll"="BusEnum2.dll"
        "BusName"="PCIeAsyncLoadingGroupBus"
        "Order"=dword:31
        "Flags"=dword:8            ; DEVFLAGS_NAKEDENTRIES
        "IClass"=multi_sz:"{B3CC6EBA-5507-4196-8E41-2BF42E4A47C9}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"
        "InterfaceType"=dword:0
        "BusIoctl"=dword:2A0048

    [-HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCIe]
    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCIeAsyncLoadingGroup\PCIe]
        "Dll"="PCIe.dll"
         "Order"=dword:39
        "Flags"=dword:8            ;    DEVFLAGS_NAKEDENTRIES

    [-HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI]
    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCIeAsyncLoadingGroup\PCI]
        "Order"=dword:40

    [-HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI]
    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCIeAsyncLoadingGroup\PCI]
        "Dll"="PCIbus.dll"
        "Order"=dword:20
        "Flags"=dword:1000008                    ; DEVFLAGS_NAKEDENTRIES | DEVFLAGS_LOAD_ASYNC
        "BusIoctl"=dword:2a0048
        "IClass"=multi_sz:"{CD149194-286F-4095-9694-D70E6AB867C3}=%b","{6F40791D-300E-44E4-BC38-E0E63CA8375C}=%b"
        "LoadAsyncEvent"="HWConfigReady"  

    ; Registry enumerator used for loading each    PCI    device driver instance    
    [-HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Instance]
    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCIeAsyncLoadingGroup\PCI\Instance]
        "InterfaceType"=dword:5
        "BusName"="PCI"

    [-HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\PCITEST]
    [HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCIeAsyncLoadingGroup\PCI\Template\PCITEST]
        "Prefix"="PCT"
        "Dll"="pcitest.dll"
        "Index"=dword:1
        "Order"=dword:100
        "Dma"=dword:5
        "Class"=dword:02
        "SubClass"=dword:00
        "ProgIF"=dword:00
        "VendorID"=multi_sz:"8086","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797","1797"
        "DeviceID"=multi_sz:"10D3","6801","6801","6802","6803","6804","6805","6806","6807","6808","6809","6810","6811","6812","6813","6814","6815","6816","6864","6817"
        "IsrDll"="giisr.dll"
        "IsrHandler"="ISRHandler"

    Following is the debug output :

    My PCItest driver is not getting loader at the end.

    *****************************************************************************

    PID:00400004 TID:009E0006 PCIeCoreConfig++
    PID:00400003 TID:009E0006 PCIeCoreConfig: PCIe link is up
    PID:00400003 TID:009E0006 PCIBUS!PCICfg+(Drivers\BuiltIn\PCI, BusNumberBase 0x0, BusNumberLength 0xFF MemBase 0x0, MemLen 0xE00000, IoBase 0x0, IoLen 0x100000)
    PID:00400003 TID:009E0006 PCIBUS!PCICfg : No Prefetchable Memory Support
    PID:00400003 TID:009E0006 PCIBUS!PCICfgBus+(Bus 0)
    PID:00400003 TID:009E0006 0/0/0 is 0x1797 0x6864 MF=N (dev sez N) IRQ255 PIN1
    PID:00400003 TID:009E0006 PCIBUS!PCICfgDevice+(Bus 0, Device 0, Function 0, Vendor ID 0x1797, Device ID 0x6864)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch+(Drivers\BuiltIn\PCI\Instance, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch 0 devices to search
    PID:00400003 TID:009E0006 PCIBUS!RegMatch+(Drivers\BuiltIn\PCI\Template, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch 1 devices to search
    PID:00400003 TID:009E0006 PCIBUS!RegMatch RegEnum = 0
    PID:00400003 TID:009E0006 PCIBUS!RegMatchOne+(Drivers\BuiltIn\PCI\Template, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatchOne Checking key Drivers\BuiltIn\PCI\Template\PCITEST.
    PID:00400003 TID:009E0006 PCIBUS!PCICfgCheckBARs+(Bus 0, Device 0, Function 0)
    PID:00400003 TID:009E0006 PCIBUS!PCICfgCheckBars: BAR(0/0/0): Offset 0x10, Type Memory, Size 0x1000
    PID:00400003 TID:009E0006 PCIBUS!PCICfgCheckBars-
    PID:00400003 TID:009E0006 RequestIrq(0/0/0) returns 155
    PID:00400003 TID:009E0006 PCIBUS!PCICfgDevice-
    PID:00400003 TID:009E0006 PCIBUS!PCICfgBus-(Bus 0, SubBus 0, MemSize 0x1000, IoSize 0x0, PrefetchMemSize=0x0)
    PID:00400003 TID:009E0006 PCIBUS!PCICfgAllocateMemSpace+(Bus 0, Base 0x0, Size 0xE00000)
    PID:00400003 TID:009E0006 PCIBUS!PCICfgAllocMemSpace (Device): Bus 0, Device 0, Function 0, Offset 0x10, MemBase 0x0, MemSize 0x1000
    PID:00400003 TID:009E0006 PCIBUS!PCICfgAllocateMemSpace-(Bus 0)
    PID:00400003 TID:009E0006 PCIBUS!PCICfgAllocateIoSpace+(Bus 0, Base 0x0, Size 0x100000)
    PID:00400003 TID:009E0006 PCIBUS!PCICfgAllocateIoSpace-(Bus 0)
    PID:00400003 TID:009E0006 PCIBUS!PCICfg-
    PID:00400003 TID:009E0006 PCIBUS!PCIRegClean(Drivers\BuiltIn\PCI\Instance)
    PID:00400003 TID:009E0006 PCIBUS!PCIEnum(Drivers\BuiltIn\PCI), Boot phase 2
    PID:00400003 TID:009E0006 PCIBUS!PCIGetBARs+(Bus 0, Device 0, Function 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch+(Drivers\BuiltIn\PCI\Instance, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch 0 devices to search
    PID:00400003 TID:009E0006 PCIBUS!RegMatch+(Drivers\BuiltIn\PCI\Template, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch 1 devices to search
    PID:00400003 TID:009E0006 PCIBUS!RegMatch RegEnum = 0
    PID:00400003 TID:009E0006 PCIBUS!RegMatchOne+(Drivers\BuiltIn\PCI\Template, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatchOne Checking key Drivers\BuiltIn\PCI\Template\PCITEST.
    PID:00400003 TID:009E0006 PCIBUS!PCIReadBARs+(Bus 0, Device 0, Function 0)
    PID:00400003 TID:009E0006 PCIBUS!PCIReadBARs-
    PID:00400003 TID:009E0006 PCIBUS!PCIGetBARs-
    PID:00400003 TID:009E0006 PCIBUS!PCIInitDevice+(Bus 0, Device 0, Function 0)
    PID:00400003 TID:009E0006 PCIBUS!PCIReg+(Drivers\BuiltIn\PCI, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch+(Drivers\BuiltIn\PCI\Instance, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch 0 devices to search
    PID:00400003 TID:009E0006 PCIBUS!RegMatch+(Drivers\BuiltIn\PCI\Template, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatch 1 devices to search
    PID:00400003 TID:009E0006 PCIBUS!RegMatch RegEnum = 0
    PID:00400003 TID:009E0006 PCIBUS!RegMatchOne+(Drivers\BuiltIn\PCI\Template, 0, 0, 0)
    PID:00400003 TID:009E0006 PCIBUS!RegMatchOne Checking key Drivers\BuiltIn\PCI\Template\PCITEST.
    PID:00400003 TID:009E0006 BusEnum::BusEnum (ActivateRegPath=Drivers\Active\47)
    PID:00400005 TID:009E0006 Activate Child LoaderDriver at order 0

    ********************************************************************************

    If any of you worked with the PCI driver for WEC can you help me to identify the issue.

    Thanks in advance !

    --- Misbah


    Senior Design Engineer T.E.S Electroni Solutions (Bangalore-India) www.tes-dst.com email-misbah.khan@tes-dst.com


    Friday, April 25, 2014 2:58 PM

All replies

  • Hi misbah,
    do you have solved this problem?  I have encountered the same problem like you. My platform is i.mx6 sabresd,
    I have finished pcie host controller driver,  then,  I want to test pcie whether wolk well or not?  can you give me some idea, thank you anyway.
    cheers,

    damon

     
    Wednesday, November 26, 2014 8:58 AM
  • I have got the helpful information like this"When it finds the best match, based on device identifiers such as ClassSubClassVendorID, and so on".  I print the information about PCIe device configure space. then , I changed the reg to match it . In the end , the device driver is loaded successful.
    Monday, December 1, 2014 7:17 AM