On Thu, 2018-11-15 at 11:42 +0100, Thomas Zimmermann wrote:
> If vesafb attaches to the AST device, it configures the framebuffer memory
> for uncached access by default. When ast.ko later tries to attach itself to
> the device, it wants to use write-combining on the framebuffer memory, but
> vesefb's existing configuration for uncached access takes precedence. This
> results in reduced performance.
> 
> Removing the framebuffer's configuration before loding the AST driver fixes
> the problem. Other DRM drivers already contain equivalent code.
> 
> Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1112963
> Signed-off-by: Thomas Zimmermann <[email protected]>
> Tested-by: Y.C. Chen <[email protected]>
> ---
>  drivers/gpu/drm/ast/ast_drv.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
> index 69dab82a3771..bf589c53b908 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -60,8 +60,29 @@ static const struct pci_device_id pciidlist[] = {
>  
>  MODULE_DEVICE_TABLE(pci, pciidlist);
>  
> +static void ast_kick_out_firmware_fb(struct pci_dev *pdev)
> +{
> +     struct apertures_struct *ap;
> +     bool primary = false;
> +
> +     ap = alloc_apertures(1);
> +     if (!ap)
> +             return;
> +
> +     ap->ranges[0].base = pci_resource_start(pdev, 0);
> +     ap->ranges[0].size = pci_resource_len(pdev, 0);
> +
> +#ifdef CONFIG_X86
> +     primary = pdev->resource[PCI_ROM_RESOURCE].flags & 
> IORESOURCE_ROM_SHADOW;
> +#endif
> +     drm_fb_helper_remove_conflicting_framebuffers(ap, "astdrmfb", primary);
> +     kfree(ap);
> +}
> +
>  static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id 
> *ent)
>  {
> +     ast_kick_out_firmware_fb(pdev);
> +
>       return drm_get_pci_dev(pdev, ent, &driver);
>  }
>  

Thank you very much Thomas.

Reviewed-by: Jean Delvare <[email protected]>
Tested-by: Jean Delvare <[email protected]>

-- 
Jean Delvare
SUSE L3 Support
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to