Re: Linux-2.6.13-rc7

From: Antonino A. Daplas
Date: Thu Aug 25 2005 - 12:46:25 EST


Sebastian Kaergel wrote:
On Fri, 26 Aug 2005 00:23:40 +0800
"Antonino A. Daplas" <adaplas@xxxxxxxxx> wrote:

Sebastian Kaergel wrote:
On Tue, 23 Aug 2005 22:08:13 -0700 (PDT)
Linus Torvalds <torvalds@xxxxxxxx> wrote:

Sylvain Meyer:
intelfb: Do not ioremap entire graphics aperture
Probably this one. If vram is less than stolen size, intelfb
will only ioremap the framebuffer memory, excluding the
ringbuffer and the cursor memory.

Try booting with video=intelfb:accel:0,nohwcursor:0. If you get
a display, try this patch.

CC'ed Sylvain.

Signed-off-by: Antonino Daplas <adaplas@xxxxxxx>
---
<patch snipped>

Hi,
thanks for your quick reply, but it did not work. the screen remains
black when booting with video=intelfb:accel:0,{,no}hwcursor:0

Can you try the patch anyway?

If the patch does not fix your problem, can you revert the patches and
see which is the culprit. I'm attaching those 2 patches.

Tony




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


drivers/video/intelfb/intelfbdrv.c: needs update
Index: drivers/video/intelfb/intelfbdrv.c
===================================================================
--- 0582536f492dc10e4849053d19fec93ca72e9bfe/drivers/video/intelfb/intelfbdrv.c (mode:100644)
+++ uncommitted/drivers/video/intelfb/intelfbdrv.c (mode:100644)
@@ -579,23 +579,6 @@
return -ENODEV;
}

- /* Map the fb and MMIO regions */
- dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache
- (dinfo->aperture.physical, dinfo->aperture.size);
- if (!dinfo->aperture.virtual) {
- ERR_MSG("Cannot remap FB region.\n");
- cleanup(dinfo);
- return -ENODEV;
- }
- dinfo->mmio_base =
- (u8 __iomem *)ioremap_nocache(dinfo->mmio_base_phys,
- INTEL_REG_SIZE);
- if (!dinfo->mmio_base) {
- ERR_MSG("Cannot remap MMIO region.\n");
- cleanup(dinfo);
- return -ENODEV;
- }
-
/* Get the chipset info. */
dinfo->pci_chipset = pdev->device;

@@ -679,6 +662,26 @@
}

/* Allocate memories (which aren't stolen) */
+ /* Map the fb and MMIO regions */
+ /* ioremap only up to the end of used aperture */
+ dinfo->aperture.virtual = (u8 __iomem *)ioremap_nocache
+ (dinfo->aperture.physical, ((offset + dinfo->fb.offset) << 12)
+ + dinfo->fb.size);
+ if (!dinfo->aperture.virtual) {
+ ERR_MSG("Cannot remap FB region.\n");
+ cleanup(dinfo);
+ return -ENODEV;
+ }
+
+ dinfo->mmio_base =
+ (u8 __iomem *)ioremap_nocache(dinfo->mmio_base_phys,
+ INTEL_REG_SIZE);
+ if (!dinfo->mmio_base) {
+ ERR_MSG("Cannot remap MMIO region.\n");
+ cleanup(dinfo);
+ return -ENODEV;
+ }
+
if (dinfo->accel) {
if (!(dinfo->gtt_ring_mem =
agp_allocate_memory(bridge, dinfo->ring.size >> 12,
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -643,8 +643,8 @@ fb_pan_display(struct fb_info *info, str
int
fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
{
- int err;
-
+ int err, flags = info->flags;
+
if (var->activate & FB_ACTIVATE_INV_MODE) {
struct fb_videomode mode1, mode2;
int ret = 0;
@@ -697,7 +697,7 @@ fb_set_var(struct fb_info *info, struct
!list_empty(&info->modelist))
err = fb_add_videomode(&mode, &info->modelist);

- if (!err && info->flags & FBINFO_MISC_USEREVENT) {
+ if (!err && flags & FBINFO_MISC_USEREVENT) {
struct fb_event event;
int evnt = (var->activate & FB_ACTIVATE_ALL) ?
FB_EVENT_MODE_CHANGE_ALL :