Index: uspace/srv/fb/fb.c
===================================================================
--- uspace/srv/fb/fb.c	(revision 49093a4659920a809fa1a13c3dfad5e9587db768)
+++ uspace/srv/fb/fb.c	(revision 20eb5e4d3d9057eaf8e976463ec55ff13ff5a8e3)
@@ -522,6 +522,7 @@
  */
 static bool
-screen_init(void *addr, unsigned int xres, unsigned int yres,
-	unsigned int scan, unsigned int visual, bool invert_colors)
+screen_init(void *addr, unsigned int offset, unsigned int xres,
+	unsigned int yres, unsigned int scan, unsigned int visual,
+	bool invert_colors)
 {
 	switch (visual) {
@@ -565,5 +566,5 @@
 	}
 
-	screen.fbaddress = (unsigned char *) addr;
+	screen.fbaddress = (unsigned char *) (((uintptr_t) addr) + offset);
 	screen.xres = xres;
 	screen.yres = yres;
@@ -1354,4 +1355,5 @@
 	unsigned int fb_scanline;
 	unsigned int fb_visual;
+	unsigned int fb_offset;
 	bool fb_invert_colors;
 	void *fb_addr;
@@ -1361,4 +1363,5 @@
 
 	fb_ph_addr = (void *) sysinfo_value("fb.address.physical");
+	fb_offset = sysinfo_value("fb.offset");
 	fb_width = sysinfo_value("fb.width");
 	fb_height = sysinfo_value("fb.height");
@@ -1370,8 +1373,8 @@
 	fb_addr = as_get_mappable_page(asz);
 	
-	physmem_map(fb_ph_addr, fb_addr, ALIGN_UP(asz, PAGE_SIZE) >>
+	physmem_map(fb_ph_addr + fb_offset, fb_addr, ALIGN_UP(asz, PAGE_SIZE) >>
 	    PAGE_WIDTH, AS_AREA_READ | AS_AREA_WRITE);
 
-	if (screen_init(fb_addr, fb_width, fb_height, fb_scanline, fb_visual,
+	if (screen_init(fb_addr, fb_offset, fb_width, fb_height, fb_scanline, fb_visual,
 	    fb_invert_colors))
 		return 0;
