From: aes on 24 Oct 2006 13:52 We are testing our PCI Multiport Serial Adapter drivers (WHQL certified for 2000/XP) with Vista RC2. We use multifunction bus driver mf.sys provided by Microsoft for child PDO generation. In the child function driver we filter the resource requirements during IRP_MN_FILTER_RESOURCE_REQUIREMENTS by modifying the length and offset since each child needs a segment of the BAR resources. We get the requested resources in IRP_MN_START_DEVICE that provides the offset and length and we map it and then use it. This seems to comply with the specification of 'Multifunction Devices' in. Everything worked fine for the last six years but now it does not work with Vista. In Vista, we can not modify the offset of the BAR resources, all the fields related to address offset is NULL, however, the length field is valid and if we modify the length field then we get the changed length in IRP_MN_START_DEVICE, but this does not help since the base address passed to each child same for all. If we map only required segment of the resource then the driver is functional and works, but I/O manager or such is confused and the device manager shows that the I/O is in conflict with another device in 'Resources' section and to my surprise the display shows IRQ is also not available. Following the text snippet from the inf related to resource declaration HKR,Child0000,HardwareID,,MF\BH0001 HKR,Child0000,ResourceMap,1,06,02 HKR,Child0001,HardwareID,,MF\BH0002 HKR,Child0001,ResourceMap,1,06,02 We also did experiments involving inf with 'VaryingResourceMap' mentioning the segment of resources for each child. We get the requested resources in IRP_MN_START_DEVICE with the offset and length and the driver works fine but device manager display shows same information with the I/O conflict and IRQ not available. While the driver works fine but the display in device manger shows that some things are not being handled properly. It seems that multifunction bus driver mf.sys provided by Microsoft is not implemented properly in Vista. Could someone from Microsoft confirm this and possibly suggest a workaround if mf.sys is not going to be modified? We have a few products that use mf.sys and all of them are affected and your help is very much appreciated.
From: Eliyas Yakub [MSFT] on 25 Oct 2006 20:18 The right thing to do is use VaryingResourceMap rather than modifying the resources in IRP_MN_FILTER_RESOURCE_REQUIREMENTS. In order to figure out what the conflict issue is, we might need more information as to the details about the IO ranges and IRQ involved, the VaryingResourceMap entry, and the specific conflicts reported by device manager. Also there is a section in the windbg documentation that describes how to debug resource conflict issues using !arbiter command. Providing the output of these command would also help. -- -Eliyas This posting is provided "AS IS" with no warranties, and confers no rights. http://www.microsoft.com/whdc/driver/tips/default.mspx
From: aes on 26 Oct 2006 12:35 Following is the entry in the 'inf' file regarding memory ranges and IRQ involved HKR,Child00,HardwareID,,CTIPORT HKR,Child00,ResourceMap,1,02 HKR,Child00,VaryingResourceMap,1,00, 00,00,00,00, 00,02,00,00 HKR,Child01,HardwareID,,CTIPORT HKR,Child01,ResourceMap,1,02 HKR,Child01,VaryingResourceMap,1,00, 00,02,00,00, 00,02,00,00 Port properties of 'Resources' from Device Manager Communications Port(COM3) Resource Settings: Resource type Setting IRQ (blue rectangle marked with red) 0x100000010(16) Memory Range (blue rectangle marked with red) DA000000 – DA0001FF Conflicting device list: Interrupt Request 0x100000010(16) not available. Memory Range (blue rectangle marked with red) DA000000 – DA0001FF not available. Port properties of 'Resources' from Device Manager Communications Port(COM4) Resource Settings: Resource type Setting IRQ (blue rectangle marked with red) 0x100000010(16) Memory Range (blue rectangle marked with red) DA000200 – DA0003FF Conflicting device list: Interrupt Request 0x100000010(16) not available. Memory Range (blue rectangle marked with red) DA000200 – DA0003FF not available. Following is the output of arbiter command, our device is PCI\VEN_13A8&DEV_0152&SUBSYS_033012C4&REV_01\4&13699180&0&3048. IRQ is shown as shared but memory resources are not marked as conflict, the information does not match with Device Manager. 0: kd> !arbiter 7 DEVNODE 82b47230 (HTREE\ROOT\0) Interrupt Arbiter "RootIRQ" at 8192cd20 Allocated ranges: 0000000000000000 - 0000000000000000 B 82b35db0 0000000000000001 - 0000000000000001 B 82b35db0 0000000000000002 - 0000000000000002 B 82b35db0 0000000000000003 - 0000000000000003 B 82b35db0 0000000000000004 - 0000000000000004 B 82b35db0 0000000000000005 - 0000000000000005 B 82b35db0 0000000000000006 - 0000000000000006 B 82b35db0 0000000000000007 - 0000000000000007 B 82b35db0 0000000000000008 - 0000000000000008 B 82b35db0 0000000000000009 - 0000000000000009 B 82b35db0 000000000000000a - 000000000000000a B 82b35db0 000000000000000b - 000000000000000b B 82b35db0 000000000000000c - 000000000000000c B 82b35db0 000000000000000d - 000000000000000d B 82b35db0 000000000000000e - 000000000000000e B 82b35db0 000000000000000f - 000000000000000f B 82b35db0 0000000000000010 - 0000000000000010 B 82b35db0 0000000000000011 - 0000000000000011 B 82b35db0 0000000000000012 - 0000000000000012 B 82b35db0 0000000000000013 - 0000000000000013 B 82b35db0 0000000000000014 - 0000000000000014 B 82b35db0 0000000000000015 - 0000000000000015 B 82b35db0 0000000000000016 - 0000000000000016 B 82b35db0 0000000000000017 - 0000000000000017 B 82b35db0 0000000000000018 - 0000000000000018 B 82b35db0 0000000000000019 - 0000000000000019 B 82b35db0 000000000000001a - 000000000000001a B 82b35db0 000000000000001b - 000000000000001b B 82b35db0 000000000000001c - 000000000000001c B 82b35db0 000000000000001d - 000000000000001d B 82b35db0 000000000000001e - 000000000000001e B 82b35db0 000000000000001f - 000000000000001f B 82b35db0 0000000000000020 - 0000000000000020 B 82b35db0 0000000000000021 - 0000000000000021 B 82b35db0 0000000000000022 - 0000000000000022 B 82b35db0 0000000000000023 - 0000000000000023 B 82b35db0 0000000000000024 - 0000000000000024 B 82b35db0 0000000000000025 - 0000000000000025 B 82b35db0 0000000000000026 - 0000000000000026 B 82b35db0 0000000000000027 - 0000000000000027 B 82b35db0 0000000000000028 - 0000000000000028 B 82b35db0 0000000000000029 - 0000000000000029 B 82b35db0 000000000000002a - 000000000000002a B 82b35db0 000000000000002b - 000000000000002b B 82b35db0 000000000000002c - 000000000000002c B 82b35db0 000000000000002d - 000000000000002d B 82b35db0 000000000000002e - 000000000000002e B 82b35db0 000000000000002f - 000000000000002f B 82b35db0 0000000000000050 - 0000000000000050 82b3d3d0 (ACPI) 0000000000000051 - 0000000000000051 82b3d3d0 (ACPI) 0000000000000052 - 0000000000000052 82b3d3d0 (ACPI) 0000000000000053 - 0000000000000053 82b3d3d0 (ACPI) 0000000000000054 - 0000000000000054 82b3d3d0 (ACPI) 0000000000000055 - 0000000000000055 82b3d3d0 (ACPI) 0000000000000056 - 0000000000000056 82b3d3d0 (ACPI) 0000000000000057 - 0000000000000057 82b3d3d0 (ACPI) 0000000000000058 - 0000000000000058 82b3d3d0 (ACPI) 0000000000000059 - 0000000000000059 82b3d3d0 (ACPI) 000000000000005a - 000000000000005a 82b3d3d0 (ACPI) 000000000000005b - 000000000000005b 82b3d3d0 (ACPI) 000000000000005c - 000000000000005c 82b3d3d0 (ACPI) 000000000000005d - 000000000000005d 82b3d3d0 (ACPI) 000000000000005e - 000000000000005e 82b3d3d0 (ACPI) 000000000000005f - 000000000000005f 82b3d3d0 (ACPI) 0000000000000060 - 0000000000000060 82b3d3d0 (ACPI) 0000000000000061 - 0000000000000061 82b3d3d0 (ACPI) 0000000000000062 - 0000000000000062 82b3d3d0 (ACPI) 0000000000000063 - 0000000000000063 82b3d3d0 (ACPI) 0000000000000064 - 0000000000000064 82b3d3d0 (ACPI) 0000000000000065 - 0000000000000065 82b3d3d0 (ACPI) 0000000000000066 - 0000000000000066 82b3d3d0 (ACPI) 0000000000000067 - 0000000000000067 82b3d3d0 (ACPI) 0000000000000068 - 0000000000000068 82b3d3d0 (ACPI) 0000
From: aes on 30 Oct 2006 11:51 If you need more information please let me know ASAP. We really would like to have this issue cleared up and ready soon to help support our Windows users. Allan "aes" wrote: > Following is the entry in the 'inf' file regarding memory ranges and IRQ > involved > > > > HKR,Child00,HardwareID,,CTIPORT > > HKR,Child00,ResourceMap,1,02 > > HKR,Child00,VaryingResourceMap,1,00, 00,00,00,00, 00,02,00,00 > > HKR,Child01,HardwareID,,CTIPORT > > HKR,Child01,ResourceMap,1,02 > > HKR,Child01,VaryingResourceMap,1,00, 00,02,00,00, 00,02,00,00 > > > > Port properties of 'Resources' from Device Manager > > > > Communications Port(COM3) > > > > Resource Settings: > > > > Resource type > Setting > > IRQ (blue rectangle marked with red) > 0x100000010(16) > > Memory Range (blue rectangle marked with red) DA000000 – DA0001FF > > > > Conflicting device list: > > Interrupt Request 0x100000010(16) not available. > > Memory Range (blue rectangle marked with red) DA000000 – DA0001FF not > available. > > > > Port properties of 'Resources' from Device Manager > > > > Communications Port(COM4) > > > > Resource Settings: > > > > Resource type > Setting > > IRQ (blue rectangle marked with red) > 0x100000010(16) > > Memory Range (blue rectangle marked with red) DA000200 – DA0003FF > > > > Conflicting device list: > > Interrupt Request 0x100000010(16) not available. > > Memory Range (blue rectangle marked with red) DA000200 – DA0003FF not > available. > > > > Following is the output of arbiter command, our device is > PCI\VEN_13A8&DEV_0152&SUBSYS_033012C4&REV_01\4&13699180&0&3048. IRQ is shown > as shared but memory resources are not marked as conflict, the information > does not match with Device Manager. > > > > 0: kd> !arbiter 7 > > > > DEVNODE 82b47230 (HTREE\ROOT\0) > > Interrupt Arbiter "RootIRQ" at 8192cd20 > > Allocated ranges: > > 0000000000000000 - 0000000000000000 B 82b35db0 > > 0000000000000001 - 0000000000000001 B 82b35db0 > > 0000000000000002 - 0000000000000002 B 82b35db0 > > 0000000000000003 - 0000000000000003 B 82b35db0 > > 0000000000000004 - 0000000000000004 B 82b35db0 > > 0000000000000005 - 0000000000000005 B 82b35db0 > > 0000000000000006 - 0000000000000006 B 82b35db0 > > 0000000000000007 - 0000000000000007 B 82b35db0 > > 0000000000000008 - 0000000000000008 B 82b35db0 > > 0000000000000009 - 0000000000000009 B 82b35db0 > > 000000000000000a - 000000000000000a B 82b35db0 > > 000000000000000b - 000000000000000b B 82b35db0 > > 000000000000000c - 000000000000000c B 82b35db0 > > 000000000000000d - 000000000000000d B 82b35db0 > > 000000000000000e - 000000000000000e B 82b35db0 > > 000000000000000f - 000000000000000f B 82b35db0 > > 0000000000000010 - 0000000000000010 B 82b35db0 > > 0000000000000011 - 0000000000000011 B 82b35db0 > > 0000000000000012 - 0000000000000012 B 82b35db0 > > 0000000000000013 - 0000000000000013 B 82b35db0 > > 0000000000000014 - 0000000000000014 B 82b35db0 > > 0000000000000015 - 0000000000000015 B 82b35db0 > > 0000000000000016 - 0000000000000016 B 82b35db0 > > 0000000000000017 - 0000000000000017 B 82b35db0 > > 0000000000000018 - 0000000000000018 B 82b35db0 > > 0000000000000019 - 0000000000000019 B 82b35db0 > > 000000000000001a - 000000000000001a B 82b35db0 > > 000000000000001b - 000000000000001b B 82b35db0 > > 000000000000001c - 000000000000001c B 82b35db0 > > 000000000000001d - 000000000000001d B 82b35db0 > > 000000000000001e - 000000000000001e B 82b35db0 > > 000000000000001f - 000000000000001f B 82b35db0 > > 0000000000000020 - 0000000000000020 B 82b35db0 > > 0000000000000021 - 0000000000000021 B 82b35db0 > > 0000000000000022 - 0000000000000022 B 82b35db0 > > 0000000000000023 - 0000000000000023 B 82b35db0 > > 0000000000000024 - 0000000000000024 B 82b35db0 > > 0000000000000025 - 0000000000000025 B 82b35db0 > > 0000000000000026 - 0000000000000026 B 82b35db0 > > 0000000000000027 - 0000000000000027 B 82b35db0 > > 0000000000000028 - 0000000000000028 B 82b35db0 > > 0000000000000029 - 0000000000000029 B 82b35db0 > > 000000000000002a - 000000000000002a B 82b35db0 > > 000000000000002b - 000000000000002b B 82b35db0 > > 000000000000002c - 000000000000002c B 82b35db0 > > 000000000000002d - 000000000000002d B 82b35db0 > > 000000000000002e - 000000000000002e B 82b35db0 > > 000000000000002f - 000000000000002f B 82b35db0 > > 0000000000000050 - 0000000000000050 82b3d3d0 (ACPI) > > 0000000000000051 - 0000000000000051 82b3d3d0 (ACPI) > > 0000000000000052 - 0000000000000052 82b3d3d0 (ACPI) > > 0000000000000053 - 0000000000000053 82b3d3d0 (ACPI) > > 0000000000000054 - 0000000000000054 82b3d3d0 (ACPI) > > 0000000000000055 - 0000000000000055 82b3d3d0 (ACPI) > > 0000000000000056 - 0000000000000056 82b3d3d0 (ACPI) > > 0000000000000057 - 0000000000000057 82b3d3d0 (ACPI) > > 0000000000000058 - 0000000000000058 82b3d3d0 (ACPI) > > 0000000000000059 - 0000000000000059 82b3d3d0 (ACPI) > > 000000000000005a - 000000000000005a 82b3d3d0 (ACPI) > > 000000000000005b - 000000000000005b 82b3d3d0 (ACPI) > > 000000000000005c - 000000000000005c 82b3d3d0 (ACPI) > > 000000000000005d - 000000000000005d 82b3d3d0 (ACPI) > > 000000000000005e - 000000000000005e 82b3d3d0 (ACPI) > > 000000000000005f - 000000000000005f 82b3
From: aes on 30 Oct 2006 14:02 In case it is any help. Here is some more info provided by msinfo32.exe, this is an application by Microsoft provides resources information. It also shows some differences with WinDBG. ************************************************************************************************************************************************ [Memory] Resource Device Status 0xA0000-0xBFFFF PCI bus OK 0xA0000-0xBFFFF PCI standard PCI-to-PCI bridge OK 0xA0000-0xBFFFF RADEON X300/X550 Series (Microsoft Corporation - WDDM) OK 0xC0000-0xDFFFF PCI bus OK 0x40000000-0xFEBFFFFF PCI bus OK 0xDA103000-0xDA103FFF Standard OpenHCD USB Host Controller OK 0xFEB00000-0xFEB000FF Standard Enhanced PCI to USB Host Controller OK 0xDA102000-0xDA102FFF Standard Dual Channel PCI IDE Controller OK 0xDA101000-0xDA101FFF Standard Dual Channel PCI IDE Controller OK 0xDA000000-0xDA0FFFFF PCI standard PCI-to-PCI bridge OK 0xDA000000-0xDA0FFFFF OEM's 2-Port UART PCI Card OK 0xDA000000-0xDA0FFFFF OEM Communications Port (COM3) OK 0xDA000200-0xDA0003FF OEM Communications Port (COM4) OK 0xDA100000-0xDA100FFF NVIDIA nForce Networking Controller OK 0xD8000000-0xD9FFFFFF PCI standard PCI-to-PCI bridge OK 0xD0000000-0xD7FFFFFF PCI standard PCI-to-PCI bridge OK 0xD0000000-0xD7FFFFFF RADEON X300/X550 Series (Microsoft Corporation - WDDM) OK 0xD9000000-0xD900FFFF RADEON X300/X550 Series (Microsoft Corporation - WDDM) OK 0xD9FF0000-0xD9FFFFFF RADEON X300/X550 Series Sec (Microsoft Corporation - WDDM) OK 0xE0000000-0xEFFFFFFF Motherboard resources OK 0xF0000-0xF3FFF System board OK 0xF4000-0xF7FFF System board OK 0xF8000-0xFBFFF System board OK 0xFC000-0xFFFFF System board OK 0x3FFF0000-0x3FFFFFFF System board OK 0xFFFF0000-0xFFFFFFFF System board OK 0x0000-0x9FFFF System board OK 0x100000-0x3FFEFFFF System board OK 0xFEC00000-0xFEC00FFF System board OK 0xFEE00000-0xFEEFFFFF System board OK 0xFEFFF000-0xFEFFFFFF System board OK 0xFFF80000-0xFFF80FFF System board OK 0xFFF90000-0xFFFBFFFF System board OK 0xFFFED000-0xFFFEFFFF System board OK 0xDA000000-0xDA0FFFFF OEM's 2-Port UART PCI Card OK 0xDA000000-0xDA0FFFFF OEM Communications Port (COM3) OK 0xDA000200-0xDA0003FF OEM Communications Port (COM4) OK ************************************************************************************************************************************************ The resource occupation is wrong both for OEM's 2-Port UART PCI Card and OEM Communications Port (COM3). And resource 0xDA000000-0xDA0FFFFF for OEM's 2-Port UART PCI Card and COM3 is wrong. In XP msinfo32.exe reports resources correctly. Following is the PCI information regarding our board with the length in the BAR register. 0: kd> !pci 100 5 PCI Bus 0x5 06:0 13a8:0152.01 Cmd[0000:......] Sts[0080:.....] XR Serial Controller SubID:12c4:0330 Config Space: (Bus: 5 Device: 6 Func: 0) 00: VendorID 13a8 Exar Corp. 02: DeviceID 0152 04: Command 0000 06: Status 0080 FB2BCapable 08: RevisionID 01 09: ProgIF 02 16550 Compatible 0a: SubClass 00 Serial Controller 0b: BaseClass 07 Simple Communications Controller 0c: CacheLineSize 0000 0d: LatencyTimer 00 0e: HeaderType 00 0f: BIST 00 10: BAR0 da000000 14: BAR1 00000000 18: BAR2 00000000 1c: BAR3 00000000 20: BAR4 00000000 24: BAR5 00000000 28: CBCISPtr 00000000 2c: SubSysVenID 12c4 2e: SubSysID 0330 30: ROMBAR 00000000 34: CapPtr 00 3c: IntLine 10 3d: IntPin 01 3e: MinGnt 00 3f: MaxLat 00 Device Private: 40: 32b932b3 32c932c3 32d932d3 32f832f3 50: 331832fe 3323331d 3342333d 33583348 60: 3360335c 33683364 3370336c 33783374 70: 3380337c 33b033aa 33c633c1 33ee33cc 80: 33f933f3 341f341a 342f3425 343f3435 90: 344f3445 34693455 3474346e 3494348b a0: 34a3349d 34bc34b7 34e734c2 34f234ec b0: 351c3517 35363522 3541353b 355a3555 c0: 35743560 357f3579 359a3595 35b435a0 d0: 35bf35b9 35e535e0 35f535eb 360535fb e0: 3615360b 362f361b 363a3634 36593653 f0: 3674366f 3693367a 369e3698 36bd36b8 0: kd> !ecd 5.6.0 10 ffffffff 0: kd> !pci 100 5 PCI Bus 0x5 06:0 13a8:0152.01 Cmd[0000:......] Sts[0080:.....] XR Serial Controller SubID:12c4:0330 Config Space: (Bus: 5 Device: 6 Func: 0) 00: VendorID 13a8 Exar Corp. 02: DeviceID 0152 04: Command 0000 06: Status 0080 FB2BCapable 08: RevisionID 01 09: ProgIF 02 16550 Compatible 0a: SubClass 00 Serial Controller 0b: BaseClass 07 Simple Communications Controller 0c: CacheLineSize 0000 0d: LatencyTimer 00 0e: HeaderType 00 0f: BIST 00 10: BAR0 fffffc00 14: BAR1 00000000 18: BAR2 00000000 1c: BAR3 00000000 20: BAR4 00000000 24: BAR5 00000000 28: CBCISPtr 00000000 2c: SubSysVenID 12c4 2e: SubSysID 0330 30: ROMBAR 00000000 34: CapPtr 00 3c: IntLine 10 3d: IntPin 01 3e: MinGnt 00 3f: MaxLat 00 Device Private: 40: 32b932b3 32c932c3 32d932d3 32f832f3 50: 331832fe 3323331d 3342333d 33583348 60: 3360335c 33683364 3370336c 33783374 70: 3380337c 33b033aa 33c633c1 33ee33cc 8
|
Next
|
Last
Pages: 1 2 Prev: Mirror Driver-Use mapviewoffile in DrvEscape Next: Reading the serial number from USB drive |