[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