diff --git a/repos/base-nova/ports/nova.hash b/repos/base-nova/ports/nova.hash index 0b7d4a6e7f..9bae98c7d4 100644 --- a/repos/base-nova/ports/nova.hash +++ b/repos/base-nova/ports/nova.hash @@ -1 +1 @@ -f5e2aa3d82dd6737422987241ebc8e17ecbf640c +7208e091c7694c61247427715d0abef7ba8d78e3 diff --git a/repos/base-nova/ports/nova.port b/repos/base-nova/ports/nova.port index 388df664db..7ef5b271c8 100644 --- a/repos/base-nova/ports/nova.port +++ b/repos/base-nova/ports/nova.port @@ -4,7 +4,7 @@ DOWNLOADS := nova.git # r10 branch URL(nova) := https://github.com/alex-ab/NOVA.git -REV(nova) := de90690dbf395a786d10c22123f37feb143a109f +REV(nova) := 1c6acf0af8256036cdea023576e2cb0e30e7d69c DIR(nova) := src/kernel/nova PATCHES := $(sort $(wildcard $(REP_DIR)/patches/*.patch)) diff --git a/repos/base-nova/src/core/irq_session_component.cc b/repos/base-nova/src/core/irq_session_component.cc index e59e462282..472d885ce1 100644 --- a/repos/base-nova/src/core/irq_session_component.cc +++ b/repos/base-nova/src/core/irq_session_component.cc @@ -107,6 +107,11 @@ void Irq_object::sigh(Signal_context_capability cap) if (!_sigh_cap.valid() && !cap.valid()) return; + if (_sigh_cap.valid() && _sigh_cap == cap) { + /* avoid useless overhead, e.g. with IOMMUs enabled */ + return; + } + if ((_sigh_cap.valid() && !cap.valid())) { deassociate(irq_sel()); _sigh_cap = Signal_context_capability();