I don’t know about specific timings, but the usb bus runs on a schedule. That schedule causes dma bus master traffic which requires the processor to be in C0. If the schedule is setup in a particular way, it could be causing bus master traffic at the interval you see. Sorry, but I don’t know the particulars on how this key works, just how the usb bus works in general. Certainly, when there are no devices plugged in, the schedule doesn’t run.
d
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of S. Drasnin
Sent: Monday, February 21, 2005 8:47 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] USB composite class driver
Thanks for the helpful info!
?
I have one other USB question to ask. Can you think of a reason why there would be a power spike (power usage) every 250 mSec only when a usb device is plugged in on a Windows XP SP2 laptop?
?
The knowledge base article Q297045 talks about bus polling holding off?C3?and indicates a registry to change the polling from 1 to 5 msec - but this rate is no were near to the 250 mSec I’m asking about.? I’m bringing it up only because this KB article has to do with polling (periodic stuff) and might ring a bell. Do you have any suggestions of where to look?
?
http://support.microsoft.com/kb/297045/EN-US/
?
thanks
Sharon
?
----- Original Message -----
From: Doron Holan
To: Windows System Software Devs Interest List
Sent: Monday, February 21, 2005 8:13 PM
Subject: RE: [ntdev] USB composite class driver
There is no spec.?
SS is difficult to support b/c you have N entities that want to change state independently of each other and once you get them all to agree, you have to freeze out their state changes until you can commit the change (ie move into Dx) and then when one of them wants out, you have to bring every one else out of Dx.? You have to do this while calling out into other drivers (meaning you have a pretty complex state machine) w/out locks being held for periods of time.
As for the c3 issue.? It is not matter of SS? in this case.? The host controller itself is probably suspending the bus schedule, or there is some logic between the HC and the pci bus that allows C3 to be entered.
The coordination of the children into Dx is only one part.? What I described was the machine going into lower power (ie an Sx state), not necessarily SS.? Like I said previously, SS entails a lot more nasty logic b/c you have to do a lot more synchronization.
d
From: xxxxx@listsosr.com [mailto:xxxxx@lists.osr.com] On Behalf Of S. Drasnin
Sent: Monday, February 21, 2005 7:41 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] USB composite class driver
Doron:
Can you give me an idea of what specifically is the problem with usbccgp.sys (or the architecture) that makes it difficult to support SS?
Is there a spec for writing this class driver, so I can look at it or does Microsoft not share that?
(While what you said sounds reasonable, I need a little more concrete info.)
You said that usbccgp.sys won’t power down the parent until all the children are powered down (I also read this in Oney’s book) – this implies to me that it does support selective suspend. What, then, does Microsoft means when it says that usbccgp.sys doesn’t support selective suspend?
Another question I had is this:
I noticed on some laptops, that they will not enter C3 (you can tell by using Performance Monitor under Control Panel’s Administrative Tools) if you plug in a composite device such as a Microsoft wireless usb keyboard/mouse combo. This makes sense - that a composite device would hold off C3 (%C3 goes down to 0 in PerfMon with the usb combosite device plugged in).
However, on other laptops, I see them in C3 for around 50% of the time regardless if I have the composite keyboard plugged in or not. This does not make any sense to me, unless perhaps I’m misinterpreting what Microsoft said when they said that usbccgp.sys doesn’t support SS.
All the laptops were running XP SP2, by the way.
Please clarify.
thanks in advance,
Sharon
----- Original Message -----
From: Doron Holan
To: Windows System Software Devs Interest List
Sent: Monday, February 21, 2005 5:40 PM
Subject: RE: [ntdev] USB composite class driver
Usbgccp splits the composite device into separate separate child devices, one per interface … with exceptions. It has special knowledge to know to group usb audio interfaces together for instance. On newer versions, it also supports IAD (interface association descriptor) so that it can group interfaces into one child. It then munges the config descriptor for each child to appear as if the config descriptor contains only the interface for the child.
For power, it will not power down the parent until all the children are powered down and vice versa. That is at least in simplistic terms what it does.
Usb SS cannot be implemented by a filter w/out a lot of pain, sweat, and tears. I think even with the access to the sources, it would be a near impossible task to implement the usb core side of usb SS. In the end, I think you will have to live with the limitations of the driver in terms of USB SS. Reverse engineering it into an upper filter would consume a tremendous amount of man months. I would rate it 10 on a scale of 1 to 10 on difficulty (in terms of getting all the quirky rules right, of which there are quite a few).
d
From: xxxxx@listsosr.com [mailto:xxxxx@lists.osr.com] On Behalf Of S. Drasnin
Sent: Monday, February 21, 2005 5:13 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] USB composite class driver
hi
I’m trying to find out more information about the Microsoft USB Common Class Generic Parent Driver (usbccgp.sys) that gets loaded for USB composite devices on Windows XP.
(Note that according to MSDN, for composite USB devices (on Windows XP) that expose multiple interfaces and do not have their own parent class driver, the system loads an extra driver, usbccgp.sys, between the hub driver and the client device drivers. The system assigns a separate PDO to each interface of a composite device.)
(1) Does anybody know what the tasks are of usbccgp.sys? I have not found any specifications on MSDN as to what this class driver does so I do not know how practical it is to try to write a replacement driver for it. Can anybody comment on what it would take to do this?
(2) Also, what is about this driver that makes it not support Selective Suspend? I found on a USB FAQ from WinHEC 2004 that Selective Suspend in usbccgp “may be supported” in future versions of Windows. I am wondering why Microsoft hasn’t fixed this feature yet - is there something in the architecture that makes it impossible to fix? Do they have a suggested work-around (I haven’t found any) other than the obvious suggestion of not using composite devices, which really is not a practical suggestion for laptops since there are more than a few readily-available and popular consumer usb composite devices that plug into external usb ports, such as Microsoft’s wireless USB/mouse combos.
(3) Also, I read that somebody (Carsten Schultz, Feb 6, 2002) wrote a lower filter driver and was wondering if those of you who have written upper or lower filter drivers for it would care to comment on what it was used, etc. I was wondering if a filter driver could be used to make Selective Suspend work for USB composite devices.
My goal is to find out if it possible to get around the lack of support for Selective Suspend by usbccgp.sys for USB composite devices.
thanks in advance,
Sharon xxxxx@msn.com
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@listsosr.com
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@listsosr.com
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@listsosr.com
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@listsosr.com
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument: ‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com