Hi all :
I don’t know if I could post my question here and if it is not suitable, forget it.
On the HCT driver verifier test, we failed to pass Driver Verifier Test.
Our SATA hardware driver is a SCSI miniport driver and ScatterGather is enabled.
We get physical address of Srb->DataBuffer with the following codes.
ScsiPortConvertPhysicalAddressToUlong (
ScsiPortGetPhysicalAddress (deviceExtension, Srb,
virtualAddress, &length));
Then we make a PRD table to record address and length of each memory segment.
Issue DMA READ/WRITE requests and process completion status at ISR.
Question is …
Each time system wake up from the hibernation state, we get data read un-expected error.
Symptoms…
Suppose Srb->DataBuffer address is 8176b000 and physical address, 0x0005000 is mapped to it
-
Before issuing a DMA read, we dump physcial address mapped to Srb->DataBuffer by
kd>!dd 0x0005000
and dump virtual address with Srb->DataBuffer by
kd>dd 8176b000
Thse two memory are empty.
-
We issue a DMA READ transaction. Again we dump both physcial and memory addresses at ISR.
We find that from physcial memory dump, contents of that physical address are updated by HW.
Since it is mapped to Srb->DataBuffer, we dump virtual address with it and expect to get the same result.
But the virtual memory dump is still empty.
-
This is very strange, isn’t it ? This situation only occurred at DMA READ after system wake up from S4 state.
We find both physcial and virtual memory dump are the same at DMA Write.
-
If we disable the ScatterGather, the symptom is disappear
Any commets are welcome
Regards
David Wang
In general, it will help a great deal if a poster indicates the OS and SP levels involved. For example, those might be WinXP SP1.
–
James Antognini
Windows DDK Support
This posting is provided “AS IS” with no warranties, and confers no rights.
“???(David Wang)” wrote in message news:xxxxx@ntdev…
Hi all :
I don’t know if I could post my question here and if it is not suitable, forget it.
On the HCT driver verifier test, we failed to pass Driver Verifier Test.
Our SATA hardware driver is a SCSI miniport driver and ScatterGather is enabled.
We get physical address of Srb->DataBuffer with the following codes.
ScsiPortConvertPhysicalAddressToUlong (
ScsiPortGetPhysicalAddress (deviceExtension, Srb,
virtualAddress, &length));
Then we make a PRD table to record address and length of each memory segment.
Issue DMA READ/WRITE requests and process completion status at ISR.
Question is …
Each time system wake up from the hibernation state, we get data read un-expected error.
Symptoms…
Suppose Srb->DataBuffer address is 8176b000 and physical address, 0x0005000 is mapped to it
1. Before issuing a DMA read, we dump physcial address mapped to Srb->DataBuffer by
kd>!dd 0x0005000
and dump virtual address with Srb->DataBuffer by
kd>dd 8176b000
Thse two memory are empty.
2. We issue a DMA READ transaction. Again we dump both physcial and memory addresses at ISR.
We find that from physcial memory dump, contents of that physical address are updated by HW.
Since it is mapped to Srb->DataBuffer, we dump virtual address with it and expect to get the same result.
But the virtual memory dump is still empty.
3. This is very strange, isn’t it ? This situation only occurred at DMA READ after system wake up from S4 state.
We find both physcial and virtual memory dump are the same at DMA Write.
4. If we disable the ScatterGather, the symptom is disappear
Any commets are welcome
Regards
David Wang
The OS is Windows XP SP1 and HCT is 11.2.
I forget it and thank you…
–
David Wang
----- Original Message -----
From: James Antognini [MSFT]
Newsgroups: ntdev
To: Windows System Software Devs Interest List
Sent: Thursday, May 06, 2004 6:23 AM
Subject: Re:[ntdev] SrbDataBuffer miss mapped physical address
In general, it will help a great deal if a poster indicates the OS and SP levels involved. For example, those might be WinXP SP1.
–
James Antognini
Windows DDK Support
This posting is provided “AS IS” with no warranties, and confers no rights.
“???(David Wang)” wrote in message news:xxxxx@ntdev…
Hi all :
I don’t know if I could post my question here and if it is not suitable, forget it.
On the HCT driver verifier test, we failed to pass Driver Verifier Test.
Our SATA hardware driver is a SCSI miniport driver and ScatterGather is enabled.
We get physical address of Srb->DataBuffer with the following codes.
ScsiPortConvertPhysicalAddressToUlong (
ScsiPortGetPhysicalAddress (deviceExtension, Srb,
virtualAddress, &length));
Then we make a PRD table to record address and length of each memory segment.
Issue DMA READ/WRITE requests and process completion status at ISR.
Question is …
Each time system wake up from the hibernation state, we get data read un-expected error.
Symptoms…
Suppose Srb->DataBuffer address is 8176b000 and physical address, 0x0005000 is mapped to it
1. Before issuing a DMA read, we dump physcial address mapped to Srb->DataBuffer by
kd>!dd 0x0005000
and dump virtual address with Srb->DataBuffer by
kd>dd 8176b000
Thse two memory are empty.
2. We issue a DMA READ transaction. Again we dump both physcial and memory addresses at ISR.
We find that from physcial memory dump, contents of that physical address are updated by HW.
Since it is mapped to Srb->DataBuffer, we dump virtual address with it and expect to get the same result.
But the virtual memory dump is still empty.
3. This is very strange, isn’t it ? This situation only occurred at DMA READ after system wake up from S4 state.
We find both physcial and virtual memory dump are the same at DMA Write.
4. If we disable the ScatterGather, the symptom is disappear
Any commets are welcome
Regards
David Wang
—
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@sis.com.tw
To unsubscribe send a blank email to xxxxx@lists.osr.com