Index: kernel/genarch/src/kbd/ns16550.c
===================================================================
--- kernel/genarch/src/kbd/ns16550.c	(revision 8d2760fe0365099552ec91e6cee8c5bbd55ed273)
+++ kernel/genarch/src/kbd/ns16550.c	(revision 1baec4bfb381f234bb961bd1b8a4026edfbdd1c8)
@@ -39,6 +39,6 @@
 #include <genarch/kbd/scanc.h>
 #include <genarch/kbd/scanc_sun.h>
+#include <arch/drivers/kbd.h>
 #ifndef ia64
-#include <arch/drivers/kbd.h>
 #include <arch/drivers/ns16550.h>
 #endif
@@ -131,12 +131,16 @@
 	ns16550_irq.cir_arg = cir_arg;
 	irq_register(&ns16550_irq);
+
+
+	while ((ns16550_lsr_read(&ns16550) & LSR_DATA_READY)) 
+		ns16550_rbr_read(&ns16550);
+
 	
 	sysinfo_set_item_val("kbd", NULL, true);
-#ifndef ia64
 	sysinfo_set_item_val("kbd.type", NULL, KBD_NS16550);
-#endif
 	sysinfo_set_item_val("kbd.devno", NULL, devno);
 	sysinfo_set_item_val("kbd.inr", NULL, inr);
 	sysinfo_set_item_val("kbd.address.virtual", NULL, port);
+	sysinfo_set_item_val("kbd.port", NULL, port);
 
 #ifdef CONFIG_NS16550_INTERRUPT_DRIVEN
@@ -148,4 +152,5 @@
 #ifdef ia64
     	uint8_t c;
+    	// This switches rbr & ier to mode when accept baudrate constant
     	c = ns16550_lcr_read(&ns16550);
     	ns16550_lcr_write(&ns16550, 0x80 | c);
