Thread (31 messages) 31 messages, 8 authors, 2023-05-12

Re: [PATCH v6 5/6] fbdev: Move framebuffer I/O helpers into <asm/fb.h>

From: Thomas Zimmermann <tzimmermann@suse.de>
Date: 2023-05-11 10:53:52
Also in: dri-devel, linux-arch, linux-m68k, lkml, loongarch, oe-kbuild-all, sparclinux

Hi

Am 10.05.23 um 17:54 schrieb Arnd Bergmann:
On Wed, May 10, 2023, at 16:27, Thomas Zimmermann wrote:
quoted
Am 10.05.23 um 16:15 schrieb Arnd Bergmann:
quoted
On Wed, May 10, 2023, at 16:03, kernel test robot wrote:
  
quoted
quoted
I think that's a preexisting bug and I have no idea what the
correct solution is. Looking for HD64461 shows it being used
both with inw/outw and readw/writew, so there is no way to have
the correct type. The sh __raw_readw() definition hides this bug,
but that is a problem with arch/sh and it probably hides others
as well.
The constant HD64461_IOBASE is defined as integer at


https://elixir.bootlin.com/linux/latest/source/arch/sh/include/asm/hd64461.h#L17

but fb_readw() expects a volatile-void pointer. I guess we could add a
cast somewhere to silence the problem. In the current upstream code,
that appears to be done by sh's __raw_readw() internally:


https://elixir.bootlin.com/linux/latest/source/arch/sh/include/asm/io.h#L35
Sure, that would make it build again, but that still doesn't make the
code correct, since it's completely unclear what base address the
Oh, OK. I thought it's like vgafb, which grabs the fixed VGA framebuffer 
range.
HD64461_IOBASE is relative to. The hp6xx platform code only passes it
through inw()/outw(), which take an offset relative to sh_io_port_base,
but that is not initialized on hp6xx. I tried to find in the history
when it broke, apparently that was in 2007 commit 34a780a0afeb ("sh:
hp6xx pata_platform support."), which removed the custom inw/outw
implementations.
Thanks for looking this up. If this driver has been broken for 15 years, 
the correct fix is to delete it. I've meanwhile prepared the second-best 
fix, which is the type casting. It'll be in the next patchset.

Best regards
Thomas
       Arnd
-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help