Index: kernel/generic/src/console/cmd.c
===================================================================
--- kernel/generic/src/console/cmd.c	(revision 06e1e95342d7b9a9c85c7492529a309d51a3fb6c)
+++ kernel/generic/src/console/cmd.c	(revision 2b017ba3f7b12c023121e41aca02b7d6bf2bdade)
@@ -803,5 +803,6 @@
 	printf("Use userspace controls to redraw the screen.\n");
 	arch_release_console();
-	ipc_irq_send_msg(IPC_IRQ_KBDRESTART, 0, 0, 0);
+	/* TODO: send some vitual IRQ */
+	ipc_irq_send_msg(NULL, 0, 0, 0);
 	return 1;
 }
Index: kernel/generic/src/console/klog.c
===================================================================
--- kernel/generic/src/console/klog.c	(revision 06e1e95342d7b9a9c85c7492529a309d51a3fb6c)
+++ kernel/generic/src/console/klog.c	(revision 2b017ba3f7b12c023121e41aca02b7d6bf2bdade)
@@ -37,8 +37,10 @@
 #include <console/klog.h>
 #include <print.h>
+#include <ddi/device.h>
+#include <ddi/irq.h>
 #include <ipc/irq.h>
 
 /* Order of frame to be allocated for klog communication */
-#define KLOG_ORDER 0
+#define KLOG_ORDER	0
 
 static char *klog;
@@ -47,4 +49,8 @@
 
 SPINLOCK_INITIALIZE(klog_lock);
+
+static irq_t klog_irq;
+
+static irq_ownership_t klog_claim(void);
 
 /** Initialize kernel logging facility
@@ -64,9 +70,30 @@
 	klog = (char *)PA2KA(faddr);
 	
+	devno_t devno = device_assign_devno();
+	
 	sysinfo_set_item_val("klog.faddr", NULL, (unative_t)faddr);
 	sysinfo_set_item_val("klog.pages", NULL, 1 << KLOG_ORDER);
+	sysinfo_set_item_val("klog.devno", NULL, devno);
+	sysinfo_set_item_val("klog.inr", NULL, VIRT_INR_KLOG); 
+
+	irq_initialize(&klog_irq);
+	klog_irq.devno = devno;
+	klog_irq.inr = VIRT_INR_KLOG;
+	klog_irq.claim = klog_claim;
+	irq_register(&klog_irq);
 
 	klogsize = PAGE_SIZE << KLOG_ORDER;
 	klogpos = 0;
+}
+
+/** Allways refuse IRQ ownership.
+ *
+ * This is not a real IRQ, so we always decline.
+ *
+ * @return Always returns IRQ_DECLINE.
+ */
+irq_ownership_t klog_claim(void)
+{
+	return IRQ_DECLINE;
 }
 
@@ -85,5 +112,5 @@
 			goto out;
 	}
-	ipc_irq_send_msg(IPC_IRQ_KLOG, klogpos, ret, 0);
+	ipc_irq_send_msg(&klog_irq, klogpos, ret, 0);
 	klogpos += ret;
 	if (klogpos >= klogsize)
