Index: kernel/arch/sparc64/src/drivers/niagara.c
===================================================================
--- kernel/arch/sparc64/src/drivers/niagara.c	(revision 99de22b5fb6b8faaa2a2796f37caebf2f125988b)
+++ kernel/arch/sparc64/src/drivers/niagara.c	(revision eeb643ddb3783861fb3ee6f341c31c048865cfe1)
@@ -85,5 +85,4 @@
  * the mapped buffer. The shared buffer definition follows.
  */
-/*
 #define OUTPUT_BUFFER_SIZE	((PAGE_SIZE) - 2 * 8)
 static volatile struct {
@@ -95,5 +94,4 @@
 	__attribute__ ((aligned(PAGE_SIZE)))
 	output_buffer;
-*/
 
 #if 0
@@ -193,5 +191,4 @@
 static void niagara_poll(niagara_instance_t *instance)
 {
-	/*
 	while (output_buffer.read_ptr != output_buffer.write_ptr) {
 		do_putchar(output_buffer.data[output_buffer.read_ptr]);
@@ -199,5 +196,4 @@
 			((output_buffer.read_ptr) + 1) % OUTPUT_BUFFER_SIZE;
 	}
-	*/
 
 	uint64_t c;
@@ -245,4 +241,24 @@
 
 	instance->srlnin = NULL;
+	sysinfo_set_item_val("fb.kind", NULL, 5);
+
+	/*
+	 * Set sysinfos and pareas so that the userspace counterpart of the
+	 * niagara fb driver can communicate with kernel using a shared buffer.
+ 	 */
+	output_buffer.read_ptr = 0;
+	output_buffer.write_ptr = 0;
+
+	sysinfo_set_item_val("niagara.outbuf.address", NULL,
+		KA2PA(&output_buffer));
+	sysinfo_set_item_val("niagara.outbuf.size", NULL,
+		PAGE_SIZE);
+	sysinfo_set_item_val("niagara.outbuf.datasize", NULL,
+		OUTPUT_BUFFER_SIZE);
+
+	static parea_t outbuf_parea;
+	outbuf_parea.pbase = (uintptr_t) (KA2PA(&output_buffer));
+	outbuf_parea.frames = 1;
+	ddi_parea_register(&outbuf_parea);
 
 	#if 0
@@ -261,5 +277,4 @@
 	sysinfo_set_item_val("kbd.devno", NULL, devno);
 	sysinfo_set_item_val("kbd.inr", NULL, FICTIONAL_INR);
-	sysinfo_set_item_val("fb.kind", NULL, 5);
 	#endif
 
