diff --git a/drivers/staging/xgifb/XGI_main.h b/drivers/staging/xgifb/XGI_main.h
index 467df83860ad2a5a13afcb42c0cc24043197e422..dacef51e9ff56211c5d10d32467f1d8c1f31c80c 100644
--- a/drivers/staging/xgifb/XGI_main.h
+++ b/drivers/staging/xgifb/XGI_main.h
@@ -125,9 +125,6 @@ MODULE_DEVICE_TABLE(pci, xgifb_pci_table);
 
 /* ------------------- Global Variables ----------------------------- */
 
-/* Fbcon variables */
-static struct fb_info *fb_info;
-
 static struct fb_var_screeninfo default_var = {
 	.xres		= 0,
 	.yres		= 0,
diff --git a/drivers/staging/xgifb/XGI_main_26.c b/drivers/staging/xgifb/XGI_main_26.c
index 6957b65c11dfecef32789517b6508248ddecb95c..f7c0afe7fc789b2cb024d71397da5e5da81c5b57 100644
--- a/drivers/staging/xgifb/XGI_main_26.c
+++ b/drivers/staging/xgifb/XGI_main_26.c
@@ -1986,12 +1986,14 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
 	u8 CR48, CR38;
 	int ret;
 	bool xgi21_drvlcdcaplist = false;
+	struct fb_info *fb_info;
 
 	memset(&XGIhw_ext, 0, sizeof(struct xgi_hw_device_info));
 	fb_info = framebuffer_alloc(sizeof(struct fb_info), &pdev->dev);
 	if (!fb_info)
 		return -ENOMEM;
 
+	xgi_video_info.fb_info = fb_info;
 	xgi_video_info.chip_id = pdev->device;
 	pci_read_config_byte(pdev,
 			     PCI_REVISION_ID,
@@ -2447,6 +2449,7 @@ static int __devinit xgifb_probe(struct pci_dev *pdev,
 static void __devexit xgifb_remove(struct pci_dev *pdev)
 {
 	struct video_info *xgifb_info = pci_get_drvdata(pdev);
+	struct fb_info *fb_info = xgifb_info->fb_info;
 
 	unregister_framebuffer(fb_info);
 #ifdef CONFIG_MTRR
diff --git a/drivers/staging/xgifb/XGIfb.h b/drivers/staging/xgifb/XGIfb.h
index f778293b553e6d7d697c627e4fb06a9048e1c6dd..83a191173081a2b2900f6b2ba75d1cc861f30e79 100644
--- a/drivers/staging/xgifb/XGIfb.h
+++ b/drivers/staging/xgifb/XGIfb.h
@@ -53,6 +53,8 @@ enum xgi_tv_plug { /* vicki@030226 */
 };
 
 struct video_info {
+	struct fb_info *fb_info;
+
 	int           chip_id;
 	unsigned int  video_size;
 	unsigned long video_base;