mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 21:57:34 +00:00
Kernel/USB: Prevent system crash via correct UHCI inititilisation
It seems that not setting the framelist address register was causing the entire system to lock up as it generated an insane interrupt storm in the IRQ handler for the UHCI controller. We now allocate a 4KiB aligned page via `MemoryManager::allocate_supervisor_physical_page()` and set every value to 1. In effect, this creates a framelist with each entry being a "TERMINATE" entry in which the controller stalls until its' 1mS time slice is up. Some more registers have also been set for consistency, though it seems like this don't need to be set explicitly in software.
This commit is contained in:
parent
33d73c600c
commit
375d269b21
2 changed files with 20 additions and 1 deletions
|
@ -64,6 +64,7 @@ private:
|
|||
virtual void handle_irq(const RegisterState&) override;
|
||||
|
||||
IOAddress m_io_base;
|
||||
PhysicalAddress m_framelist;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue