Re: [PATCH v3 7/8] video: xilinxfb: Fix sparse warnings

From: Michal Simek
Date: Fri May 31 2013 - 09:38:08 EST


On 05/31/2013 03:26 PM, Timur Tabi wrote:
> On 05/31/2013 07:55 AM, Michal Simek wrote:
>
>> diff --git a/drivers/video/xilinxfb.c b/drivers/video/xilinxfb.c
>> index f3d4a69..e27a4f6 100644
>> --- a/drivers/video/xilinxfb.c
>> +++ b/drivers/video/xilinxfb.c
>> @@ -131,7 +131,7 @@ struct xilinxfb_drvdata {
>> dcr_host_t dcr_host;
>> unsigned int dcr_len;
>> #endif
>> - void *fb_virt; /* virt. address of the frame buffer */
>> + void __iomem *fb_virt; /* virt. address of the frame buffer */
>> dma_addr_t fb_phys; /* phys. address of the frame buffer */
>> int fb_alloced; /* Flag, was the fb memory alloced? */
>>
>> @@ -273,8 +273,10 @@ static int xilinxfb_assign(struct platform_device *pdev,
>> drvdata->fb_virt = ioremap(pdata->fb_phys, fbsize);
>> } else {
>> drvdata->fb_alloced = 1;
>> - drvdata->fb_virt = dma_alloc_coherent(dev, PAGE_ALIGN(fbsize),
>> - &drvdata->fb_phys, GFP_KERNEL);
>> + drvdata->fb_virt = (__force void __iomem *)
>> + dma_alloc_coherent(dev, PAGE_ALIGN(fbsize),
>> + &drvdata->fb_phys,
>> + GFP_KERNEL);
>
> I think this is wrong. At least, it would be on PowerPC.
> dma_alloc_coherent() allocates regular RAM, not I/O memory. So it
> should not be __iomem.

The same is for Microblaze. Driver shares fb_virt for IO memory
and for allocated memory. The purpose of this driver wasn't
to change the driver logic just resolved sparse warnings.
The other way is also wrong.
I have compiled this driver with ppc toolchain and it should
remove sparse warnings for PPC.

Thanks,
Michal

--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


Attachment: signature.asc
Description: OpenPGP digital signature