Index: kernel/genarch/src/kbd/ns16550.c
===================================================================
--- kernel/genarch/src/kbd/ns16550.c	(revision 8513ad77da21520006dc3e18de1e95a2b6f59c6f)
+++ kernel/genarch/src/kbd/ns16550.c	(revision fb8335c5775e54e9f75a6c9976813528395525ec)
@@ -62,6 +62,4 @@
 static irq_t ns16550_irq;
 
-static ipc_notif_cfg_t saved_notif_cfg;
-
 /*
  * These codes read from ns16550 data register are silently ignored.
@@ -88,11 +86,5 @@
 		(void) ns16550_rbr_read(&ns16550);
 
-	if (ns16550_irq.notif_cfg.answerbox) {
-		saved_notif_cfg = ns16550_irq.notif_cfg;
-		ns16550_irq.notif_cfg.answerbox = NULL;
-		ns16550_irq.notif_cfg.code = NULL;
-		ns16550_irq.notif_cfg.method = 0;
-		ns16550_irq.notif_cfg.counter = 0;
-	}
+	ns16550_irq.notif_cfg.notify = false;
 }
 
@@ -100,6 +92,6 @@
 void ns16550_release(void)
 {
-	if (saved_notif_cfg.answerbox)
-		ns16550_irq.notif_cfg = saved_notif_cfg;
+	if (ns16550_irq.notif_cfg.answerbox)
+		ns16550_irq.notif_cfg.notify = true;
 }
 
@@ -184,5 +176,5 @@
 
 	if (ns16550_lsr_read(&ns16550) & LSR_DATA_READY) {
-		if (ns16550_irq.notif_cfg.answerbox) {
+		if (ns16550_irq.notif_cfg.notify && ns16550_irq.notif_cfg.answerbox) {
 			/*
 			 * Send IPC notification.
Index: kernel/genarch/src/kbd/z8530.c
===================================================================
--- kernel/genarch/src/kbd/z8530.c	(revision 8513ad77da21520006dc3e18de1e95a2b6f59c6f)
+++ kernel/genarch/src/kbd/z8530.c	(revision fb8335c5775e54e9f75a6c9976813528395525ec)
@@ -63,6 +63,4 @@
 static irq_t z8530_irq;		/**< z8530's IRQ. */ 
 
-static ipc_notif_cfg_t saved_notif_cfg;
-
 static void z8530_suspend(chardev_t *);
 static void z8530_resume(chardev_t *);
@@ -92,11 +90,5 @@
 	z8530_write_a(&z8530, WR9, WR9_MIE);		/* Master Interrupt Enable. */
 	
-	if (z8530_irq.notif_cfg.answerbox) {
-		saved_notif_cfg = z8530_irq.notif_cfg;
-		z8530_irq.notif_cfg.answerbox = NULL;
-		z8530_irq.notif_cfg.code = NULL;
-		z8530_irq.notif_cfg.method = 0;
-		z8530_irq.notif_cfg.counter = 0;
-	}
+	z8530_irq.notif_cfg.notify = false;
 }
 
@@ -104,6 +96,6 @@
 void z8530_release(void)
 {
-	if (saved_notif_cfg.answerbox)
-		z8530_irq.notif_cfg = saved_notif_cfg;
+	if (z8530_irq.notif_cfg.answerbox)
+		z8530_irq.notif_cfg.notify = true;
 }
 
@@ -205,5 +197,5 @@
 	 * interrupt traps. Process the interrupt directly.
 	 */
-	if (irq->notif_cfg.answerbox)
+	if (irq->notif_cfg.notify && irq->notif_cfg.answerbox)
 		ipc_irq_send_notif(irq);
 	else
