[PATCH] drm/ast: Remove existing framebuffers before loading driver

Jean Delvare jdelvare at suse.de
Thu Nov 15 12:49:45 UTC 2018


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 <tzimmermann at suse.de>
> Tested-by: Y.C. Chen <yc_chen at aspeedtech.com>
> ---
>  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 <jdelvare at suse.de>
Tested-by: Jean Delvare <jdelvare at suse.de>

-- 
Jean Delvare
SUSE L3 Support


More information about the dri-devel mailing list