[wdmaudiodev] Re: GetMapping fails immediately in MappingAvailable

  • From: "Jeff Pages" <jeff@xxxxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Mon, 27 Oct 2008 09:16:06 +1100

Hi Eugene,

Back in June 2007 I wrote:

I've noticed that occasionally IMiniportWavePciStream::MappingAvailable is
called at dispatch level, even though the documentation says it's supposed
to be only called at passive level.

Also, on a multi-processor system, I'm occasionally seeing two more or less
simultaneous calls to MappingAvailable without an intervening failing call
to GetMapping - again, according to the documentation and Ken's explanation
a couple of months ago on how MappingAvailable is supposed to work, this
shouldn't happen.

Okay, this isn't the same problem, but it suggests there might be something suspicious going on in the MappingAvailable - GetMapping logic. I've only ever observed my problem on Vista - all my WavePCI drivers on XP have been quite well behaved as far as I'm aware.

Jeff


----- Original Message ----- From: "Eugene Muzychenko" <emuzychenko@xxxxxxxxx>
To: <wdmaudiodev@xxxxxxxxxxxxx>
Sent: Sunday, October 26, 2008 4:05 AM
Subject: [wdmaudiodev] GetMapping fails immediately in MappingAvailable


I found definitely strange PortCls behavior. On high audio system load
(multiple devices, multiple steams, dozens of small (5-10 ms)
buffers), PortCls calls MappingAvailable but returns STATUS_NOT_FOUND
from GetMapping called *immediately* from MappingAvailable.

MappingAvailable is called by PortCls in response to
IOCTL_KS_READ/IOCTL_KS_WRITE IRPs (I monitor IRPs dispatched by
driver), then I call GetMapping from MappingAvailable and get
STATUS_NOT_FOUND from *first* call.

On later calls to GetMapping, PortCls returns a mapping (or several
mappings), but it may occur when the driver already starts to starve
and produce gaps.

High audio load does not mean high CPU load. CPU is not loaded
significantly (max 20-50%).

This effect is reliably reproducible under XP SP3, 2003 SP1 and 2003
SP2 (all are 32-bit), in both single and dual core configurations.

Is there any reasonable explanation for such PortCls behavior?

Regards,
Eugene


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

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/



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

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: