Hi, On Wed, Dec 22, 2010 at 07:42:09PM +0800, Ming Lei wrote:
Since the accuracy of 'time' utility is not good, I write a test case based on your code posted and figure out time elapsed in kernel, follows the test results:
true, much better.
test board: beagle xM, mpurate: 950 root@beagleboard:/sys/kernel/debug/musb# cat readw direct musb_readw, count:1000000, time:223682us single func deref musb_readw, count:1000000, time:236562us dual func deref musb_readw, count:1000000, time:247016us root@beagleboard:/sys/kernel/debug/musb# cat readw direct musb_readw, count:1000000, time:223689us single func deref musb_readw, count:1000000, time:237915us dual func deref musb_readw, count:1000000, time:247150us root@beagleboard:/sys/kernel/debug/musb# cat readw direct musb_readw, count:1000000, time:223571us single func deref musb_readw, count:1000000, time:237607us dual func deref musb_readw, count:1000000, time:247088us
10% is much better than what I was expecting. Even though we are doing 1M reads to that register I wasn't expecting that big impact. Still even the 5% performance drop sounds a lot. Sounds like the biggest issue is actually bfin which doesn't implement __raw_* macros and tusb which can't handle 8 bit addresses. If blackfin implements __raw_* macros then we can handle tusb6010 easily by always doing 16 bit accesses when TUSB is compiled. It won't cause problems (not big ones) to the other glue layers anway. Mike, would it be possible for blackfin to implement __raw_* macros so we can drop the ifdef for blackfin on musb_io.h ??
So I suggest to avoid using function pointer as far as possible for better performance, could you agree on it?
I agree, but still that exported function pointer doesn't look good :-p -- balbi -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html