linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] hgafb oopses
@ 2001-11-12 12:28 Bakonyi Ferenc
  2001-11-12 12:32 ` Geert Uytterhoeven
  0 siblings, 1 reply; 4+ messages in thread
From: Bakonyi Ferenc @ 2001-11-12 12:28 UTC (permalink / raw)
  To: Geert Uytterhoeven; +Cc: Linus Torvalds, Linux Kernel Development


	Hi!

On Mon, 12 Nov 2001, Geert Uytterhoeven wrote:
>
> Sorry... Anyway, the old code was broken too, since it wasn't portable.
>

Is it portable now? Can you test it on non-i386?

> > The patch below is against 2.4.15-pre1. It resolves the ISA address
> > confusion, replaces scr_{read|write} functions with isa_{read|write},
> > and elimiates a cosmetic compiler warning about suggested parens.

> But it does some other Bad Things(TM): putting ISA memory _adresses_ and
> _16_bit_ values in _unsigned_chars_ is not good for your health...

There is no mercy for my brain-damage, patch follows.

Regards:
	Ferenc Bakonyi


--- linux-2.4.15-pre3/drivers/video/hgafb.c	Mon Nov 12 13:16:32 2001
+++ linux/drivers/video/hgafb.c	Mon Nov 12 13:15:56 2001
@@ -312,8 +312,8 @@
 static int __init hga_card_detect(void)
 {
 	int count=0;
-	unsigned char p, p_save;
-	unsigned char q, q_save;
+	unsigned long p, q;
+	unsigned short p_save, q_save;

 	hga_vram_base = 0xb0000;
 	hga_vram_len  = 0x08000;


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] hgafb oopses
  2001-11-12 12:28 [PATCH] hgafb oopses Bakonyi Ferenc
@ 2001-11-12 12:32 ` Geert Uytterhoeven
  0 siblings, 0 replies; 4+ messages in thread
From: Geert Uytterhoeven @ 2001-11-12 12:32 UTC (permalink / raw)
  To: Bakonyi Ferenc; +Cc: Linus Torvalds, Linux Kernel Development

On Mon, 12 Nov 2001, Bakonyi Ferenc wrote:
> On Mon, 12 Nov 2001, Geert Uytterhoeven wrote:
> > Sorry... Anyway, the old code was broken too, since it wasn't portable.
>
> Is it portable now? Can you test it on non-i386?

Unfortunately not. I don't have HGA hardware.

All I can do is read the code and comment :-)

> > > The patch below is against 2.4.15-pre1. It resolves the ISA address
> > > confusion, replaces scr_{read|write} functions with isa_{read|write},
> > > and elimiates a cosmetic compiler warning about suggested parens.
>
> > But it does some other Bad Things(TM): putting ISA memory _adresses_ and
> > _16_bit_ values in _unsigned_chars_ is not good for your health...
>
> There is no mercy for my brain-damage, patch follows.
>
> --- linux-2.4.15-pre3/drivers/video/hgafb.c	Mon Nov 12 13:16:32 2001
> +++ linux/drivers/video/hgafb.c	Mon Nov 12 13:15:56 2001
> @@ -312,8 +312,8 @@
>  static int __init hga_card_detect(void)
>  {
>  	int count=0;
> -	unsigned char p, p_save;
> -	unsigned char q, q_save;
> +	unsigned long p, q;
> +	unsigned short p_save, q_save;
>
>  	hga_vram_base = 0xb0000;
>  	hga_vram_len  = 0x08000;

Thanks, that looks better!

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] hgafb oopses
  2001-11-09 12:04 Bakonyi Ferenc
@ 2001-11-12  7:27 ` Geert Uytterhoeven
  0 siblings, 0 replies; 4+ messages in thread
From: Geert Uytterhoeven @ 2001-11-12  7:27 UTC (permalink / raw)
  To: Bakonyi Ferenc; +Cc: Linus Torvalds, Linux Kernel Development

On Fri, 9 Nov 2001, Bakonyi Ferenc wrote:
> Somebody submitted a patch against 2.4.13 which broke hgafb. That patch
> called isa_memset() and isa_writeb() with an _already_ mapped address.
> So that address was mapped twice -> oops.

Sorry... Anyway, the old code was broken too, since it wasn't portable.

(Why did no one told me? I did receive an additional patch to make hgafb work
 again after I posted the first version to linux-kernel, which I did
 incorporate in the final version).

> The patch below is against 2.4.15-pre1. It resolves the ISA address
> confusion, replaces scr_{read|write} functions with isa_{read|write},
> and elimiates a cosmetic compiler warning about suggested parens.

But it does some other Bad Things(TM): putting ISA memory _adresses_ and
_16_bit_ values in _unsigned_chars_ is not good for your health...

> --- linux-2.4.15-pre1/drivers/video/hgafb.c	Fri Nov  9 12:22:42 2001
> +++ linux/drivers/video/hgafb.c	Fri Nov  9 12:26:33 2001
> @@ -312,10 +312,10 @@
>  static int __init hga_card_detect(void)
>  {
>  	int count=0;
> -	u16 *p, p_save;
> -	u16 *q, q_save;
> +	unsigned char p, p_save;
> +	unsigned char q, q_save;
        ^^^^^^^^^^^^^
>
> -	hga_vram_base = VGA_MAP_MEM(0xb0000);
> +	hga_vram_base = 0xb0000;
>  	hga_vram_len  = 0x08000;
>
>  	if (request_region(0x3b0, 12, "hgafb"))
> @@ -325,14 +325,14 @@
>
>  	/* do a memory check */
>
> -	p = (u16 *) hga_vram_base;
> -	q = (u16 *) (hga_vram_base + 0x01000);
> +	p = hga_vram_base;
> +	q = hga_vram_base + 0x01000;
>
> -	p_save = scr_readw(p); q_save = scr_readw(q);
> +	p_save = isa_readw(p); q_save = isa_readw(q);
>
> -	scr_writew(0xaa55, p); if (scr_readw(p) == 0xaa55) count++;
> -	scr_writew(0x55aa, p); if (scr_readw(p) == 0x55aa) count++;
> -	scr_writew(p_save, p);
> +	isa_writew(0xaa55, p); if (isa_readw(p) == 0xaa55) count++;
> +	isa_writew(0x55aa, p); if (isa_readw(p) == 0x55aa) count++;
> +	isa_writew(p_save, p);

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] hgafb oopses
@ 2001-11-09 12:04 Bakonyi Ferenc
  2001-11-12  7:27 ` Geert Uytterhoeven
  0 siblings, 1 reply; 4+ messages in thread
From: Bakonyi Ferenc @ 2001-11-09 12:04 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel


	Hi!

Somebody submitted a patch against 2.4.13 which broke hgafb. That patch
called isa_memset() and isa_writeb() with an _already_ mapped address.
So that address was mapped twice -> oops.

The patch below is against 2.4.15-pre1. It resolves the ISA address
confusion, replaces scr_{read|write} functions with isa_{read|write},
and elimiates a cosmetic compiler warning about suggested parens.

Best regards:
	Ferenc Bakonyi



--- linux-2.4.15-pre1/drivers/video/hgafb.c	Fri Nov  9 12:22:42 2001
+++ linux/drivers/video/hgafb.c	Fri Nov  9 12:26:33 2001
@@ -312,10 +312,10 @@
 static int __init hga_card_detect(void)
 {
 	int count=0;
-	u16 *p, p_save;
-	u16 *q, q_save;
+	unsigned char p, p_save;
+	unsigned char q, q_save;

-	hga_vram_base = VGA_MAP_MEM(0xb0000);
+	hga_vram_base = 0xb0000;
 	hga_vram_len  = 0x08000;

 	if (request_region(0x3b0, 12, "hgafb"))
@@ -325,14 +325,14 @@

 	/* do a memory check */

-	p = (u16 *) hga_vram_base;
-	q = (u16 *) (hga_vram_base + 0x01000);
+	p = hga_vram_base;
+	q = hga_vram_base + 0x01000;

-	p_save = scr_readw(p); q_save = scr_readw(q);
+	p_save = isa_readw(p); q_save = isa_readw(q);

-	scr_writew(0xaa55, p); if (scr_readw(p) == 0xaa55) count++;
-	scr_writew(0x55aa, p); if (scr_readw(p) == 0x55aa) count++;
-	scr_writew(p_save, p);
+	isa_writew(0xaa55, p); if (isa_readw(p) == 0xaa55) count++;
+	isa_writew(0x55aa, p); if (isa_readw(p) == 0x55aa) count++;
+	isa_writew(p_save, p);

 	if (count != 2) {
 		return 0;
@@ -717,7 +717,7 @@
 	if (!nologo) hga_show_logo();
 #endif /* MODULE */

-	hga_fix.smem_start = hga_vram_base;
+	hga_fix.smem_start = VGA_MAP_MEM(hga_vram_base);
 	hga_fix.smem_len = hga_vram_len;

 	disp.var = hga_default_var;
@@ -795,7 +795,7 @@
 	if (!options || !*options)
 		return 0;

-	while (this_opt = strsep(&options, ",")) {
+	while ((this_opt = strsep(&options, ","))) {
 		if (!strncmp(this_opt, "font:", 5))
 			strcpy(fb_info.fontname, this_opt+5);
 	}


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2001-11-12 12:34 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-11-12 12:28 [PATCH] hgafb oopses Bakonyi Ferenc
2001-11-12 12:32 ` Geert Uytterhoeven
  -- strict thread matches above, loose matches on Subject: below --
2001-11-09 12:04 Bakonyi Ferenc
2001-11-12  7:27 ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).