I still get NMIs. I disabled all legacy support bits for all UHCIs and EHCIs and performed a BIOS handoff for the EHCI. SMI bits were set on both UHCI and EHCI, but BIOS owned semaphore was not set on the EHCI. Regardless of this, I set OS owned semaphore before attempting any USB transactions. Is it possible that current qTD in the overlay area points to 0x0 ? Right after setting next qTD to my SETUP qTD (getDeviceDescriptor), which is linked to the other qTDs (SETUP -> IN -> OUT), current qTD points to 0x0.Korona wrote:So you still get the NMI after EHCI hand-off works?
Yes, I enabled Bus Mastering, IO Space, and Memory Space. I haven't touched anything other than power management and the regular PCI control registers yet. Is it necessary to configure PCI bridges? Wouldn't BIOS do this? I think all registers are not being cached, as I get responses for certain actions (e.g. HCRESET).Korona wrote:Other things you should check (after you got the UHCI legacy-disabling to work): Is bus-mastering enabled in the PCI control register? Are PCI bridges set up correctly? Are EHCI registers marked as uncacheable in the MTRRs?
I can test it on a desktop, tomorrow. I don't think I'm allowed to distribute the code (or image), as this is a university project I work on with colleagues. But thanks for the offerKorona wrote:Can you test your code on other computers? Do you want me to test it on a desktop? I have a ICH7 desktop that I could run it on and copy/paste serial output and/or screenshots.
//EDIT
I checked the host controllers status register. Host System Error gets set right after the transaction. Next qTD is set to my SETUP qTD, but current qTD is set to 0x0.