fbdev fixes for v4.13-rc5:
- allow user to disable write combined mapping in efifb driver (Dave Airlie) - fix use after free bugs on driver removal in imxfb driver (Dan Carpenter) - fix unused variable warning in omapfb driver (Arnd Bergmann) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABCAAGBQJZjbrIAAoJEH4ztj+gR8IL89MP/3ByMRtx9Hw8NkYwRr4zHLK/ 87d0i+JWeD4fhgdV72QD5IdrrW0JKhnCF1zaW3iAlE8DAv0sGHlDbFtV7PCnzrL8 FNuUEWHCox5ediUD7D8WtN5G9GkNcvpxgyi1xI08trgb6wEUM9JR2o81vDzI1+sO M5ovBQOKMYmopwCsQr35Y3+FDJzMxT1cQGwP+oyp1GcS34EgIlxfLONyLAGDVCf5 v4Zg6vMDe5qZpMg/jVHYlBum/UVmgit+R5+PPLIEDAvyoAbyL3aK6jnjOz7Fc8ka sWHmcPMOhBJPMyl3m1gO9ZrfLwd1SpbO/MJukVQMBd6rYInb85lZGBF5pJkSDLvZ fV0cozf0LJc1CgkjguZ8uPK1go1qHypwSZCg4bv+iPY/MRjCAlRG3xRLbuPMYLRA PaQRvzB3sk2IA79uyCUFMRNY+clAXNeuFTdaWsBot4Esdic+mkRjKBjQMdCra8Id y8amNH31lUIBKl4kyJ2wbqBW4HS5hmR53X8pzz6O9InBz10Ojy9OHgHezhSbQeW9 xdo257BWUjIfWKSiNgfkHy4xhVDpIkSw8fjyJt+Zt9owL69/6I3YXgsEiO+BZer/ wrt/tTMR/ktM0i39ZguY6T5MjmdCKY51ViDIPbmz4tVcLraQodLy2OaGY9zw9tLa krbjZeuFtdcWbip76gJM =HcUv -----END PGP SIGNATURE----- Merge tag 'fbdev-v4.13-rc5' of git://github.com/bzolnier/linux Pull fbdev fixes from Bartlomiej Zolnierkiewicz: - allow user to disable write combined mapping in efifb driver (Dave Airlie) - fix use after free bugs on driver removal in imxfb driver (Dan Carpenter) - fix unused variable warning in omapfb driver (Arnd Bergmann) * tag 'fbdev-v4.13-rc5' of git://github.com/bzolnier/linux: efifb: allow user to disable write combined mapping. fbdev: omapfb: remove unused variable video: fbdev: imxfb: use after free in imxfb_remove()
This commit is contained in:
commit
7eb97ba611
|
@ -27,5 +27,11 @@ You have to add the following kernel parameters in your elilo.conf:
|
||||||
Macbook Pro 17", iMac 20" :
|
Macbook Pro 17", iMac 20" :
|
||||||
video=efifb:i20
|
video=efifb:i20
|
||||||
|
|
||||||
|
Accepted options:
|
||||||
|
|
||||||
|
nowc Don't map the framebuffer write combined. This can be used
|
||||||
|
to workaround side-effects and slowdowns on other CPU cores
|
||||||
|
when large amounts of console data are written.
|
||||||
|
|
||||||
--
|
--
|
||||||
Edgar Hucek <gimli@dark-green.com>
|
Edgar Hucek <gimli@dark-green.com>
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <asm/efi.h>
|
#include <asm/efi.h>
|
||||||
|
|
||||||
static bool request_mem_succeeded = false;
|
static bool request_mem_succeeded = false;
|
||||||
|
static bool nowc = false;
|
||||||
|
|
||||||
static struct fb_var_screeninfo efifb_defined = {
|
static struct fb_var_screeninfo efifb_defined = {
|
||||||
.activate = FB_ACTIVATE_NOW,
|
.activate = FB_ACTIVATE_NOW,
|
||||||
|
@ -99,6 +100,8 @@ static int efifb_setup(char *options)
|
||||||
screen_info.lfb_height = simple_strtoul(this_opt+7, NULL, 0);
|
screen_info.lfb_height = simple_strtoul(this_opt+7, NULL, 0);
|
||||||
else if (!strncmp(this_opt, "width:", 6))
|
else if (!strncmp(this_opt, "width:", 6))
|
||||||
screen_info.lfb_width = simple_strtoul(this_opt+6, NULL, 0);
|
screen_info.lfb_width = simple_strtoul(this_opt+6, NULL, 0);
|
||||||
|
else if (!strcmp(this_opt, "nowc"))
|
||||||
|
nowc = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,7 +258,10 @@ static int efifb_probe(struct platform_device *dev)
|
||||||
info->apertures->ranges[0].base = efifb_fix.smem_start;
|
info->apertures->ranges[0].base = efifb_fix.smem_start;
|
||||||
info->apertures->ranges[0].size = size_remap;
|
info->apertures->ranges[0].size = size_remap;
|
||||||
|
|
||||||
info->screen_base = ioremap_wc(efifb_fix.smem_start, efifb_fix.smem_len);
|
if (nowc)
|
||||||
|
info->screen_base = ioremap(efifb_fix.smem_start, efifb_fix.smem_len);
|
||||||
|
else
|
||||||
|
info->screen_base = ioremap_wc(efifb_fix.smem_start, efifb_fix.smem_len);
|
||||||
if (!info->screen_base) {
|
if (!info->screen_base) {
|
||||||
pr_err("efifb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n",
|
pr_err("efifb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n",
|
||||||
efifb_fix.smem_len, efifb_fix.smem_start);
|
efifb_fix.smem_len, efifb_fix.smem_start);
|
||||||
|
|
|
@ -1073,20 +1073,16 @@ static int imxfb_remove(struct platform_device *pdev)
|
||||||
imxfb_disable_controller(fbi);
|
imxfb_disable_controller(fbi);
|
||||||
|
|
||||||
unregister_framebuffer(info);
|
unregister_framebuffer(info);
|
||||||
|
fb_dealloc_cmap(&info->cmap);
|
||||||
pdata = dev_get_platdata(&pdev->dev);
|
pdata = dev_get_platdata(&pdev->dev);
|
||||||
if (pdata && pdata->exit)
|
if (pdata && pdata->exit)
|
||||||
pdata->exit(fbi->pdev);
|
pdata->exit(fbi->pdev);
|
||||||
|
|
||||||
fb_dealloc_cmap(&info->cmap);
|
|
||||||
kfree(info->pseudo_palette);
|
|
||||||
framebuffer_release(info);
|
|
||||||
|
|
||||||
dma_free_wc(&pdev->dev, fbi->map_size, info->screen_base,
|
dma_free_wc(&pdev->dev, fbi->map_size, info->screen_base,
|
||||||
fbi->map_dma);
|
fbi->map_dma);
|
||||||
|
|
||||||
iounmap(fbi->regs);
|
iounmap(fbi->regs);
|
||||||
release_mem_region(res->start, resource_size(res));
|
release_mem_region(res->start, resource_size(res));
|
||||||
|
kfree(info->pseudo_palette);
|
||||||
|
framebuffer_release(info);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,7 +193,6 @@ static struct notifier_block omap_dss_pm_notif_block = {
|
||||||
|
|
||||||
static int __init omap_dss_probe(struct platform_device *pdev)
|
static int __init omap_dss_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct omap_dss_board_info *pdata = pdev->dev.platform_data;
|
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
core.pdev = pdev;
|
core.pdev = pdev;
|
||||||
|
|
Loading…
Reference in New Issue