* radeonfb: cannot map FB
@ 2004-06-26 21:59 Martin MOKREJŠ
2004-06-26 22:49 ` Kronos
0 siblings, 1 reply; 7+ messages in thread
From: Martin MOKREJŠ @ 2004-06-26 21:59 UTC (permalink / raw)
To: Linux Kernel Mailing
Hi,
could someone help with radeonfb not detected under 2.4.27-rc2?
I filed this bug under the 2.6 bugzilla ... :(
http://bugzilla.kernel.org/show_bug.cgi?id=2917
Thanks
Please Cc: me in replies.
--
Martin Mokrejs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: radeonfb: cannot map FB
2004-06-26 21:59 radeonfb: cannot map FB Martin MOKREJŠ
@ 2004-06-26 22:49 ` Kronos
2004-06-27 19:16 ` Martin MOKREJŠ
0 siblings, 1 reply; 7+ messages in thread
From: Kronos @ 2004-06-26 22:49 UTC (permalink / raw)
To: linux-kernel, mmokrejs
Martin MOKREJ¦ <mmokrejs@natur.cuni.cz> ha scritto:
> Hi,
> could someone help with radeonfb not detected under 2.4.27-rc2?
> I filed this bug under the 2.6 bugzilla ... :(
> http://bugzilla.kernel.org/show_bug.cgi?id=2917
> Thanks
> Please Cc: me in replies.
ioremap is failing. You likely have 1GB (or more) of RAM and kernel is
unable to find some space in lowmem to map the video RAM (128MB).
In 2.6 this is fixed by mapping only a small amount of video RAM (at
most 16MB).
Backport should be easy, I'll cook a patch ASAP.
Luca
--
Home: http://kronoz.cjb.net
Let me make your mind, leave yourself behind
Be not afraid
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: radeonfb: cannot map FB
2004-06-26 22:49 ` Kronos
@ 2004-06-27 19:16 ` Martin MOKREJŠ
2004-06-27 20:33 ` Kronos
0 siblings, 1 reply; 7+ messages in thread
From: Martin MOKREJŠ @ 2004-06-27 19:16 UTC (permalink / raw)
To: Kronos; +Cc: linux-kernel
Hi,
yes, I have one GB and SMP kernel. It's interresting that I don't
remember this bug with kernels around 2.4.23 or .24 - just a guess. If
someone would be interrwested, and can check when did it appear for the
first time. Otherwise, will be happy to get your patch. I think the
printk() lines could print out more debug info. For example the contents of
some variables which were passed to preceeding functions ... ;)
Martin
On Sun, 27 Jun 2004, Kronos wrote:
> Martin MOKREJ? <mmokrejs@natur.cuni.cz> ha scritto:
> > Hi,
> > could someone help with radeonfb not detected under 2.4.27-rc2?
> > I filed this bug under the 2.6 bugzilla ... :(
> > http://bugzilla.kernel.org/show_bug.cgi?id=2917
> > Thanks
> > Please Cc: me in replies.
>
> ioremap is failing. You likely have 1GB (or more) of RAM and kernel is
> unable to find some space in lowmem to map the video RAM (128MB).
>
> In 2.6 this is fixed by mapping only a small amount of video RAM (at
> most 16MB).
>
> Backport should be easy, I'll cook a patch ASAP.
>
> Luca
>
--
Martin Mokrejs
GPG key is at http://www.natur.cuni.cz/~mmokrejs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: radeonfb: cannot map FB
2004-06-27 19:16 ` Martin MOKREJŠ
@ 2004-06-27 20:33 ` Kronos
2004-06-27 21:51 ` Martin MOKREJŠ
2004-08-26 12:03 ` Martin MOKREJŠ
0 siblings, 2 replies; 7+ messages in thread
From: Kronos @ 2004-06-27 20:33 UTC (permalink / raw)
To: Martin MOKREJ?; +Cc: linux-kernel
Il Sun, Jun 27, 2004 at 09:16:34PM +0200, Martin MOKREJ? ha scritto:
> Hi,
> yes, I have one GB and SMP kernel. It's interresting that I don't
> remember this bug with kernels around 2.4.23 or .24 - just a guess.
Hum, I see a big DRM merge in .23 but it's unrelated to the fb driver.
Nothing else. Maybe you added another PCI card that used part of the
available address space?
> If someone would be interrwested, and can check when did it appear for
> the first time. Otherwise, will be happy to get your patch.
Patch follows. Compile with DEBUG 1 if something goes wrong.
> I think the printk() lines could print out more debug info. For
> example the contents of some variables which were passed to preceeding
> functions ... ;)
The old driver (ie. the one in 2.4 and the "old" one in 2.6) is not
developed anymore. The new reference point is the driver by BenH in 2.6.
--- linux-2.4/drivers/video/radeonfb.c.orig 2004-06-27 22:26:56.000000000 +0200
+++ linux-2.4/drivers/video/radeonfb.c 2004-06-27 22:29:49.000000000 +0200
@@ -176,7 +176,8 @@
#define RTRACE if(0) printk
#endif
-
+#define MAX_MAPPED_VRAM (2048*2048*4)
+#define MIN_MAPPED_VRAM (1024*768*1)
enum radeon_chips {
RADEON_QD,
@@ -499,7 +500,8 @@
short chipset;
unsigned char arch;
- int video_ram;
+ unsigned int video_ram;
+ unsigned int mapped_vram;
u8 rev;
int pitch, bpp, depth;
int xres, yres, pixclock;
@@ -1823,8 +1825,20 @@
}
}
- rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
- rinfo->video_ram);
+ if (rinfo->video_ram < rinfo->mapped_vram)
+ rinfo->mapped_vram = rinfo->video_ram;
+ else
+ rinfo->mapped_vram = MAX_MAPPED_VRAM;
+ do {
+ rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
+ rinfo->mapped_vram);
+ if (rinfo->fb_base)
+ break;
+
+ RTRACE(KERN_INFO "radeonfb: cannot ioremap %dk of videoram\n", rinfo->mapped_vram);
+ rinfo->mapped_vram /= 2;
+ } while(rinfo->mapped_vram > MIN_MAPPED_VRAM);
+
if (!rinfo->fb_base) {
printk ("radeonfb: cannot map FB\n");
iounmap ((void*)rinfo->mmio_base);
@@ -1835,6 +1849,7 @@
kfree (rinfo);
return -ENODEV;
}
+ RTRACE(KERN_INFO "radeonfb: mapped %dk videoram\n", rinfo->mapped_vram/1024);
/* currcon not yet configured, will be set by first switch */
rinfo->currcon = -1;
@@ -2261,7 +2276,7 @@
sprintf (fix->id, "ATI Radeon %s", rinfo->name);
fix->smem_start = rinfo->fb_base_phys;
- fix->smem_len = rinfo->video_ram;
+ fix->smem_len = rinfo->mapped_vram;
fix->type = disp->type;
fix->type_aux = disp->type_aux;
@@ -2429,6 +2444,9 @@
return -EINVAL;
}
+ if (((v.xres_virtual * v.yres_virtual * nom) / den) > rinfo->mapped_vram)
+ return -EINVAL;
+
if (radeonfb_do_maximize(rinfo, var, &v, nom, den) < 0)
return -EINVAL;
Luca
--
Home: http://kronoz.cjb.net
Carpe diem, quam minimum credula postero. (Q. Horatius Flaccus)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: radeonfb: cannot map FB
2004-06-27 20:33 ` Kronos
@ 2004-06-27 21:51 ` Martin MOKREJŠ
2004-08-26 12:03 ` Martin MOKREJŠ
1 sibling, 0 replies; 7+ messages in thread
From: Martin MOKREJŠ @ 2004-06-27 21:51 UTC (permalink / raw)
To: Kronos; +Cc: linux-kernel
On Sun, 27 Jun 2004, Kronos wrote:
Hi,
thanks a lot, this has fixed my bug! Below is what I got with DEBUG=1:
radeonfb_pci_register BEGIN
radeonfb: ref_clk=2700, ref_div=12, xclk=20000 from BIOS
radeonfb: probed DDR SGRAM 131072k videoram
BIOS 4 scratch = 8000008
FP_GEN_CNTL: b430085, FP2_GEN_CNTL: 8
TMDS_TRANSMITTER_CNTL: 10000041, TMDS_CNTL: 1000000, LVDS_GEN_CNTL: 8000008
DAC_CNTL: ff606002, DAC_CNTL2: 0, CRTC_GEN_CNTL: 2000200
radeonfb: detected DFP panel size from BIOS: 1280x1024
radeonfb: mapped 16384k videoram
hStart = 1328, hEnd = 1440, hTotal = 1688
vStart = 1025, vEnd = 1028, vTotal = 1066
h_total_disp = 0x9f00d2 hsync_strt_wid = 0xe052a
v_total_disp = 0x3ff0429 vsync_strt_wid = 0x30400
pixclock = 9259
freq = 10800
post div = 0x2
fb_div = 0x60
ppll_div_3 = 0x10060
Console: switching to colour frame buffer device 160x64
radeonfb: ATI Radeon 9200 Ya DDR SGRAM 128 MB
radeonfb: DVI port DFP monitor connected
radeonfb: CRT port no monitor connected
radeonfb_pci_register END
Tha card has 128MB RAM, so the driver detects size properly.
Please include this fix in new RC.
Martin
> Il Sun, Jun 27, 2004 at 09:16:34PM +0200, Martin MOKREJ? ha scritto:
> > Hi,
> > yes, I have one GB and SMP kernel. It's interresting that I don't
> > remember this bug with kernels around 2.4.23 or .24 - just a guess.
>
> Hum, I see a big DRM merge in .23 but it's unrelated to the fb driver.
> Nothing else. Maybe you added another PCI card that used part of the
> available address space?
Definitely not. Maybe changed setting in BIOS, otherwise physically same
box. But as I said, those kernel versions were just a guess. If you want,
I'll try several old kernels ...
> > If someone would be interrwested, and can check when did it appear for
> > the first time. Otherwise, will be happy to get your patch.
>
> Patch follows. Compile with DEBUG 1 if something goes wrong.
>
> > I think the printk() lines could print out more debug info. For
> > example the contents of some variables which were passed to preceeding
> > functions ... ;)
>
> The old driver (ie. the one in 2.4 and the "old" one in 2.6) is not
> developed anymore. The new reference point is the driver by BenH in 2.6.
>
>
> --- linux-2.4/drivers/video/radeonfb.c.orig 2004-06-27 22:26:56.000000000 +0200
> +++ linux-2.4/drivers/video/radeonfb.c 2004-06-27 22:29:49.000000000 +0200
> @@ -176,7 +176,8 @@
> #define RTRACE if(0) printk
> #endif
>
> -
> +#define MAX_MAPPED_VRAM (2048*2048*4)
> +#define MIN_MAPPED_VRAM (1024*768*1)
>
> enum radeon_chips {
> RADEON_QD,
> @@ -499,7 +500,8 @@
>
> short chipset;
> unsigned char arch;
> - int video_ram;
> + unsigned int video_ram;
> + unsigned int mapped_vram;
> u8 rev;
> int pitch, bpp, depth;
> int xres, yres, pixclock;
> @@ -1823,8 +1825,20 @@
> }
> }
>
> - rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
> - rinfo->video_ram);
> + if (rinfo->video_ram < rinfo->mapped_vram)
> + rinfo->mapped_vram = rinfo->video_ram;
> + else
> + rinfo->mapped_vram = MAX_MAPPED_VRAM;
> + do {
> + rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
> + rinfo->mapped_vram);
> + if (rinfo->fb_base)
> + break;
> +
> + RTRACE(KERN_INFO "radeonfb: cannot ioremap %dk of videoram\n", rinfo->mapped_vram);
> + rinfo->mapped_vram /= 2;
> + } while(rinfo->mapped_vram > MIN_MAPPED_VRAM);
> +
> if (!rinfo->fb_base) {
> printk ("radeonfb: cannot map FB\n");
> iounmap ((void*)rinfo->mmio_base);
> @@ -1835,6 +1849,7 @@
> kfree (rinfo);
> return -ENODEV;
> }
> + RTRACE(KERN_INFO "radeonfb: mapped %dk videoram\n", rinfo->mapped_vram/1024);
>
> /* currcon not yet configured, will be set by first switch */
> rinfo->currcon = -1;
> @@ -2261,7 +2276,7 @@
> sprintf (fix->id, "ATI Radeon %s", rinfo->name);
>
> fix->smem_start = rinfo->fb_base_phys;
> - fix->smem_len = rinfo->video_ram;
> + fix->smem_len = rinfo->mapped_vram;
>
> fix->type = disp->type;
> fix->type_aux = disp->type_aux;
> @@ -2429,6 +2444,9 @@
> return -EINVAL;
> }
>
> + if (((v.xres_virtual * v.yres_virtual * nom) / den) > rinfo->mapped_vram)
> + return -EINVAL;
> +
> if (radeonfb_do_maximize(rinfo, var, &v, nom, den) < 0)
> return -EINVAL;
>
>
>
> Luca
>
--
Martin Mokrejs
GPG key is at http://www.natur.cuni.cz/~mmokrejs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: radeonfb: cannot map FB
2004-06-27 20:33 ` Kronos
2004-06-27 21:51 ` Martin MOKREJŠ
@ 2004-08-26 12:03 ` Martin MOKREJŠ
2004-08-26 17:54 ` Kronos
1 sibling, 1 reply; 7+ messages in thread
From: Martin MOKREJŠ @ 2004-08-26 12:03 UTC (permalink / raw)
To: Kronos; +Cc: linux-kernel
Hi,
I have just tested 2.4.28-pre2 and found this patch still isn't in. Could
someone apply it to the official tree and tell me back to re-test? The fix
works fine for me some time already.
Thanks
Martin
On Sun, 27 Jun 2004, Kronos wrote:
> Il Sun, Jun 27, 2004 at 09:16:34PM +0200, Martin MOKREJ? ha scritto:
> > Hi,
> > yes, I have one GB and SMP kernel. It's interresting that I don't
> > remember this bug with kernels around 2.4.23 or .24 - just a guess.
>
> Hum, I see a big DRM merge in .23 but it's unrelated to the fb driver.
> Nothing else. Maybe you added another PCI card that used part of the
> available address space?
>
> > If someone would be interrwested, and can check when did it appear for
> > the first time. Otherwise, will be happy to get your patch.
>
> Patch follows. Compile with DEBUG 1 if something goes wrong.
>
> > I think the printk() lines could print out more debug info. For
> > example the contents of some variables which were passed to preceeding
> > functions ... ;)
>
> The old driver (ie. the one in 2.4 and the "old" one in 2.6) is not
> developed anymore. The new reference point is the driver by BenH in 2.6.
>
>
> --- linux-2.4/drivers/video/radeonfb.c.orig 2004-06-27 22:26:56.000000000 +0200
> +++ linux-2.4/drivers/video/radeonfb.c 2004-06-27 22:29:49.000000000 +0200
> @@ -176,7 +176,8 @@
> #define RTRACE if(0) printk
> #endif
>
> -
> +#define MAX_MAPPED_VRAM (2048*2048*4)
> +#define MIN_MAPPED_VRAM (1024*768*1)
>
> enum radeon_chips {
> RADEON_QD,
> @@ -499,7 +500,8 @@
>
> short chipset;
> unsigned char arch;
> - int video_ram;
> + unsigned int video_ram;
> + unsigned int mapped_vram;
> u8 rev;
> int pitch, bpp, depth;
> int xres, yres, pixclock;
> @@ -1823,8 +1825,20 @@
> }
> }
>
> - rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
> - rinfo->video_ram);
> + if (rinfo->video_ram < rinfo->mapped_vram)
> + rinfo->mapped_vram = rinfo->video_ram;
> + else
> + rinfo->mapped_vram = MAX_MAPPED_VRAM;
> + do {
> + rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
> + rinfo->mapped_vram);
> + if (rinfo->fb_base)
> + break;
> +
> + RTRACE(KERN_INFO "radeonfb: cannot ioremap %dk of videoram\n", rinfo->mapped_vram);
> + rinfo->mapped_vram /= 2;
> + } while(rinfo->mapped_vram > MIN_MAPPED_VRAM);
> +
> if (!rinfo->fb_base) {
> printk ("radeonfb: cannot map FB\n");
> iounmap ((void*)rinfo->mmio_base);
> @@ -1835,6 +1849,7 @@
> kfree (rinfo);
> return -ENODEV;
> }
> + RTRACE(KERN_INFO "radeonfb: mapped %dk videoram\n", rinfo->mapped_vram/1024);
>
> /* currcon not yet configured, will be set by first switch */
> rinfo->currcon = -1;
> @@ -2261,7 +2276,7 @@
> sprintf (fix->id, "ATI Radeon %s", rinfo->name);
>
> fix->smem_start = rinfo->fb_base_phys;
> - fix->smem_len = rinfo->video_ram;
> + fix->smem_len = rinfo->mapped_vram;
>
> fix->type = disp->type;
> fix->type_aux = disp->type_aux;
> @@ -2429,6 +2444,9 @@
> return -EINVAL;
> }
>
> + if (((v.xres_virtual * v.yres_virtual * nom) / den) > rinfo->mapped_vram)
> + return -EINVAL;
> +
> if (radeonfb_do_maximize(rinfo, var, &v, nom, den) < 0)
> return -EINVAL;
>
>
>
> Luca
>
--
Martin Mokrejs
GPG key is at http://www.natur.cuni.cz/~mmokrejs
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: radeonfb: cannot map FB
2004-08-26 12:03 ` Martin MOKREJŠ
@ 2004-08-26 17:54 ` Kronos
0 siblings, 0 replies; 7+ messages in thread
From: Kronos @ 2004-08-26 17:54 UTC (permalink / raw)
To: Martin MOKREJ?; +Cc: linux-kernel
Il Thu, Aug 26, 2004 at 02:03:56PM +0200, Martin MOKREJ? ha scritto:
> Hi,
> I have just tested 2.4.28-pre2 and found this patch still isn't in. Could
> someone apply it to the official tree and tell me back to re-test? The fix
> works fine for me some time already.
The problem is that fix->smem_len is also used by the ioctl
FBIOGET_FSCREENINFO. With my patch userspace will be unable to know the
real amount of VRAM. A proper fix requires changes in the FB API; I'll
be on holiday for a couple of weeks and I'll try to make patch that's not
too intrusive.
> On Sun, 27 Jun 2004, Kronos wrote:
>
> > Il Sun, Jun 27, 2004 at 09:16:34PM +0200, Martin MOKREJ? ha scritto:
> > > Hi,
> > > yes, I have one GB and SMP kernel. It's interresting that I don't
> > > remember this bug with kernels around 2.4.23 or .24 - just a guess.
> >
> > Hum, I see a big DRM merge in .23 but it's unrelated to the fb driver.
> > Nothing else. Maybe you added another PCI card that used part of the
> > available address space?
> >
> > > If someone would be interrwested, and can check when did it appear for
> > > the first time. Otherwise, will be happy to get your patch.
> >
> > Patch follows. Compile with DEBUG 1 if something goes wrong.
> >
> > > I think the printk() lines could print out more debug info. For
> > > example the contents of some variables which were passed to preceeding
> > > functions ... ;)
> >
> > The old driver (ie. the one in 2.4 and the "old" one in 2.6) is not
> > developed anymore. The new reference point is the driver by BenH in 2.6.
> >
> >
> > --- linux-2.4/drivers/video/radeonfb.c.orig 2004-06-27 22:26:56.000000000 +0200
> > +++ linux-2.4/drivers/video/radeonfb.c 2004-06-27 22:29:49.000000000 +0200
> > @@ -176,7 +176,8 @@
> > #define RTRACE if(0) printk
> > #endif
> >
> > -
> > +#define MAX_MAPPED_VRAM (2048*2048*4)
> > +#define MIN_MAPPED_VRAM (1024*768*1)
> >
> > enum radeon_chips {
> > RADEON_QD,
> > @@ -499,7 +500,8 @@
> >
> > short chipset;
> > unsigned char arch;
> > - int video_ram;
> > + unsigned int video_ram;
> > + unsigned int mapped_vram;
> > u8 rev;
> > int pitch, bpp, depth;
> > int xres, yres, pixclock;
> > @@ -1823,8 +1825,20 @@
> > }
> > }
> >
> > - rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
> > - rinfo->video_ram);
> > + if (rinfo->video_ram < rinfo->mapped_vram)
> > + rinfo->mapped_vram = rinfo->video_ram;
> > + else
> > + rinfo->mapped_vram = MAX_MAPPED_VRAM;
> > + do {
> > + rinfo->fb_base = (unsigned long) ioremap (rinfo->fb_base_phys,
> > + rinfo->mapped_vram);
> > + if (rinfo->fb_base)
> > + break;
> > +
> > + RTRACE(KERN_INFO "radeonfb: cannot ioremap %dk of videoram\n", rinfo->mapped_vram);
> > + rinfo->mapped_vram /= 2;
> > + } while(rinfo->mapped_vram > MIN_MAPPED_VRAM);
> > +
> > if (!rinfo->fb_base) {
> > printk ("radeonfb: cannot map FB\n");
> > iounmap ((void*)rinfo->mmio_base);
> > @@ -1835,6 +1849,7 @@
> > kfree (rinfo);
> > return -ENODEV;
> > }
> > + RTRACE(KERN_INFO "radeonfb: mapped %dk videoram\n", rinfo->mapped_vram/1024);
> >
> > /* currcon not yet configured, will be set by first switch */
> > rinfo->currcon = -1;
> > @@ -2261,7 +2276,7 @@
> > sprintf (fix->id, "ATI Radeon %s", rinfo->name);
> >
> > fix->smem_start = rinfo->fb_base_phys;
> > - fix->smem_len = rinfo->video_ram;
> > + fix->smem_len = rinfo->mapped_vram;
> >
> > fix->type = disp->type;
> > fix->type_aux = disp->type_aux;
> > @@ -2429,6 +2444,9 @@
> > return -EINVAL;
> > }
> >
> > + if (((v.xres_virtual * v.yres_virtual * nom) / den) > rinfo->mapped_vram)
> > + return -EINVAL;
> > +
> > if (radeonfb_do_maximize(rinfo, var, &v, nom, den) < 0)
> > return -EINVAL;
> >
> >
> >
> > Luca
Luca
--
Home: http://kronoz.cjb.net
Un apostolo vedendo Gesu` camminare sulle acque:
- Cazzo se e` buono 'sto fumo!!!
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2004-08-26 18:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-06-26 21:59 radeonfb: cannot map FB Martin MOKREJŠ
2004-06-26 22:49 ` Kronos
2004-06-27 19:16 ` Martin MOKREJŠ
2004-06-27 20:33 ` Kronos
2004-06-27 21:51 ` Martin MOKREJŠ
2004-08-26 12:03 ` Martin MOKREJŠ
2004-08-26 17:54 ` Kronos
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®