Index: kernel/generic/src/console/cmd.c
===================================================================
--- kernel/generic/src/console/cmd.c	(revision 76fca318d723e24d0c79dc1a99d87b0b03dee0f1)
+++ kernel/generic/src/console/cmd.c	(revision 666773c10427b1716034f10baeb1edf5994e000f)
@@ -977,6 +977,9 @@
 {
 	printf("The kernel will now relinquish the console.\n");
-	printf("Use userspace controls to redraw the screen.\n");
 	arch_release_console();
+	
+	if ((kconsole_notify) && (kconsole_irq.notif_cfg.notify))
+		ipc_irq_send_msg_0(&kconsole_irq);
+	
 	return 1;
 }
Index: kernel/generic/src/console/kconsole.c
===================================================================
--- kernel/generic/src/console/kconsole.c	(revision 76fca318d723e24d0c79dc1a99d87b0b03dee0f1)
+++ kernel/generic/src/console/kconsole.c	(revision 666773c10427b1716034f10baeb1edf5994e000f)
@@ -52,4 +52,6 @@
 #include <symtab.h>
 #include <macros.h>
+#include <sysinfo/sysinfo.h>
+#include <ddi/device.h>
 
 /** Simple kernel console.
@@ -84,12 +86,64 @@
 static char history[KCONSOLE_HISTORY][MAX_CMDLINE] = {};
 
-/** Initialize kconsole data structures. */
+/*
+ * For now, we use 0 as INR.
+ * However, it is therefore desirable to have architecture specific
+ * definition of KCONSOLE_VIRT_INR in the future.
+ */
+#define KCONSOLE_VIRT_INR  0
+
+bool kconsole_notify = false;
+irq_t kconsole_irq;
+
+
+/** Allways refuse IRQ ownership.
+ *
+ * This is not a real IRQ, so we always decline.
+ *
+ * @return Always returns IRQ_DECLINE.
+ *
+ */
+static irq_ownership_t kconsole_claim(void)
+{
+	return IRQ_DECLINE;
+}
+
+
+/** Initialize kconsole data structures
+ *
+ * This is the most basic initialization, almost no
+ * other kernel subsystem is ready yet.
+ *
+ */
 void kconsole_init(void)
 {
-	int i;
+	unsigned int i;
 
 	cmd_init();
 	for (i = 0; i < KCONSOLE_HISTORY; i++)
 		history[i][0] = '\0';
+}
+
+
+/** Initialize kconsole notification mechanism
+ *
+ * Initialize the virtual IRQ notification mechanism.
+ *
+ */
+void kconsole_notify_init(void)
+{
+	devno_t devno = device_assign_devno();
+	
+	sysinfo_set_item_val("kconsole.present", NULL, true);
+	sysinfo_set_item_val("kconsole.devno", NULL, devno);
+	sysinfo_set_item_val("kconsole.inr", NULL, KCONSOLE_VIRT_INR);
+	
+	irq_initialize(&kconsole_irq);
+	kconsole_irq.devno = devno;
+	kconsole_irq.inr = KCONSOLE_VIRT_INR;
+	kconsole_irq.claim = kconsole_claim;
+	irq_register(&kconsole_irq);
+	
+	kconsole_notify = true;
 }
 
