Page 1 of 1

XHCI: Endpoint Ring does not work on real hardware

Posted: Thu Apr 08, 2021 12:47 pm
by SanderR
Hello everyone,

I am working on XHCI again and I was trying to make the XHCI driver work on real hardware.
I managed to make it working untill the point that I want to get the GET_DESCRIPTOR command.
In the emulator, it does exactly what I want: an object is placed on the event ring and there is a value in the buffer.
On real hardware, nothing seems to happen.

I decided to make a dump of the element the XHCI hardware made for the bcbaap and everything is 0 except Context Entries which is 1, Root hub port number,which is 1, Speed which is 4 and slotstate which is 1.
I got the feeling I am doing something wrong, but I have no idea what I did wrong and if there is any good debugging tool for this.

The following link goes to the code and to the location where I do the action:
https://github.com/AdeRegt/SanderOSUSB/ ... ci.c#L1041

I hope someone can tell me what I am doing wrong.

Thank you in advantage!

Re: XHCI: Endpoint Ring does not work on real hardware

Posted: Wed Aug 04, 2021 3:34 pm
by Candy
Your repo is still private. Not sure if I can help with this really...

Re: XHCI: Endpoint Ring does not work on real hardware

Posted: Mon Aug 09, 2021 5:57 am
by SanderR
Thank you for checking out on this post.
I closed the branch(this is why it looked like a private project) but this is the latest branch for this issue:
https://github.com/AdeRegt/SanderOSUSB/ ... dev/xhci.c
I found out that on real hardware the doorbell is working on this endpoint ring. but it returns a error and floods my system with interrupts without a number in USBSTS. I try to do it without interrupts, as you can see in the code. I hope you can help me seeing what is wrong.

Thanks.