MmMapIoSpace hang

Hi,

I am new to windows driver development and I am currently working on porting an existing 32-bit driver to 64-bit driver.

There was no design changes in the code. Most changes are 64-bit support related only.
I am testing it with Vista and I am seeing this problem, after copying the translated physical address to my driver device extension, I called MmMapIoSpace and then the system hang.

This part of code works perfectly on 32-bits system. I could see exactly the same memory range allocated for 32-bit/64-bits systems. When I did !memusage, I saw a print message displaye cache too low.

Is MmMapIoSpace should be used differently in 64-bit systems?

Any idea, suggestions will be greatly appreciate…

Thanks,

GB

What is the output of !analyze -v (make sure your symbols are correct) when it hangs?

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Wednesday, March 16, 2011 4:43 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] MmMapIoSpace hang

Hi,

I am new to windows driver development and I am currently working on porting an existing 32-bit driver to 64-bit driver.

There was no design changes in the code. Most changes are 64-bit support related only.
I am testing it with Vista and I am seeing this problem, after copying the translated physical address to my driver device extension, I called MmMapIoSpace and then the system hang.

This part of code works perfectly on 32-bits system. I could see exactly the same memory range allocated for 32-bit/64-bits systems. When I did !memusage, I saw a print message displaye cache too low.

Is MmMapIoSpace should be used differently in 64-bit systems?

Any idea, suggestions will be greatly appreciate…

Thanks,

GB


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

xxxxx@gmail.com wrote:

I am new to windows driver development and I am currently working on porting an existing 32-bit driver to 64-bit driver.

There was no design changes in the code. Most changes are 64-bit support related only.
I am testing it with Vista and I am seeing this problem, after copying the translated physical address to my driver device extension, I called MmMapIoSpace and then the system hang.

How do you know it hangs exactly there? Have you single-stepped through
in the debugger? Have you bracketed the calls with debug prints? Why
don’t you post that section of code and we’ll have a look?


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

Tnx for the quick reply.
I was using Windbg and was single - stepping thru the code, the MmMapIoSpace did not return so I assumed it did hang in that part of code.

Btw, I could not break into the debugger anymore so I could not run !analyze.

  1. What is that resource: a PCI BAR recevied from the OS (in IRP_MN_START_DEVICE), or something else, like a physical address that you just happen to know somehow?

  2. Is your Vista RTM or SP2?

–pa

Are you using the correct PHYSICAL_ADDRESS type, or ULONG by mistake?

Hi,

I am using the translated physical address from CM_PARTIAL_DESCRIPTOR and the variable is declared as PHYSICAL_ADDRESS.

As mentioned previously this part of code works perfectly when built for 32-bits system.

Thanks,

What PHYSICAL_ADDRESS are you passing to MmMapIoSpace (print all 64 bits)?