ExpressCard data loss problem

Currently, thanks to a tip from a list member, I’ve solved my problem
by having my driver create very low priority threads that run
do-nothing busy loops, thus preventing the system from entering any
sort of idle state.

I’ve started this post with the solution in order to hold the
attension of the smart people on this list who will now want to tell
me that this solution is an abomination.

As mentioned below, firewire cards (PCMCIA and ExpressCard) receiving
large amounts of isochronous
data can suffer problems with packet lose. These problems have been
observed on Dell machines (M60 M70 M65 M90) but may not be
specifically Dell problems. The problem is worst when using
ExpressCard but also shows up with PCMCIA. The problem seems to
be limited to laptops (but that may just because it is limited to
PCMCIA and ExpressCard). Some investigators have used bus analyzers to
verify that the packets themselves are fine. This and other evidence
leads me to infer that the firewire cards themselves are correctly
receiving the data but are unable to get the data over the bus to
memory. Running low priority busy
loops to prevent a system from becoming idle completely solves the
problem.

Any thoughts or alternatives? Any idea what is going on? Do these
computers enter into some sort of slow-down mode that takes time to
recover from? Is this just the NT idle thread zeroing pages and causing
bus contension? I’m looking to understand this problem and possibly
arrive at a more acceptable solution.

Thanks in advance for any comments.

For the benifit of the archive, here is my original subject title and
post:

Firewire ExpressCard (Core Duo - 945) Problem

I’m looking for help/info on a firewire issue that is occuring on new
laptops with ExpressCard slots. The particular model that I have to
test on is a Dell M65 Core Duo (with 945PM chipset). This machine has
both a PCMCIA slot and an ExpressCard slot (but most other machines
only have the ExpressCard slot).

I’ve tested with 3 different 1394a express cards (SIIG, Belkin and
AboCom). In all cases I am unable to allocate isochronous resources
(channel and bandwidth). When I disable resource allocation then the
(isochronous) image transmission runs but suffers packet
loss leading to scrambled images. Asynchronous communication appears to
work fine but I have no option to transmit images from my camera that
way.

There is no problem when I attach the camera to a PCMCIA 1394a card
plugged into in the same computer using either the regular or the
gimped driver.

What is really strange about the packet loss is that if the computer
gets busy then the packet loss quits for the length of time that the
computer is busy. Ffor example, if I push the PCMCIA firewire card
into its slot while receiving images on the ExpressCard, then the
image transmission clears up until Device Manager updates its list at
which point the packet loss continues. It’s as if some other activity
that interferes with the ability of the ExpressCard to get data to
memory has been momentarily blocked.

Doing some searching on the Internet seems to indicate that there is
an issue with core duo processors and the 945 chipset which is
affecting Firewire and ExpressCard operation (running with /ONECPU
doesn’t help though).

If anyone else has experianced these issues or knows anything about
the processor/chipset issue or has any other thoughts on the matter I
would appreciate hearing what you know. I am currently also
communicating with Dell, Intel and someone who knows about problems
running firewire sound cards on these systems.

Likewise, if anyone has succeed with isochronous communication using
a 1394a ExpressCard I would also appreciate hearing from you.

Robert Newton
VX Technologies

Hi Robert,

I happened to have some experience on Pci Express so I would like to
give my opinions. But I may happily be wrong. :slight_smile:

  1. Pci Express can use ASPM(Active State Power Management) to enter into
    and out of some power saving state. The link will take some time to
    recover to its normal working state. ASPM is supposed to be
    automatically managed by hardware without interference from OS. So make
    sure your bios get things right.

  2. Windows OS may choose to put your device into lower power state based
    on the ACPI ASL description which is parsed by ACPI filter driver at the
    bottom of your device driver stack. How about your trying changing the
    way your device driver handling query_capability request and mark your
    self as incapable of entering any lower device state than D0? This
    should have the same effect as creating a slow-priority do-nothing
    thread if that does solve your problem.

Hope this helps!

Best regards,
Cody

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Robert Newton
Sent: Friday, December 01, 2006 2:57 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] ExpressCard data loss problem

Currently, thanks to a tip from a list member, I’ve solved my problem
by having my driver create very low priority threads that run
do-nothing busy loops, thus preventing the system from entering any
sort of idle state.

I’ve started this post with the solution in order to hold the
attension of the smart people on this list who will now want to tell
me that this solution is an abomination.

As mentioned below, firewire cards (PCMCIA and ExpressCard) receiving
large amounts of isochronous
data can suffer problems with packet lose. These problems have been
observed on Dell machines (M60 M70 M65 M90) but may not be
specifically Dell problems. The problem is worst when using
ExpressCard but also shows up with PCMCIA. The problem seems to
be limited to laptops (but that may just because it is limited to
PCMCIA and ExpressCard). Some investigators have used bus analyzers to
verify that the packets themselves are fine. This and other evidence
leads me to infer that the firewire cards themselves are correctly
receiving the data but are unable to get the data over the bus to
memory. Running low priority busy
loops to prevent a system from becoming idle completely solves the
problem.

Any thoughts or alternatives? Any idea what is going on? Do these
computers enter into some sort of slow-down mode that takes time to
recover from? Is this just the NT idle thread zeroing pages and causing
bus contension? I’m looking to understand this problem and possibly
arrive at a more acceptable solution.

Thanks in advance for any comments.

For the benifit of the archive, here is my original subject title and
post:

Firewire ExpressCard (Core Duo - 945) Problem

I’m looking for help/info on a firewire issue that is occuring on new
laptops with ExpressCard slots. The particular model that I have to
test on is a Dell M65 Core Duo (with 945PM chipset). This machine has
both a PCMCIA slot and an ExpressCard slot (but most other machines
only have the ExpressCard slot).

I’ve tested with 3 different 1394a express cards (SIIG, Belkin and
AboCom). In all cases I am unable to allocate isochronous resources
(channel and bandwidth). When I disable resource allocation then the
(isochronous) image transmission runs but suffers packet
loss leading to scrambled images. Asynchronous communication appears
to
work fine but I have no option to transmit images from my camera that
way.

There is no problem when I attach the camera to a PCMCIA 1394a card
plugged into in the same computer using either the regular or the
gimped driver.

What is really strange about the packet loss is that if the computer
gets busy then the packet loss quits for the length of time that the
computer is busy. Ffor example, if I push the PCMCIA firewire card
into its slot while receiving images on the ExpressCard, then the
image transmission clears up until Device Manager updates its list at
which point the packet loss continues. It’s as if some other activity
that interferes with the ability of the ExpressCard to get data to
memory has been momentarily blocked.

Doing some searching on the Internet seems to indicate that there is
an issue with core duo processors and the 945 chipset which is
affecting Firewire and ExpressCard operation (running with /ONECPU
doesn’t help though).

If anyone else has experianced these issues or knows anything about
the processor/chipset issue or has any other thoughts on the matter I
would appreciate hearing what you know. I am currently also
communicating with Dell, Intel and someone who knows about problems
running firewire sound cards on these systems.

Likewise, if anyone has succeed with isochronous communication using
a 1394a ExpressCard I would also appreciate hearing from you.

Robert Newton
VX Technologies


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

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