-
Notifications
You must be signed in to change notification settings - Fork 246
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
WIP dde_linux: fix IRQ masking/unmasking
Unmasking of a pending interrupt did not lead to immediate IRQ handler execution in all cases. Issue #5164
- Loading branch information
Showing
12 changed files
with
92 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,7 +23,6 @@ | |
#include <util/list.h> | ||
#include <util/xml_node.h> | ||
|
||
#include <lx_kit/pending_irq.h> | ||
|
||
namespace Lx_kit { | ||
using namespace Genode; | ||
|
@@ -65,17 +64,19 @@ class Lx_kit::Device : List<Device>::Element | |
using Index = Platform::Device::Irq::Index; | ||
|
||
Index idx; | ||
Pending_irq number; | ||
unsigned number; | ||
Io_signal_handler<Irq> handler; | ||
bool masked { true }; | ||
bool occured { false }; | ||
bool pending { false }; | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
chelmuth
Author
Member
|
||
|
||
Constructible<Platform::Device::Irq> session {}; | ||
|
||
Irq(Entrypoint & ep, unsigned idx, unsigned number); | ||
|
||
void _handle(); | ||
void handle(); | ||
void mask(); | ||
void unmask(Platform::Device &); | ||
void ack(); | ||
}; | ||
|
||
struct Io_port : List<Io_port>::Element | ||
|
@@ -169,6 +170,8 @@ class Lx_kit::Device : List<Device>::Element | |
bool irq_unmask(unsigned irq); | ||
void irq_mask(unsigned irq); | ||
void irq_ack(unsigned irq); | ||
int pending_irq(); | ||
void reset_pending(unsigned irq); | ||
|
||
bool read_config(unsigned reg, unsigned len, unsigned *val); | ||
bool write_config(unsigned reg, unsigned len, unsigned val); | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@chelmuth: I know this existed before your change, but wouldn't it be even better to merge
masked
andoccurred
booleans into one state variable?