Dear all,
??? Firstly, I’d like to say thank you to? Tim-Roberts which persuaded me that
“write-combine” can work well in almost PC . Now, I can make it run on my XP PC 32 bit.
??? Instead of using “MmNonCached” , I used “MmWriteCombined” for cache type
in the mapping of MmmapIOSpace . And the data rate increase 10 times .( 14Mb/s –> 178 Mb/s )
??? PC? can send maximum 16DW (equal cache size)? per burst? to PCIe bus instead of 1DW when using Non-cache memory.
??? The problem that I described before ( PC hang up when using write combine) is not
the problem of “Write combine” but the problem of VGA card . VGA card doesn’t allow to write to BAR0 . It may be the control area . When writing some data to BAR0, the PC is restarted or hang up.
However , my driver can’t run well with “write combine” on XP 64 bit .When I write to BAR3 (memory 32 bit) at address (BASE + 0x00) with 8 bytes. Nothing in the memory is changed.
Do you experience this ?
Best Regards
HanNguyen
---------------------------------------
Nguyen Nhat Han
MobiPhone : 0906.739.923
C?ng ty : Cty TNHH Thiet ke Renesas
---------------------------------------
— On Thu, 7/7/11, Tim Roberts wrote:
From: Tim Roberts
Subject: Re: [ntdev] About using “MmWriteCombined” of MmmapIOSpace
To: “Windows System Software Devs Interest List”
Date: Thursday, July 7, 2011, 1:50 AM
Nhat Han wrote:
>?
> >> The root complex CAN do this.? It is a performance optimization.? It is
> >> worthwhile, so it is commonly done.
>?
> I also hope so . Actually, I have no evidence to sure
> that WriteCombined is
> supported by most motherboard.WDK only explains very little .
> Information online doesn’t point to trusted? document.
> So, If you know some trusted document which explains it , please help
> to show me .
>
It’s not a WDK issue.? It’s not an operating system issue.? It’s a
hardware issue.? You may be able to find information in the PCIExpress
bus specification, or in the data sheets for your PCIExpress bus
controller, but there’s really not much more to tell.
We have tried to tell you over and over that the task you have set for
yourself (exercising all the options of your PCIExpress board) REQUIRES
a PCIe bus exerciser and analyzer.? There is no alternative.? You MIGHT
get coverage through write-combining, but if you are truly tasked with
testing your PCIe core at a microscopic level, then you need a bus
exerciser.? You cannot rely on the potential behavior of an arbitrary
bus controller.
> First case, Sending 32B by using WRITE_REGISTER_BUFFER_ULONG with size = 4
> Second case, Sending 8B by using WRITE_REGISTER_BUFFER_ULONG with size =1
>?
> But both case, the PC is hang up . As you know, HAL didn’t return any
> status but
> next PC is hang up and I have no more information except the “Kdprint”
> displayed on
> Debugging Host PC.
>?
> >> but even if it didn’t it wouldn’t cause a hang.
>?
> Oh, so my problem is a bit strange . Currently, I don’t know where to
> start for the debugging .
>
We have ALL told you where to start.? You have a hardware problem.? You
need to do hardware debugging.? Logic analyzers, oscilloscopes, PCIe bus
analyzers.? This is not a software problem.? This is not a driver problem.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.
—
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