I use the qemu-2.7 and seabios-1.10.1 to start the windows 7 guest. And the xhci controller is passthroughed to
the guest. When the safe mode interface of the windows 7 appears, keyboard sometimes doesn't work and I can
not choose any mode.
I have referred to seabios code about xhci configuration and find that after initializing USB keyboard, the timer
ISR will check usb event periodically. Normally, the "xhci_process_events" function can process the keyboard events,
but now TRB_C bit of xhci controller has been unchanged and "xhci_process_events" function derectly return. So
keyboard didn't work. I want to know why TRB_C bit of xhci controller is always unchanged. Hope somebody can
help me.
Sorry for my poor English.
static void xhci_process_events(struct usb_xhci_s *xhci)
{
struct xhci_ring *evts = xhci->evts;
for (;;) {
/* check for event */
u32 nidx = evts->nidx;
u32 cs = evts->cs;
struct xhci_trb *etrb = evts->ring + nidx;
u32 control = etrb->control;
if ((control & TRB_C) != (cs ? 1 : 0))
return;//stop here
....
....}