From nobody Sun Feb 8 11:05:58 2026 Received: from mail-pf1-f226.google.com (mail-pf1-f226.google.com [209.85.210.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B7A630FC1E for ; Mon, 29 Dec 2025 21:59:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045562; cv=none; b=QqKN/DhQQhV+X8CxkKlhL/bJvlUGHzFqoTA2f3iD1XCPAZK9hq81K8zBENjNLJw1PZkEPS27G9NZ+Idk8UYOfQ0TmeeTaqVt2/oUdrBm+UMEVO+KGyYL8ErjhVsPwgmgTccaqYXyiyql6Y1Oh0DIcLzFqEm8HI7QDofNPyw7lMc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045562; c=relaxed/simple; bh=BcBsQxJIQJJlqTuvgYwuQeVrGVdbVN2Bv4pHjjNssq4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qlMDwPN0nPN1OA/KoNyHRFQtart0ATNst8DqXNjkLjtag1b0RfAR0SPqP9YbHW162JT2kEMJIfZoexcXDugivh2ubzSCh7DwOcbUsFgM8iyvH+K+a4jezU2w2rIq3OhoKb42NQ/DT3VSCegZnTEqMtYf3bmYDTpRf0TbFwu0eCI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=BBAiwTaN; arc=none smtp.client-ip=209.85.210.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="BBAiwTaN" Received: by mail-pf1-f226.google.com with SMTP id d2e1a72fcca58-7b9215e55e6so5795269b3a.2 for ; Mon, 29 Dec 2025 13:59:19 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045559; x=1767650359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pJWRKQHrZ65aEzUoFIqsgm/0iuuS/awy21jyOivXLQY=; b=NUnk+jBqqE8sOZhkiAZOdJZ5iz9Ojzx57vKIbY7jXfWjkDig3s3KZ5y9MFIG1+3Coy rJ5cZ+U3kKn4j+OR47YDJUblb5es6TQWrjwQiBqFo0bIcpW0EJOJxZvplMK3Nwol+uMR Cw7q5joiHGV9DYxxo3h0eS1JUq2VomcJAlQDRBQ6PwX0SKasXodAvMqr4uFB1cKGKkHL JJNIzhiTJcuvA4GRpSJzAcdA02nTFC5okxotgy6k2Hm6P/dNdIZc2JbHok5wBntpBDKt S1twcTsipLXepYKdSwLn2OQCd5lASMUOh1fnhs5bE4jhHkkZeia+eyk9vR3bmKnIB+yg 26+A== X-Forwarded-Encrypted: i=1; AJvYcCXBC2mR9XSd4JOB2UbtFEa8wKEmBzEM+hYtKSA6Tbvuv6CS+6ptJp33RV1yiyN/aA4EwL4heaXzGeLewHY=@vger.kernel.org X-Gm-Message-State: AOJu0YxyZXVJFyjtXpPYxGxMz1uYDbsToAVrEkTXqi8O33gK2gV1E5qt praVGYbX8jspehry0ZzbFWCcgNSVTDAXpbRi6dslX7e8r4ZUNeKVwYLaWkMOsb6MxkqnG8SHuA0 bWL/CDJya419+a10/XnH36ody4gy8J8MbVHO0DVNaJMDK1QjoW9R7GII6JrmDCFKIt/WKyDt4Cg jkxDUK3hyPiWj20LtemdoGLZLxVeZJd6alifYWveNTkzyIbaefQLGQHd26oW7YOwM74aZEFuhjp ZDXkVfUsZHMb8qf X-Gm-Gg: AY/fxX5eQta4JJ9JSzV3IKLqd+M0CqWiL/GH0xVZT5WfFUF6frpciD9H4ZJoBtAMvqQ kZaF6xS6DzwPBIOKv4YIPBODbLwZzr/vDrZ73CpNvIi2jlHtvfhOCnlmk+agBbg3oVt+j9TatOn mZ+RgvxQIlYX/dz6eq0wkNuH3WSvZCjK12oTjOo2g8wQMLe633JOKQUdI8C5oxhHSCxEgtVF271 +lgFYq9BWmZr6Cyv5tIGy6GAabP1Hgri6kMK0iQSUDG51g4QrW6GxyfVxw6P3L7KhK0eUmruzBJ 1oqmuUn+VxZ4yK/Mxkb2kKAIao9cr5fslATfeShF3YhvlSdhMEwp+5vGCX6Oxqbsw6ALeeyLDxC 7QX+wkZblPjm8w81WJUwk27ZGRtOauKodLsQ6r8Nbl4U+/GAdPHbNl3jH+fD5fcZcQ1P9tGV4u3 f+z60WuYQ34j31BqvNabzvQQj5i2cwBkAYZlexLF/liIjW X-Google-Smtp-Source: AGHT+IEUfu6KQAxkN9UYASuPYwKpT8Kn7c1fQogQlBic7A7+dGAPbyH6PSD/tODEqyGZUjliYbcCO5/gcJ/n X-Received: by 2002:a05:7022:150d:b0:11c:e661:2590 with SMTP id a92af1059eb24-121722ba459mr25017799c88.20.1767045558616; Mon, 29 Dec 2025 13:59:18 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-101.dlp.protect.broadcom.com. [144.49.247.101]) by smtp-relay.gmail.com with ESMTPS id a92af1059eb24-1217252ca1esm6693605c88.3.2025.12.29.13.59.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:18 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-88a360b8096so245141706d6.0 for ; Mon, 29 Dec 2025 13:59:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045555; x=1767650355; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pJWRKQHrZ65aEzUoFIqsgm/0iuuS/awy21jyOivXLQY=; b=BBAiwTaN/whI3+DNFkzYsUacChl2+p5hTcPuFnKVeSvgXR9ZjMgTBBohj4DR8UlqEe GA+I8+WpV8Aqq/aDm7HPVowmAwyKS952ABr9S84hc8U8fmUpfMxO/ENJ9D3R+e2wn/xx mUd/ApIMoGaJgt/5aEVC57sKpCCMaj5bz4eQM= X-Forwarded-Encrypted: i=1; AJvYcCU04vmW12QPk0Qyix43plPED7JNDdwjQt/2W+9BrtxYoRlC3TWj+86JReJJc44nnqt9UjFRsVv8NpB77Bs=@vger.kernel.org X-Received: by 2002:a05:6214:419b:b0:88f:fbcf:e7cb with SMTP id 6a1803df08f44-88ffbcfeeabmr183064896d6.51.1767045554301; Mon, 29 Dec 2025 13:59:14 -0800 (PST) X-Received: by 2002:a05:6214:419b:b0:88f:fbcf:e7cb with SMTP id 6a1803df08f44-88ffbcfeeabmr183064626d6.51.1767045553722; Mon, 29 Dec 2025 13:59:13 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:11 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Ard Biesheuvel , Thomas Zimmermann , Javier Martinez Canillas , Helge Deller , linux-efi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH 01/12] video/aperture: Add sysfb restore on DRM probe failure Date: Mon, 29 Dec 2025 16:58:07 -0500 Message-ID: <20251229215906.3688205-2-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" When a DRM driver calls aperture_remove_conflicting_pci_devices(), the firmware framebuffer (EFI, VESA, etc.) is disabled and its platform device is unregistered. If the DRM driver's probe subsequently fails, the user is left with no display output. Add sysfb_restore() to re-enable the Generic System Framebuffers support and re-create the platform device that was previously unregistered by sysfb_disable(). Add devm_aperture_remove_conflicting_pci_devices() which wraps the existing function and registers a devm action to automatically call sysfb_restore() if the driver's probe fails or the driver is unloaded. Drivers can call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore. Refactor sysfb_init() to use a shared __sysfb_create_device() helper that can be called from both sysfb_init() and sysfb_restore(). Add a quirks_applied flag to handle the edge case where a driver calls sysfb_disable() before sysfb_init() runs, in this case sysfb_restore() defers device creation to sysfb_init() since the __init quirk functions cannot be called after init memory is freed. Signed-off-by: Zack Rusin Cc: Ard Biesheuvel Cc: Thomas Zimmermann Cc: Javier Martinez Canillas Cc: Helge Deller Cc: linux-efi@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Cc: linux-fbdev@vger.kernel.org --- drivers/firmware/efi/sysfb_efi.c | 2 +- drivers/firmware/sysfb.c | 191 +++++++++++++++++++----------- drivers/firmware/sysfb_simplefb.c | 10 +- drivers/video/aperture.c | 54 +++++++++ include/linux/aperture.h | 14 +++ include/linux/sysfb.h | 6 + 6 files changed, 201 insertions(+), 76 deletions(-) diff --git a/drivers/firmware/efi/sysfb_efi.c b/drivers/firmware/efi/sysfb_= efi.c index 1e509595ac03..3fe7c57ad849 100644 --- a/drivers/firmware/efi/sysfb_efi.c +++ b/drivers/firmware/efi/sysfb_efi.c @@ -365,7 +365,7 @@ __init void sysfb_apply_efi_quirks(void) } } =20 -__init void sysfb_set_efifb_fwnode(struct platform_device *pd) +void sysfb_set_efifb_fwnode(struct platform_device *pd) { if (screen_info.orig_video_isVGA =3D=3D VIDEO_TYPE_EFI && IS_ENABLED(CONF= IG_PCI)) { fwnode_init(&efifb_fwnode, &efifb_fwnode_ops); diff --git a/drivers/firmware/sysfb.c b/drivers/firmware/sysfb.c index 889e5b05c739..c45b6f487103 100644 --- a/drivers/firmware/sysfb.c +++ b/drivers/firmware/sysfb.c @@ -38,6 +38,7 @@ static struct platform_device *pd; static DEFINE_MUTEX(disable_lock); static bool disabled; +static bool quirks_applied; =20 static struct device *sysfb_parent_dev(const struct screen_info *si); =20 @@ -79,6 +80,121 @@ void sysfb_disable(struct device *dev) } EXPORT_SYMBOL_GPL(sysfb_disable); =20 +/* Caller must hold disable_lock */ +static int __sysfb_create_device(bool restore) +{ + struct screen_info *si =3D &screen_info; + struct device *parent; + unsigned int type; + struct simplefb_platform_data mode; + const char *name; + bool compatible; + int ret =3D 0; + + if (!IS_ERR_OR_NULL(pd)) + return 0; + + /* + * If quirks haven't been applied yet, sysfb_init() hasn't run. + * Don't create the device now - let sysfb_init() do it after + * applying the necessary fixups and quirks. We can't call + * sysfb_apply_efi_quirks() here because it's __init. + */ + if (!quirks_applied) + return 0; + + parent =3D sysfb_parent_dev(si); + if (IS_ERR(parent)) + return PTR_ERR(parent); + + type =3D screen_info_video_type(si); + + /* try to create a simple-framebuffer device */ + compatible =3D sysfb_parse_mode(si, &mode); + if (compatible) { + pd =3D sysfb_create_simplefb(si, &mode, parent); + if (!IS_ERR(pd)) { + if (restore) + pr_info("sysfb: restored simple-framebuffer device\n"); + goto put_device; + } + } + + /* if the FB is incompatible, create a legacy framebuffer device */ + switch (type) { + case VIDEO_TYPE_EGAC: + name =3D "ega-framebuffer"; + break; + case VIDEO_TYPE_VGAC: + name =3D "vga-framebuffer"; + break; + case VIDEO_TYPE_VLFB: + name =3D "vesa-framebuffer"; + break; + case VIDEO_TYPE_EFI: + name =3D "efi-framebuffer"; + break; + default: + name =3D "platform-framebuffer"; + break; + } + + pd =3D platform_device_alloc(name, 0); + if (!pd) { + ret =3D -ENOMEM; + goto put_device; + } + + pd->dev.parent =3D parent; + + sysfb_set_efifb_fwnode(pd); + + ret =3D platform_device_add_data(pd, si, sizeof(*si)); + if (ret) + goto err; + + ret =3D platform_device_add(pd); + if (ret) + goto err; + + if (restore) + pr_info("sysfb: restored %s device\n", name); + goto put_device; +err: + platform_device_put(pd); + pd =3D NULL; +put_device: + put_device(parent); + return ret; +} + +/** + * sysfb_restore() - restore the Generic System Framebuffer + * + * This function re-enables the Generic System Framebuffers support and + * re-creates the platform device that was previously unregistered by + * sysfb_disable(). This is intended for use by DRM drivers that need to + * restore the fallback framebuffer when their probe fails after having + * called aperture_remove_conflicting_devices() or similar. + * + * Context: The function can sleep. A @disable_lock mutex is acquired. + * + * Returns: + * 0 on success, or a negative errno value otherwise. + */ +int sysfb_restore(void) +{ + int ret; + + mutex_lock(&disable_lock); + disabled =3D false; + ret =3D __sysfb_create_device(true); + mutex_unlock(&disable_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(sysfb_restore); + /** * sysfb_handles_screen_info() - reports if sysfb handles the global scree= n_info * @@ -141,82 +257,17 @@ static struct device *sysfb_parent_dev(const struct s= creen_info *si) =20 static __init int sysfb_init(void) { - struct screen_info *si =3D &screen_info; - struct device *parent; - unsigned int type; - struct simplefb_platform_data mode; - const char *name; - bool compatible; int ret =3D 0; =20 screen_info_apply_fixups(); - - mutex_lock(&disable_lock); - if (disabled) - goto unlock_mutex; - sysfb_apply_efi_quirks(); =20 - parent =3D sysfb_parent_dev(si); - if (IS_ERR(parent)) { - ret =3D PTR_ERR(parent); - goto unlock_mutex; - } - - /* try to create a simple-framebuffer device */ - compatible =3D sysfb_parse_mode(si, &mode); - if (compatible) { - pd =3D sysfb_create_simplefb(si, &mode, parent); - if (!IS_ERR(pd)) - goto put_device; - } - - type =3D screen_info_video_type(si); - - /* if the FB is incompatible, create a legacy framebuffer device */ - switch (type) { - case VIDEO_TYPE_EGAC: - name =3D "ega-framebuffer"; - break; - case VIDEO_TYPE_VGAC: - name =3D "vga-framebuffer"; - break; - case VIDEO_TYPE_VLFB: - name =3D "vesa-framebuffer"; - break; - case VIDEO_TYPE_EFI: - name =3D "efi-framebuffer"; - break; - default: - name =3D "platform-framebuffer"; - break; - } - - pd =3D platform_device_alloc(name, 0); - if (!pd) { - ret =3D -ENOMEM; - goto put_device; - } - - pd->dev.parent =3D parent; - - sysfb_set_efifb_fwnode(pd); - - ret =3D platform_device_add_data(pd, si, sizeof(*si)); - if (ret) - goto err; - - ret =3D platform_device_add(pd); - if (ret) - goto err; - - goto put_device; -err: - platform_device_put(pd); -put_device: - put_device(parent); -unlock_mutex: + mutex_lock(&disable_lock); + quirks_applied =3D true; + if (!disabled) + ret =3D __sysfb_create_device(false); mutex_unlock(&disable_lock); + return ret; } =20 diff --git a/drivers/firmware/sysfb_simplefb.c b/drivers/firmware/sysfb_sim= plefb.c index 592d8a644619..6fcbc3ae17d5 100644 --- a/drivers/firmware/sysfb_simplefb.c +++ b/drivers/firmware/sysfb_simplefb.c @@ -24,8 +24,8 @@ static const char simplefb_resname[] =3D "BOOTFB"; static const struct simplefb_format formats[] =3D SIMPLEFB_FORMATS; =20 /* try parsing screen_info into a simple-framebuffer mode struct */ -__init bool sysfb_parse_mode(const struct screen_info *si, - struct simplefb_platform_data *mode) +bool sysfb_parse_mode(const struct screen_info *si, + struct simplefb_platform_data *mode) { __u8 type; u32 bits_per_pixel; @@ -61,9 +61,9 @@ __init bool sysfb_parse_mode(const struct screen_info *si, return false; } =20 -__init struct platform_device *sysfb_create_simplefb(const struct screen_i= nfo *si, - const struct simplefb_platform_data *mode, - struct device *parent) +struct platform_device *sysfb_create_simplefb(const struct screen_info *si, + const struct simplefb_platform_data *mode, + struct device *parent) { struct platform_device *pd; struct resource res; diff --git a/drivers/video/aperture.c b/drivers/video/aperture.c index 2b5a1e666e9b..4de6dc04a3fd 100644 --- a/drivers/video/aperture.c +++ b/drivers/video/aperture.c @@ -372,3 +372,57 @@ int aperture_remove_conflicting_pci_devices(struct pci= _dev *pdev, const char *na =20 } EXPORT_SYMBOL(aperture_remove_conflicting_pci_devices); + +static void devm_aperture_restore_sysfb(void *unused) +{ + sysfb_restore(); +} + +/** + * devm_aperture_remove_conflicting_pci_devices - remove existing framebuf= fers + * with sysfb restore on fa= ilure + * @pdev: PCI device + * @name: a descriptive name of the requesting driver + * + * This function removes devices that own apertures within any of @pdev's + * memory bars, similar to aperture_remove_conflicting_pci_devices(). + * + * Additionally, it registers a devm action that will restore the system + * framebuffer if the driver's probe fails or the driver is unloaded. This + * ensures the user doesn't lose display output if the DRM driver probe fa= ils + * after removing the firmware framebuffer. + * + * This function should be called early in the driver's probe function. The + * driver must call devm_aperture_remove_conflicting_pci_devices_done() af= ter + * successfully completing probe to cancel the automatic restore. + * + * Returns: + * 0 on success, or a negative errno code otherwise + */ +int devm_aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, + const char *name) +{ + int ret; + + ret =3D aperture_remove_conflicting_pci_devices(pdev, name); + if (ret) + return ret; + + return devm_add_action_or_reset(&pdev->dev, devm_aperture_restore_sysfb, + NULL); +} +EXPORT_SYMBOL(devm_aperture_remove_conflicting_pci_devices); + +/** + * devm_aperture_remove_conflicting_pci_devices_done - cancel sysfb restore + * @pdev: PCI device + * + * Cancels the automatic sysfb restore action registered by + * devm_aperture_remove_conflicting_pci_devices(). Call this after the + * driver has successfully completed probe and registered its display. + */ +void devm_aperture_remove_conflicting_pci_devices_done(struct pci_dev *pde= v) +{ + devm_remove_action(&pdev->dev, devm_aperture_restore_sysfb, NULL); +} +EXPORT_SYMBOL(devm_aperture_remove_conflicting_pci_devices_done); diff --git a/include/linux/aperture.h b/include/linux/aperture.h index 1a9a88b11584..ea0ece7f777e 100644 --- a/include/linux/aperture.h +++ b/include/linux/aperture.h @@ -19,6 +19,10 @@ int aperture_remove_conflicting_devices(resource_size_t = base, resource_size_t si int __aperture_remove_legacy_vga_devices(struct pci_dev *pdev); =20 int aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, const ch= ar *name); + +int devm_aperture_remove_conflicting_pci_devices(struct pci_dev *pdev, + const char *name); +void devm_aperture_remove_conflicting_pci_devices_done(struct pci_dev *pde= v); #else static inline int devm_aperture_acquire_for_platform_device(struct platfor= m_device *pdev, resource_size_t base, @@ -42,6 +46,16 @@ static inline int aperture_remove_conflicting_pci_device= s(struct pci_dev *pdev, { return 0; } + +static inline int devm_aperture_remove_conflicting_pci_devices(struct pci_= dev *pdev, + const char *name) +{ + return 0; +} + +static inline void devm_aperture_remove_conflicting_pci_devices_done(struc= t pci_dev *pdev) +{ +} #endif =20 /** diff --git a/include/linux/sysfb.h b/include/linux/sysfb.h index b449665c686a..c0ade38bcf99 100644 --- a/include/linux/sysfb.h +++ b/include/linux/sysfb.h @@ -63,6 +63,7 @@ struct efifb_dmi_info { #ifdef CONFIG_SYSFB =20 void sysfb_disable(struct device *dev); +int sysfb_restore(void); =20 bool sysfb_handles_screen_info(void); =20 @@ -72,6 +73,11 @@ static inline void sysfb_disable(struct device *dev) { } =20 +static inline int sysfb_restore(void) +{ + return -ENODEV; +} + static inline bool sysfb_handles_screen_info(void) { return false; --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-pf1-f228.google.com (mail-pf1-f228.google.com [209.85.210.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5CAD330F7E0 for ; Mon, 29 Dec 2025 21:59:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045560; cv=none; b=ko3AIrDddE9zpFn4mEfXlk9frQGl9G2RCgcxGRnJhmI6j0cJnnneTrnHp9BNqm+bHbLc1ft9RoQHWi3CczYQxX4HZipikwWKolbj8enUG/SXZ2ALWHFmyzL4mwEGPVytsNcOsRphOkeosR/uDw5+L9szSfXw+rl88nJDAAoLRnI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045560; c=relaxed/simple; bh=6nUv0+ZaLBqqw8tQw1HbaOKBF+d4zgRY9GomeUM/oB8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o/Wqgm7jyOJHNrJiRI6vyk7ynDxjNpRt3gg6oUxgBdaAH+lpD110tul716KcOPf14QS0EgWz6YBoA9iaRdFy/94DEbS6QHPNEu0LznA1CH2TsUtiXxNF8tLiavYGK8WXJWtJITTI1mYfhWnHiizg0q1h14TIb0+5RBpt3QprwIY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=bqGyrBBC; arc=none smtp.client-ip=209.85.210.228 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="bqGyrBBC" Received: by mail-pf1-f228.google.com with SMTP id d2e1a72fcca58-7bab7c997eeso11092481b3a.0 for ; Mon, 29 Dec 2025 13:59:19 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045559; x=1767650359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=iO5bQdvPC15UP8CHevTImGh62fz7bMVkTIkttiBAsEo=; b=oFqSB244rfmpNsgOZ9qFsXjZUuPFDr5QvTYN0Ie3fn+NxxzevJV8MgaNz7gGKYW/yK 1D6NUxtU+wkR+fY5Kf6zL6jyXW+JHQL96PovtKjKFLAGDOkUbY3yITcgIWknW3QzTPNK gZrmuRNOHqN8RTXWDOM+gpqLKa9NWvMIg48LWXegfSQENeadALA9C2kcszWkpYawStT8 3teiJlypZ4jqXmUAP5JZeMLgxcIw0btMwFj/7CJ5fDuInL0ZSCeU8M7vx8ab/FtLNBqk lxIxmKlTQQzAzYnJPmRZoPGXIr+QXiSuagkmj5os7Sj98oRCTwb0Iv/wvn7E0nJwHXSh gKtQ== X-Forwarded-Encrypted: i=1; AJvYcCWpKJO3J1yxMc/ZshiO4V7ngBaF+HltUXLMXJIeSZRuEdw7wKUz8z6Bc1Qn9gLi8S4JJgImtmIz+PsxyWQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyDFQ6qR9S11iCSadSxqYQKuIa8r36umTk8kQh+Tf5K/3qHs52n ehhIduzlJLN8GXsuscLck2wIHb2Hay2v8NAhJJ6nGF7K8GKkggAotiI6sEXDHvyKMhzbpe4cca1 6XFXBqPR+dhimKa8oTjHT63NctO7i+ZEfIUGUiz3UcN0FqPU89/dXSkx5kN9fIEHy0Q35vKfmlE j3Ww8OoAhc25DTqsKpGCdkejf8JzVCMCHtjWygFmzHfsCTqxViZwmEbRxt2ZxMegPtLyrkMtNoC 5+kPlP0NU8/gXrQ X-Gm-Gg: AY/fxX75GedvUTH+ntJ5Hi/3Pa55ON4yJJIKL0nXsXK/BojsUBm982fy1vVIY+3bchk bXDM+S8Wr3OBJIHCGgIA/bWNUa1bP1ZYEUcfkfVJtk8DYl+R0CEGLbI400Q5wTQ+51VMRkRHNSr gZPAXAr5BvHb5Sd1PqQZcfuJXwmB3BtOyD6p7jG2GuCJD1TM/GveHk/DHuakFcpLKyrYOHpPOlF RChEHgQgsOkDcIzmbccqI7NG1GS6wIHksZ5F64/DvZhWgIhLugMPFdokZC2H+DHGRlGkpzUMdJI V3M/NhR+mKv8swJX0ic7caxJE3WJuqRoZDdQXGY8u0a1KgdPvEfWKIk80lyVMwJIlZMVMA8yeZB EZaJ0+/xVLsscrDITfoSTtX95Jtys9VfgehtiEHHe6qJZz0KmePb2ou6xePmODZvIphcj29LgUQ AenK8O8qETz7AIX26uuwqAhiYuu2xgKTCIVnDsolEtCSvf X-Google-Smtp-Source: AGHT+IE78M82g4KTLJ9peT7Kv4RKgGnRPugTwGwmPi5Lo5zs1UlSHfxUtDjgAhxVLGLv7zVqySplLxmoXeme X-Received: by 2002:a05:6a21:32aa:b0:35f:30ff:89db with SMTP id adf61e73a8af0-376a8eb6910mr29931920637.19.1767045558698; Mon, 29 Dec 2025 13:59:18 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-101.dlp.protect.broadcom.com. [144.49.247.101]) by smtp-relay.gmail.com with ESMTPS id 41be03b00d2f7-c1e7bb6c6ebsm1718151a12.11.2025.12.29.13.59.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:18 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-88a47331c39so254868016d6.2 for ; Mon, 29 Dec 2025 13:59:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045555; x=1767650355; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iO5bQdvPC15UP8CHevTImGh62fz7bMVkTIkttiBAsEo=; b=bqGyrBBCrqS2oajQaZRd7/GGYb1JG/dfh7TFfyhmWQgLRBTLl9VY9dBP4Bku/UZW99 ugaXnuQTjV+RUrXq+yd0dIBeYDWnin8JYgrc8rJbq1vqiXClScaG9f4rKfjJXwO1YD1F 6gPImonhkxIfHAOZNAJo8o/8kmB9R9ye3GAuI= X-Forwarded-Encrypted: i=1; AJvYcCXT/S1FAeQWfq2/g0hkAsPac+UthGr/wERQDaarKPu6wG7DRizyVL7zIq8AkXtbcElh3OEn518oc9zThEg=@vger.kernel.org X-Received: by 2002:a05:6214:154f:b0:87c:208b:9556 with SMTP id 6a1803df08f44-88d82526733mr349336656d6.30.1767045555368; Mon, 29 Dec 2025 13:59:15 -0800 (PST) X-Received: by 2002:a05:6214:154f:b0:87c:208b:9556 with SMTP id 6a1803df08f44-88d82526733mr349336506d6.30.1767045554923; Mon, 29 Dec 2025 13:59:14 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:14 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH 02/12] drm/vmwgfx: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:08 -0500 Message-ID: <20251229215906.3688205-3-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. Signed-off-by: Zack Rusin Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: David Airlie Cc: Simona Vetter Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/v= mwgfx_drv.c index 599052d07ae8..1b0fc4f9d4af 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -1622,7 +1622,12 @@ static int vmw_probe(struct pci_dev *pdev, const str= uct pci_device_id *ent) struct vmw_private *vmw; int ret; =20 - ret =3D aperture_remove_conflicting_pci_devices(pdev, driver.name); + /* + * Use devm variant to automatically restore sysfb if probe fails. + * This ensures the user doesn't lose display if our probe fails + * after removing the firmware framebuffer (efifb/simpledrm). + */ + ret =3D devm_aperture_remove_conflicting_pci_devices(pdev, driver.name); if (ret) goto out_error; =20 @@ -1647,6 +1652,12 @@ static int vmw_probe(struct pci_dev *pdev, const str= uct pci_device_id *ent) if (ret) goto out_unload; =20 + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + vmw_fifo_resource_inc(vmw); vmw_svga_enable(vmw); drm_client_setup(&vmw->drm, NULL); --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-oo1-f98.google.com (mail-oo1-f98.google.com [209.85.161.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C650130FC21 for ; Mon, 29 Dec 2025 21:59:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045564; cv=none; b=KZs4qeXyCV7vYDmawo4a28bd4fdT36g2pv2j9QLLbU20lqoacP11Ct0n5UBP3SdSuBheXmsMjSKkEM9+KKxvgepdRkUBVIl0/Zj8l3Np45YAxb7DQ11JGbfXRD4SqeQAWA9q9OBTpr0KFVrJjtmbG6Qrp4f7cLt7GpbaYvjmlGM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045564; c=relaxed/simple; bh=y6hntx/30UFF4ganKBwcdcx7ZxDoKTd8t3MJHBWrnDg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tKI/doix6kmR8bKtnmKt5W/roBVY25mOdkTAfqvtHBpE4M2/Ftp0Mqkfh0/W53mPG299mcv0iDHWGGR4Ynlrg5D01Ww/ExkrfNW12gjJpIvJLgdGhdafdh1NHzdB0EeVKWSqrnUuky8RNeP3XqXsu07NVlQbtIi0x7j3o2gTIKk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=P7neVLV8; arc=none smtp.client-ip=209.85.161.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="P7neVLV8" Received: by mail-oo1-f98.google.com with SMTP id 006d021491bc7-65cfbc56a29so6255745eaf.3 for ; Mon, 29 Dec 2025 13:59:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045562; x=1767650362; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=BiToq+744uGxVUSBnz8g/fFuQu2TAsdbeOO8CU0qryc=; b=Zhyr+xIrivgI1RQeIcq0s9jnxWuDki/ReeozuMpHyekaqZMGiltPAp1Z3rdY80jrp/ pZbMQH5wdeT8dGnmoLfLOMtuFlkfy63z7LHpKjn78ZeF+CqBa4JWYHgk8SNey7GPctnI NZmJu8PFlXjwnK6BXL19RKrlQDmzFYu9R/PsnEPiy853Uteh1am+I1I7XeE/EHaW/ca3 9PL6JDeg9aeM+jFM1xNbozREkcCOIY8iWMRYUD47sKq7F2yhaMhaFz9l/NMo2wJuEhLu lQGC8RaOAnuhfKd8/+sEkPNaBG1bZ8ses1VnY83rrGL6pUcEpr4OpthRTlGDHZIiMHW7 dmrQ== X-Forwarded-Encrypted: i=1; AJvYcCVO7pj9esDtwaezcjGY+fcNz8QUlxxo9/7YXbatb+O/G1Yh9EXViYmaVk8y/nhSfcrfOmlzhGdOQ2Ur45A=@vger.kernel.org X-Gm-Message-State: AOJu0YzLDJWPaMrDruyNd1UG7zvNYbJpjB+6Pr5+6yHiNiOIphwO1L8l ieHY6+lrlMwb9Vix8Bw9I5p/b9RKswQS4ojn8oO5f7TcMzzrbVPBWjB6JViYeh3wSJvfZSbA7aK hXM70E0y22eV0ycJNaiKUVIb8v2NKe2aFwYIBdWFtN2UNy2Go3apX/95/m19A596wYeXzm2jS87 Kw7GK68EfE8CttMHzDCJKkbl9cOIcrpQVUJ1PiUWSluDCFQ/8E7lIkVKPoka85ZNCxeoMrH+5nH YwNlgHsm3Yfuxvt X-Gm-Gg: AY/fxX5KYsHKXzyImllRB6gKlwvY+xw367gBNxBYyXWjJiF54hRMMl1HqxOphQ1zdDx hYBznTJMoLrAaZCg6/5Vr6IkUR8zks13vml4n1JNEPGkIZf+VOKV6sZ0dz9A3SVKMnvBq9DPtzD Z5Ek/nBJcVUAxU8OdKBjkpEqgE4j9aSjxQdWPninOHPDQVqlsG6Y3hN+AdBUYI0sWLQMmTzxj2L aN85KUroImHjdR3/5Dpaaaw4CbFOMH4QeHjDcO2EWeLnR6mnJ1RfzREEZ2zAaeCH3VIFLDgWtRB bRk7KVjg5HgHfudAYqn1YA1xDQRaFeMLBo7fysUgsq7BAI8TlnTHiFfBQoMaSQv0QxjtcKVy8V5 koUU5AaRNwe38/XbXZaqnJ8cLiek1L7jP+Hap8DIhvo3DcyJ1ltgyhJ6MGj8RFUMZSBP5VUqoZ1 mE8AXSOGsYY1smTdeOoLglu41YZ8DZcZCxsULqhZE= X-Google-Smtp-Source: AGHT+IGYE74Zy95ajldgYVI+nrLvlVPL/th0DrtqdKN8uUTg8tRmOB7O7Hp7ckUcSyJDtQ0yuzE4SD3dxafr X-Received: by 2002:a05:6820:2291:b0:659:9a49:8f25 with SMTP id 006d021491bc7-65d0ea9c905mr13694928eaf.54.1767045561729; Mon, 29 Dec 2025 13:59:21 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-2.dlp.protect.broadcom.com. [144.49.247.2]) by smtp-relay.gmail.com with ESMTPS id 006d021491bc7-65d0f44ab4asm1623557eaf.3.2025.12.29.13.59.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:21 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-4f1d60f037bso210524771cf.0 for ; Mon, 29 Dec 2025 13:59:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045559; x=1767650359; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BiToq+744uGxVUSBnz8g/fFuQu2TAsdbeOO8CU0qryc=; b=P7neVLV8lZBtzJEXgKNeDAH+oaZRI2lUYXhjP7yi3tCyQoNoOYRlhBvhMoXz3WLFqZ eZX+EdiWeagyR/SgAId2ccf+/BK1T/5+JtthM9439qsr/TEB0Ohgk8eiJ6mxSMhhMw8j sUrU/FnYR8bES/2KtZjbXZEkI2zJd8eA8msDQ= X-Forwarded-Encrypted: i=1; AJvYcCU+7RxTw9ArJZimi6ZuIQ113IhILNcXRFCS+t3kO9TKQp9xsewhcwEMTyU1dmBsnf/VgEpZmEcmu6RGIZk=@vger.kernel.org X-Received: by 2002:a05:622a:4809:b0:4ee:4128:beba with SMTP id d75a77b69052e-4f4abccea36mr439741451cf.8.1767045558825; Mon, 29 Dec 2025 13:59:18 -0800 (PST) X-Received: by 2002:a05:622a:4809:b0:4ee:4128:beba with SMTP id d75a77b69052e-4f4abccea36mr439741281cf.8.1767045558450; Mon, 29 Dec 2025 13:59:18 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:15 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Lucas De Marchi , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi , David Airlie , Simona Vetter , intel-xe@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 03/12] drm/xe: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:09 -0500 Message-ID: <20251229215906.3688205-4-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. Signed-off-by: Zack Rusin Cc: Lucas De Marchi Cc: "Thomas Hellstr=C3=B6m" Cc: Rodrigo Vivi Cc: David Airlie Cc: Simona Vetter Cc: intel-xe@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/xe/xe_device.c | 7 ++++++- drivers/gpu/drm/xe/xe_pci.c | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index c7d373c70f0f..ee9ae73222d9 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -428,7 +428,12 @@ struct xe_device *xe_device_create(struct pci_dev *pde= v, =20 xe_display_driver_set_hooks(&driver); =20 - err =3D aperture_remove_conflicting_pci_devices(pdev, driver.name); + /* + * Use devm variant to automatically restore sysfb if probe fails. + * This ensures the user doesn't lose display if our probe fails + * after removing the firmware framebuffer (efifb/simpledrm). + */ + err =3D devm_aperture_remove_conflicting_pci_devices(pdev, driver.name); if (err) return ERR_PTR(err); =20 diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c index 9c9ea10d994c..ee08a09fda6a 100644 --- a/drivers/gpu/drm/xe/xe_pci.c +++ b/drivers/gpu/drm/xe/xe_pci.c @@ -6,6 +6,7 @@ #include "xe_pci.h" =20 #include +#include #include #include #include @@ -1058,6 +1059,12 @@ static int xe_pci_probe(struct pci_dev *pdev, const = struct pci_device_id *ent) drm_dbg(&xe->drm, "d3cold: capable=3D%s\n", str_yes_no(xe->d3cold.capable)); =20 + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; =20 err_driver_cleanup: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-pl1-f226.google.com (mail-pl1-f226.google.com [209.85.214.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4C8731062C for ; Mon, 29 Dec 2025 21:59:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045567; cv=none; b=Eq8NWo3J7n30qbrnpHnzQIMX3wXW3JlJAVZJ2jNvybPRzHDebZMzWtH1YoMVvsoB9m8dsNUBl99zNH5lCPXWgfuQKnsnFMJqDZCB4xvvBprhKqWd5+xvhBWi0qZAUHrJHHN7qRibIUR5Mm0xB6+A+kogHZOUr2EEwr6qpvzbDR4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045567; c=relaxed/simple; bh=iLspBHNkcA5kzZLcf6Qh14tl7aBhjrdKNsAysucsirM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=jnhx8cCY8aAAey9q1CKL3H/EjNj7y09Vp8i6xR4N37krGI+io4EK1ON0m7ewjZ+8jJnKwhOt5XIEvsgnI2wLzM4egRM9KvKGKHSvwLDBe0tNYIcxTN8gUSqigefewGx2TaMd+cR/ADqQPCwo4gElcppO/NriJfYD4Z8Lz96V9yc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=VkpryAap; arc=none smtp.client-ip=209.85.214.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="VkpryAap" Received: by mail-pl1-f226.google.com with SMTP id d9443c01a7336-2a07f8dd9cdso98839995ad.1 for ; Mon, 29 Dec 2025 13:59:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045565; x=1767650365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=VopAtg5cwECNDVQxgLsoKH79OtjRDL2VW4PpyQapOpE=; b=tommB9nc0ZqW9O0QMf/jF7RmWlw9K51w6Z/gkZR9ZUVMR9Uyf9gAQg+yYv18aOuE4M Fjfz0vGLYM96j4e7v7cKJu1Ylitgqwo4Q02sHXOBKUzdyZRjd/sqYaTCyeEBQMYvY7MQ zbwU38QjgOYZp9vXBG9PuA7hvQYfJ+TfxkC0REHFUgroLbTvNuk3tGTJpofJXC29vyh+ LAH25Y+IMjGEXWNVwGVaJtdGnlWr7s+lWZnInPSSV97Mqn5iPgpMBkfUHTzUnZYUNU5w mxq5aUmRDZAknMN92WjcTHliCH7u0gEzJQdYxfGMXtr1lDzgYbEUhOWz+TmZ/DrbzZ9A Y8ZA== X-Forwarded-Encrypted: i=1; AJvYcCU8UFsdvbGRui3rX4D7QuxTuPuCRHXc0uFjQ/BsMESFxDW2zK6ceMNqeajdE9hw2w0bnp2bQQ4d/HkLCT8=@vger.kernel.org X-Gm-Message-State: AOJu0YzBtK2ECzGkTpZrgl7yBJJs1oZ7fkJIY3YFx0jMIAT/Z1NeY67b adb+RpiM0Zo4oEhoHkXERPhizA5AyrHSESljzrfvC+hALltRyTqW1SAC85dR9Vksb1IoF9Rpznf prp7Q8b40RP/iJ16ehezwzLT1WFrT2dzOvVxKlhf+W23rMRYu7PZxDXJjIvx6aFy4fIwPiuLPVS jQZKWXqdjkmbfJdSAQnhWPGzD6Ey8eKwk8RvO17c55+2U/Cz3BwYxlbPiy+NN91+2gCzta2IUt5 0kAW7FIS6j4MQGf X-Gm-Gg: AY/fxX7oSRoJoJn9Be3MiQJwRPmwD8i6/I0v8rj9yfMe0DSqn/xM2Hpt27HM/nL4RaY NfCY3StE+rPCv7Q3pGkb1EIp+58314yzOdfDXRDPmO/HN46iVai9LCd4sITfxRmoW8M4wC0AyPD wM+u6Y7MY59+AalZwv39f8yxkqsOyCGNaXI5u97qAxAtJaRi47+W8Qro816VwKzpMGMIWeMajQw 6Zxu8eNYxFFCSfStnV+EzmjrzCygud47MkniR+agXz2YdDPqaRGZXJWVS7rWSBEuGPeJk/L2AzG lZUeYlX9tNo5ezc0U6lZxlgEjAg+Z1PyKJ73seiz308UnFZTyNX5kNnvE5wMZOMziT6Thdd1J6J RrtscOUv5xnG5UNx6+O8uckv9c+QSYqAvagjeE7FZ3hvKdmvLGq/q1B4wWRJVZzZGyMdJ0zs3SG DIZzuhXJWU/dPsU4boeyJR6M7sSqOYzJUU84YeK95GiM9G X-Google-Smtp-Source: AGHT+IFMoOKntbiZu9opisg0A6XQM25TilC2hO8tAZvXy+lgJPlIUIQg3DX786BGYhSDyb3J+gKVMW7tydEL X-Received: by 2002:a17:902:d488:b0:2a0:7f9e:518c with SMTP id d9443c01a7336-2a2f222aed1mr312345905ad.16.1767045564899; Mon, 29 Dec 2025 13:59:24 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-101.dlp.protect.broadcom.com. [144.49.247.101]) by smtp-relay.gmail.com with ESMTPS id d9443c01a7336-2a2f3d1afc2sm34851225ad.42.2025.12.29.13.59.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:24 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-88a360b8096so245143396d6.0 for ; Mon, 29 Dec 2025 13:59:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045562; x=1767650362; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VopAtg5cwECNDVQxgLsoKH79OtjRDL2VW4PpyQapOpE=; b=VkpryAapz7jcWOceNo8wZdiZTByNDRwhHwt0E0drE05En2LzxDH0CVbgp+SUkQdQNs pD6Ua2Z8X6W4N0ukW6d0f9qq59QWjwB6pzdcI22WIFbThvk7qnTBSHPsXzv/H/aBWgJL D3ChCQh322OHbBV+CfvurOT4brjsdJ7bb7Hi8= X-Forwarded-Encrypted: i=1; AJvYcCXIwxl4DD4opWSo8HMSo0cKeEGdaktFkH/dIWh3Oy6EGIK15fDiLzpx++BO+95eXN46x+0tRRI/kEARvZA=@vger.kernel.org X-Received: by 2002:a05:6214:252a:b0:87c:2967:fd32 with SMTP id 6a1803df08f44-88d8281226bmr511303446d6.22.1767045561926; Mon, 29 Dec 2025 13:59:21 -0800 (PST) X-Received: by 2002:a05:6214:252a:b0:87c:2967:fd32 with SMTP id 6a1803df08f44-88d8281226bmr511303186d6.22.1767045561579; Mon, 29 Dec 2025 13:59:21 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:19 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Airlie , Simona Vetter , Lijo Lazar , Hawking Zhang , Mario Limonciello , Ce Sun , "Mario Limonciello (AMD)" , =?UTF-8?q?Timur=20Krist=C3=B3f?= , Vitaly Prosyak , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 04/12] drm/amdgpu: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:10 -0500 Message-ID: <20251229215906.3688205-5-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. The aperture removal only applies to VGA and display class devices, matching the existing behavior. This ensures users don't lose display output if the amdgpu driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Alex Deucher Cc: "Christian K=C3=B6nig" Cc: David Airlie Cc: Simona Vetter Cc: Lijo Lazar Cc: Hawking Zhang Cc: Mario Limonciello Cc: Ce Sun Cc: "Mario Limonciello (AMD)" Cc: "Timur Krist=C3=B3f" Cc: Vitaly Prosyak Cc: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 9 +++++++-- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 7 +++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/a= md/amdgpu/amdgpu_device.c index 58c3ffe707d1..6c867657225e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -4737,8 +4737,13 @@ int amdgpu_device_init(struct amdgpu_device *adev, */ if ((pdev->class >> 8) =3D=3D PCI_CLASS_DISPLAY_VGA || (pdev->class >> 8) =3D=3D PCI_CLASS_DISPLAY_OTHER) { - /* Get rid of things like offb */ - r =3D aperture_remove_conflicting_pci_devices(adev->pdev, amdgpu_kms_dri= ver.name); + /* + * Get rid of things like offb. Use devm variant to + * automatically restore sysfb if probe fails. This ensures + * the user doesn't lose display if our probe fails after + * removing the firmware framebuffer (efifb/simpledrm). + */ + r =3D devm_aperture_remove_conflicting_pci_devices(adev->pdev, amdgpu_km= s_driver.name); if (r) return r; } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index 2dfbddcef9ab..fc2d2dbaebe8 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -32,6 +32,7 @@ #include #include =20 +#include #include #include #include @@ -2528,6 +2529,12 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, amdgpu_get_secondary_funcs(adev); } =20 + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; =20 err_pci: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-pj1-f98.google.com (mail-pj1-f98.google.com [209.85.216.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCEC730F7E3 for ; Mon, 29 Dec 2025 21:59:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045571; cv=none; b=stzVwYhfWGkDT0Fr4BRfRiL0zhGzcpGuB6+iu40/wnRp6r3IakOj3iMos0bcfUaBffTNmCZnuMt+J5fqqtt8fg/hMuMey+V6TojYhC1GRBtCu0d9BGdA0s2K3HWmDOcsUmA5QZi9zi0MfGVyToBrVyFp2+T8Bz1nELgvqFOJKHA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045571; c=relaxed/simple; bh=HLz/pKvZ8fPvlFlHYFg+4MkikJW/YUYjkfO51McHq3E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lDWt+QW3zYA/XC8Ns2qVFB5vJQDgV/igdQ/FWeyE2MlI87z78IIabiTDtWMzwJ00ITNZxklujcJEqrwpX8vOtnREPQTly+EYO9hNw+x6fieyhm4zyGM9MfZZAEo33cxMUmE8a2Xs4zaEtWd/Y/kC6+m+B3/PUCQVg2q4uv6jORQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=Jb9dfM8n; arc=none smtp.client-ip=209.85.216.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="Jb9dfM8n" Received: by mail-pj1-f98.google.com with SMTP id 98e67ed59e1d1-34c277ea011so9551094a91.1 for ; Mon, 29 Dec 2025 13:59:29 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045569; x=1767650369; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=twseZy54c+QB1Kjp/hds53EAQKHotDuR3NVPADpEAm0=; b=m+LoyllZcAGO7Ppjp4l7UqhpjrtuhruglyRdv2DNqKp26MN8grFqz/lYQ+pKd7MLq2 MOlwJeTyvFQpRpIVgIovlkPC5ZXtqTMlonzBlPbOT69tckTC8Pyb2BwdVJYzyQvIKB5V jTgtsEC2tIxXr1MdpM8uGwWFMRhQ9ag/vBHZHAxfezd74FewmJrnuMweKzVymNbQB6AQ 8SiqRftFSiLjbQpC2d7nCTa1qJSx2f8Ncon0KTbIDTU9Sf6R544mE0jPgIA41Ja9BmRK klyhdUTY1RpWDJNqSM7SDZ5vbZ+IGmCH2bE02jv2Yxyw0lvzPkplyvpZ5B99O8HAlUr8 vyvw== X-Forwarded-Encrypted: i=1; AJvYcCW5ZsBzgXuus5BpDqogv5oVpq0s3K9ecTmh/fUMrZD4NFMBRs9tBWDyAsAGJqcwqQXzs75GI+EphXN6evI=@vger.kernel.org X-Gm-Message-State: AOJu0Ywpab9Aeo3qfyUJ+C7q1MU76zT7rNHv3qqZFJA4wCZi/qYOr+nB lTI6Zu+smu2UJe3S+BBHbWgu1v4nKMYG55kZ3toU6E1Kka0knEaxrN4kAPKdtmhQRu7JroUwcEF YqtXNomKkJOu2RuwsOEZWgO2v4mXLGq8yHF89v9rDidZO+ILvyfk422SkvAV26qSGI09L8wDCme S4QN3aS+mAZKgkaE+2p1AuW1x1aRVuRDJRikzRyXD7fWO3af4pbjvvIM9umPojgcW3VbTmtSTIb vslKAKRfDrSwfL4 X-Gm-Gg: AY/fxX6aRGONklBA0ZgwOlt4W4hmO8Vygjfi3IbcsVoMOGf+pYFBjgHihmJ65+D3C1N 79RSiv+p/jpKNubleBdJG4tz59tL5eTAasj2KtyjfnqX5gwDvnLWUEHLUWDz8C5MazVrQkFP/AR ThyKHxiPeQkfeefGJxz43T3K5F9UYakLMNKIIKSmm148pq/5Up9ievhByvmnp7nGSnzJaLQLCnM GtVPLZN53OedV5y8PknzFXKkSVTLm0R5pZ0bxSz3zRepAtKfrC/HtFl/rgOUTNxbDqrxBDiBE58 3PpdhG9D3qxHMy0qV7qkW6yJ/TDhHF07NrrmndRgz4qG2XXpDDy3Bg0zpQOneb59Cx/cr2yljje P7PvP4wQW5/36AuBYqonieAOezmicuTwugOYM8kleVio2nevdF6oS9gZOC+KXjrDhycz4GDYnLZ Whwdg1HJlOdoEGhPVaWwXj48xgAMO/DKi6ngNbRa4X6WCh X-Google-Smtp-Source: AGHT+IEMvlzG9R3PHA5dbD6iuwYeYaeVli3bfT1odqM84Jt4W6gq1LPz8weoEmJv6xk75Qmm+gSMCWMQ3x+N X-Received: by 2002:a17:90b:3d0d:b0:32e:38b0:15f4 with SMTP id 98e67ed59e1d1-34e9212f34cmr29870513a91.7.1767045569133; Mon, 29 Dec 2025 13:59:29 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-117.dlp.protect.broadcom.com. [144.49.247.117]) by smtp-relay.gmail.com with ESMTPS id 41be03b00d2f7-c1e79617ef3sm1810855a12.3.2025.12.29.13.59.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:29 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8888447ffebso226215426d6.1 for ; Mon, 29 Dec 2025 13:59:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045565; x=1767650365; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=twseZy54c+QB1Kjp/hds53EAQKHotDuR3NVPADpEAm0=; b=Jb9dfM8nfGi+WctiF4ug3SKDmmcIgrlL35Q2MweQbQCpNyksRXklAo8bUfu5hVztwb SkTpfcZVeYqMngJBgDvuAos9nAfRyfjghh7Jn63bl4H+XOWJM/60O2RY8TIt9o0HICUr 1dif5JnCHdRuZsJmaKBVaSzR4/Hk3WDPYRwnY= X-Forwarded-Encrypted: i=1; AJvYcCU6OVPKhRYVxOOpPIAUhQ8x0U29dI8SSSD7zJbdtgH0JSfNPh9TCpmYQv8/Jv5ZIffDYeDxLXrwf1zC+ZM=@vger.kernel.org X-Received: by 2002:a05:6214:1d26:b0:890:2480:f027 with SMTP id 6a1803df08f44-8902480f3d0mr64568786d6.27.1767045565042; Mon, 29 Dec 2025 13:59:25 -0800 (PST) X-Received: by 2002:a05:6214:1d26:b0:890:2480:f027 with SMTP id 6a1803df08f44-8902480f3d0mr64568576d6.27.1767045564676; Mon, 29 Dec 2025 13:59:24 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:22 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: David Airlie , Gerd Hoffmann , Dmitry Osipenko , Gurchetan Singh , Chia-I Wu , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Simona Vetter , virtualization@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 05/12] drm/virtio: Add sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:11 -0500 Message-ID: <20251229215906.3688205-6-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Register a devm action on the virtio device to restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Unlike PCI drivers, virtio-gpu cannot use the devm_aperture_remove_conflicting_pci_devices() helper because the PCI device is managed by the virtio-pci driver, not by virtio-gpu. When virtio-gpu probe fails, the PCI device remains bound to virtio-pci, so devm actions registered on the PCI device won't fire. Instead, register the sysfb restore action on the virtio device (&vdev->dev) which will be released if virtio-gpu probe fails. Cancel the action after successful probe since the driver is now responsible for display output. This only applies to VGA devices where aperture_remove_conflicting_pci_devi= ces() is called to remove the firmware framebuffer. Signed-off-by: Zack Rusin Cc: David Airlie Cc: Gerd Hoffmann Cc: Dmitry Osipenko Cc: Gurchetan Singh Cc: Chia-I Wu Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: Simona Vetter Cc: dri-devel@lists.freedesktop.org Cc: virtualization@lists.linux.dev Cc: linux-kernel@vger.kernel.org Acked-by: Dmitry Osipenko --- drivers/gpu/drm/virtio/virtgpu_drv.c | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/= virtgpu_drv.c index a5ce96fb8a1d..13cc8396fc78 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.c +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include =20 @@ -52,6 +53,11 @@ static int virtio_gpu_modeset =3D -1; MODULE_PARM_DESC(modeset, "Disable/Enable modesetting"); module_param_named(modeset, virtio_gpu_modeset, int, 0400); =20 +static void virtio_gpu_restore_sysfb(void *unused) +{ + sysfb_restore(); +} + static int virtio_gpu_pci_quirk(struct drm_device *dev) { struct pci_dev *pdev =3D to_pci_dev(dev->dev); @@ -75,6 +81,7 @@ static int virtio_gpu_probe(struct virtio_device *vdev) { struct drm_device *dev; int ret; + bool sysfb_restore_registered =3D false; =20 if (drm_firmware_drivers_only() && virtio_gpu_modeset =3D=3D -1) return -EINVAL; @@ -97,6 +104,21 @@ static int virtio_gpu_probe(struct virtio_device *vdev) ret =3D virtio_gpu_pci_quirk(dev); if (ret) goto err_free; + + /* + * For VGA devices, register sysfb restore on the virtio device. + * We can't use devm_aperture_remove_conflicting_pci_devices() + * because the PCI device is managed by virtio-pci, not us. + * Register on &vdev->dev so it fires if our probe fails. + */ + if (pci_is_vga(to_pci_dev(vdev->dev.parent))) { + ret =3D devm_add_action_or_reset(&vdev->dev, + virtio_gpu_restore_sysfb, + NULL); + if (ret) + goto err_free; + sysfb_restore_registered =3D true; + } } =20 dma_set_max_seg_size(dev->dev, dma_max_mapping_size(dev->dev) ?: UINT_MAX= ); @@ -110,6 +132,13 @@ static int virtio_gpu_probe(struct virtio_device *vdev) =20 drm_client_setup(vdev->priv, NULL); =20 + /* + * Probe succeeded - cancel sysfb restore. We're now responsible + * for display output. + */ + if (sysfb_restore_registered) + devm_remove_action(&vdev->dev, virtio_gpu_restore_sysfb, NULL); + return 0; =20 err_deinit: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-qk1-f227.google.com (mail-qk1-f227.google.com [209.85.222.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54C863101D0 for ; Mon, 29 Dec 2025 21:59:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045575; cv=none; b=ky9rFZvPqSJom0VN/mq7GQK7BxyJ9sZo2RY7ylDLo3u+KkXzvf8pkVxp1OvJzS65sODdS1GIbEVl0BWOXWB1brEjXEcOVS8nsGAYAceOQOG2TPnfS8JrLqU8vSCh2clWv3Oo6rSTYLTALFKt0t5C2vtr2JPonJBf6TJTKJCEBzA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045575; c=relaxed/simple; bh=S6ebYGuGHuMQ323U3L1JRHkGu91jQTvp8xLfWBhfgdg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LELly5IpT2Lt8Yennelu2MnzeEpJcPKdPRW9DU2xNvlb5mpRC8P04Fglji8WUisgJQ6NIBDyFEaGQQGbLrQiDEm16SD8JIaTuqLeFLGiI5Mctn1YFoyvW8AaS4qtoA3ZEAS7o4el0uivlKat8DxAn4X6KAZ0+ZGvRsKk/Cg+CCs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=iFDcuFDd; arc=none smtp.client-ip=209.85.222.227 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="iFDcuFDd" Received: by mail-qk1-f227.google.com with SMTP id af79cd13be357-8ba0d6c68a8so1063902785a.1 for ; Mon, 29 Dec 2025 13:59:32 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045572; x=1767650372; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Q4KdukKFQUL9FIJkansAje16tRq8afqRuBs3aDoBF14=; b=wNTsxX3/ZI0f0NAaY3jeKjT95iOuk+cNd/vHlXfA+udqhHzUzkZt8637RK0N6arp99 zjTA9kt8Luf/OQPbnAXkCwn/tLefASL3KPEbbzZLoPu8Hzu2hrgLAdG29guhMEDwyjJ/ 9REchZ1IrCUQAYIHJxTp1oE4x1rkNAeLKzmNDY/Kq5qspcXtAfBFrXlxwJurH6oPpAYT 8Qa8OneH5ByVx5XNDgmNwQj6P7BkctYaQ7Z2Jz3/1kFYAEP5FnlhBnI96l8MdxNceUbS Ng3YqpIx1wsJYc7awQLHxkUKM57iSi2rFarqG47sl88rSJ2H82kTOIALuBZPjg2lZfBO 1QQg== X-Forwarded-Encrypted: i=1; AJvYcCWfKp6XEkOYweEXDSs11iKlahwDDzpbD0k15a8UMZPtr34q41kO+UxEqqWXlz9wx2wD2kc186SDWwakkBw=@vger.kernel.org X-Gm-Message-State: AOJu0YwCbqiULJ5qeK4XRInoJQItS4rjEcp7seLy1x2swtb42acof0o3 IaQFEALYXGAZF58aknpDxulEMMbiKZThvOgmPNT/kpzpoF30Q/xfJIFU+gLuvsg50/yWbXQM+ud OP11IcAadwkUkCsRoZ9iFl4zprdgAlIrXSt6r2aSTbaOVq4mFCk3dZAwbsVZ7urvosrLLh2t9NR vselPVapmNdl7caumX7KD0AQWGDzCWhUKGCnQH7kzkCJxRa0i0lT8Ar7v5suyDt6xbMySB9M0Uo jjIf7ZZuioQe3yK X-Gm-Gg: AY/fxX4/cdcMo9/Kmkzkaa5cKmPjog//rDHrd9cMIF49lxbRnuby97nbK4fUnUl4bx2 cs6G4TYA7hh+HS4mKcBd8NSuzRptRDrT5fxuTiVyaoEut2ARjmzTxx/e2+TyJBxZu70QvkBYq4m 063pQHLnkDcSHqsQTZRafoHt/udIl4sE6Dd1nrWX/7GbuZ+xBHltjirLWTi/HE0bOg4wOivdmoi oeM+ixk3gqkk17PBv7Vh2Wqu1IQ/I4BKiN9aMjGDX/r4iQ+C0KkWdNV8baT02ul+b8THYBZcQ9w EJkpNO6dqb1nBxSRVzHFo5qOL8N0QR8vJAZC5ylCdj3dTfNF4E0tYSJxBBdKzm1MAxHRa7Hn57T 7R8GfQINio3VDVmFTW6EX+Idm05WlZymVLX+CZamXOwcj26pJZovtJgbYLtqkUZ+nx9FRUQsReT ZoxsI7xGm5Xts+VIFiaf1wfeHD3sZ3jse8+IGFQXjwVQ9O X-Google-Smtp-Source: AGHT+IHWkMg8UM07D6KlQ5sHOvi3gQQOZC4Ji0tyBKcXu0YaDCRDhyVfWVsX3odsxEoxFM2L1XOzkkc+i1y+ X-Received: by 2002:a05:620a:4483:b0:8b2:7290:27f6 with SMTP id af79cd13be357-8c08fac0c29mr4480118685a.67.1767045572029; Mon, 29 Dec 2025 13:59:32 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-101.dlp.protect.broadcom.com. [144.49.247.101]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-88d98055ca8sm42294156d6.28.2025.12.29.13.59.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:32 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-88a31ce8214so237900856d6.2 for ; Mon, 29 Dec 2025 13:59:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045569; x=1767650369; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q4KdukKFQUL9FIJkansAje16tRq8afqRuBs3aDoBF14=; b=iFDcuFDdpx7K6Yk8TdjvZpVldcUR4Nld4Sw9i6m3ILJbWEyEan2pDz8H6HxgfOz5sw brsRuOEWh24d/z2fI0G9oV8FN9hVShgOEAx5K96OAeLQGkPixpytgkCOCZ8NSRlVl4KV PgBExfNXAL6X7LtBiWq6XgAPQ+RLft6tdT4q0= X-Forwarded-Encrypted: i=1; AJvYcCVguEpaoEmubHp1eHTm//HoH/hrV+4+jGSO13+hZyJ11WwvnPrRnv5EhB8Gy/3s7ZsMn+GMsfC0peza4J0=@vger.kernel.org X-Received: by 2002:a05:6214:212f:b0:88a:4694:5921 with SMTP id 6a1803df08f44-88d833b7862mr558877876d6.37.1767045569300; Mon, 29 Dec 2025 13:59:29 -0800 (PST) X-Received: by 2002:a05:6214:212f:b0:88a:4694:5921 with SMTP id 6a1803df08f44-88d833b7862mr558877646d6.37.1767045568851; Mon, 29 Dec 2025 13:59:28 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:25 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Lyude Paul , Danilo Krummrich , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , nouveau@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 06/12] drm/nouveau: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:12 -0500 Message-ID: <20251229215906.3688205-7-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. This ensures users don't lose display output if the nouveau driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Lyude Paul Cc: Danilo Krummrich Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: David Airlie Cc: Simona Vetter Cc: dri-devel@lists.freedesktop.org Cc: nouveau@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/nouveau/nouveau_drm.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouvea= u/nouveau_drm.c index 1527b801f013..7211ec6cdcc9 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -871,8 +871,13 @@ static int nouveau_drm_probe(struct pci_dev *pdev, if (ret) return ret; =20 - /* Remove conflicting drivers (vesafb, efifb etc). */ - ret =3D aperture_remove_conflicting_pci_devices(pdev, driver_pci.name); + /* + * Remove conflicting drivers (vesafb, efifb etc). Use devm variant + * to automatically restore sysfb if probe fails. This ensures the + * user doesn't lose display if our probe fails after removing the + * firmware framebuffer (efifb/simpledrm). + */ + ret =3D devm_aperture_remove_conflicting_pci_devices(pdev, driver_pci.nam= e); if (ret) return ret; =20 @@ -903,6 +908,13 @@ static int nouveau_drm_probe(struct pci_dev *pdev, drm_client_setup(drm->dev, format); =20 quirk_broken_nv_runpm(pdev); + + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; =20 fail_pci: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-pf1-f226.google.com (mail-pf1-f226.google.com [209.85.210.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A03A330FC1E for ; Mon, 29 Dec 2025 21:59:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045578; cv=none; b=Lgqt549qi3nQ+wNpSxRHZb/VToNDhnTDR7AfR1SDKtAbwxEsPdmudC8phDkxcTMK38dxXgSG7KkV8oeDxqsNL/QxNwgYXUQXmCy1g7BAt8Q8XeVqhW5XvH0lQA+PZ4DhEXCiYqkEhAL4eVf0Id/ZIw/ZGbXKUJ6T+bax0SukmC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045578; c=relaxed/simple; bh=abKkcSFLS+5JdHy2nWvYoeZMh7bXqKH5PJjyGl/Xk3g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=u8jxiuIrotjaPuezJ9zdlvJQXfA9VizI7plV9+0c+wNFSnoo5w10oqByR+YIfCQ7wXk0ISRnqzL3HadxU73VvJ+lPrDoXmu4ULTq3Fh5+9Jp0biXfD2Ymbq3jSP/jI5GmH5FBJVd5eBQxI+tf8uwYxfrTUj+Iinje4ANNQBWFPQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=hQB/9fDy; arc=none smtp.client-ip=209.85.210.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="hQB/9fDy" Received: by mail-pf1-f226.google.com with SMTP id d2e1a72fcca58-7bc248dc16aso7444965b3a.0 for ; Mon, 29 Dec 2025 13:59:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045576; x=1767650376; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=huMey1yvlTcl9trBYSLi6aENqnLSe9ecqic2n3VA9bs=; b=GfOIg11UEtTrVA7kCQx9pYEijHlpHV0EMbupWkyZXVSKisR5mYdHg8tGqLlKZD9t/n thb3+aF+wtZB2L0rzpBNus/m8IE+0DXTGH2I2A5HIWTdB53jn6FtCutnHruGzWWT9R21 4D21P2J3VDktvh6xj2NwCp4s5xXMxkV7t9lLxS3HUDRV3W5pJBcgiTvwbcuce+ZedKPY PLkketEAaOq/Ya7lagcYQ/kyziYoYx6ar0AEDyYRlmddUpsRQNcDsSuBmmJU2K+TtgzZ HVv/7UDAYbTGrCQ80Xcfd7Uf+b6xzNsS0kgeMTxVUKYOuKNugKM1+XjyetS+cX2Nzlzg 42Nw== X-Forwarded-Encrypted: i=1; AJvYcCVy+iLzZYlrutD6CjAjJFjbRWvtvGwksI8Kx6IOvcjDb0WYH6EOmM6x6L9DdP3Q4buV1muV4348bnKiQ08=@vger.kernel.org X-Gm-Message-State: AOJu0YwGd0MTDfgSy/kl7u/5vgeO9Ge+8/+/QsBISKsna+/gxJeRUEwm pJLwpRUsDPBiJGpqj5xwQZ5Hz2FbT3nRiW8Q+x37qQMSxb6rAex007HX/3Y9mPu7+Wy4/Vd7wl5 kgd79CnJZ1KD/6+h3nA0K1rcMCNuqsoPHpjvWdppWHIBlr9z76FxWw0MIwfwFYtXN0WGgQm0oNT Ifb6NI9ZcKUo43aUQvZ2DT33fcf1NcnKX0kLRnSVysVSXykeLgO4UhGkgtHXZm6uV7GKtsxtArO +sXQDAYiMHoXyyL X-Gm-Gg: AY/fxX7tNG+3KqSJfJ3tWA0dNn38Wf0UAIEVvpXaUixP3msv1AQ132c3oCGI0F5A5Td vAhaKt1wVC/M7CFafrPHc2PytYdrtTZZTsQkHWx+0G04zjAsmIpNUZmrMV6dvS7wylQl1hWJ7mz 13J9jBUcGyG3kysQv8axebMHJO3Ekpw4hQQiC8eEBCoF57aT/iFKFVzHw6YMYF7e4rlAZIG3Vut H4cHZtU5j92/FVagHJtN8kyAhmOrAJMi4r0ghvitfgP/35/INWTtbnahuMu1ywKx1Usr89GIZx1 G7XQwegCuslrRyoZSAomWPBGFUfFvVnL6yb+076w1s1mtBkfnSRtsEWFJwCRfvR7Rw1t1q5lQSf FoAp0SRE2t1FDynPYnareBBaaV8Libyj/p8cf3NAA2bsMmgW2Ydqv3RB+/1Ly9lHnzyLWpw8RDG mMO0nR33K7DMGORBjRlEBw1+Jawy2jgZSlfd7ABuI= X-Google-Smtp-Source: AGHT+IFbtENftEP14NRM7NJHZsftIcNe9+v4a4k8849GDd5ygcT5cytd4jRdsIYEoDylNhpAEP7/OkJGW4o7 X-Received: by 2002:a05:6a00:a885:b0:7f7:532a:e44b with SMTP id d2e1a72fcca58-7ff65f78a13mr26969093b3a.41.1767045575851; Mon, 29 Dec 2025 13:59:35 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-2.dlp.protect.broadcom.com. [144.49.247.2]) by smtp-relay.gmail.com with ESMTPS id d2e1a72fcca58-7ff7ab31a6dsm3622205b3a.2.2025.12.29.13.59.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:35 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4eff973c491so235890031cf.1 for ; Mon, 29 Dec 2025 13:59:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045572; x=1767650372; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=huMey1yvlTcl9trBYSLi6aENqnLSe9ecqic2n3VA9bs=; b=hQB/9fDyHb6utdVaFP5s96ANp+QSkj7UtMMn6zS/iVGZVV2eu4Du3jJVOu+54F1Pa6 FQ78NvwrZELVvyMcd5GBjD24useZNEHXKGicnWh8YpVoLxbEgqWXm144S4t/kjxJeDjH 6lEHW5qQLzj1cfj1bWhTVo/2AGEouOQS8IEpc= X-Forwarded-Encrypted: i=1; AJvYcCUHF76lQLwN5Imz/i75ql7dKuVqmDpLGwRyhiAzd22AFceD5Y5Op4AqhEklLi2FMF/v/vtddBSwI082fuA=@vger.kernel.org X-Received: by 2002:a05:622a:120e:b0:4ed:1bba:f935 with SMTP id d75a77b69052e-4f4abdb2f22mr498101411cf.57.1767045572389; Mon, 29 Dec 2025 13:59:32 -0800 (PST) X-Received: by 2002:a05:622a:120e:b0:4ed:1bba:f935 with SMTP id d75a77b69052e-4f4abdb2f22mr498101101cf.57.1767045571961; Mon, 29 Dec 2025 13:59:31 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:29 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Dave Airlie , Gerd Hoffmann , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 07/12] drm/qxl: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:13 -0500 Message-ID: <20251229215906.3688205-8-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. This ensures users don't lose display output if the qxl driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Dave Airlie Cc: Gerd Hoffmann Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: David Airlie Cc: Simona Vetter Cc: virtualization@lists.linux.dev Cc: spice-devel@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/qxl/qxl_drv.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c index 2bbb1168a3ff..ca4c817fd611 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.c +++ b/drivers/gpu/drm/qxl/qxl_drv.c @@ -93,7 +93,12 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_dev= ice_id *ent) if (ret) return ret; =20 - ret =3D aperture_remove_conflicting_pci_devices(pdev, qxl_driver.name); + /* + * Use devm variant to automatically restore sysfb if probe fails. + * This ensures the user doesn't lose display if our probe fails + * after removing the firmware framebuffer (efifb/simpledrm). + */ + ret =3D devm_aperture_remove_conflicting_pci_devices(pdev, qxl_driver.nam= e); if (ret) goto disable_pci; =20 @@ -121,6 +126,13 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_d= evice_id *ent) goto modeset_cleanup; =20 drm_client_setup(&qdev->ddev, NULL); + + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; =20 modeset_cleanup: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-pg1-f228.google.com (mail-pg1-f228.google.com [209.85.215.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BCC9D30FC10 for ; Mon, 29 Dec 2025 21:59:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045581; cv=none; b=YN+YFcuazvdTTlOlzNh8nt75CZGNjSJ2E/50JQJzirs+LLHIx43p//t2ruJuKL+hPhr775EKi4fqLvpDB4mxieLhHlOQjA0m6zk1XfxwsdHkhMGcQH9Vw5t1sHx/Z/yWOV4LZVGJ4aWTfcxxVIRIi+e6JX4f3PIP58qQE7Vl+HQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045581; c=relaxed/simple; bh=14BzrAPMdaZveOZ7P0/uVmqlAtSWKTfkmTiCHG3Aaw0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Dp/RvI0zVQUuOt01YylMQm9R1wjcNLdeHA/GWWs75jtS3v1qKs3DnejCkpVM7VEj7M1IYX0AHs6kvY/BJ4leW7ZmiIz90TuF7h7uA7UaLHc4aCwz+DmH4h37U57o34iBiwgxTOO2KXQ9dZMao8G9ldWlBbVAq2SKR7adx1n31co= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=OGVQE64w; arc=none smtp.client-ip=209.85.215.228 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="OGVQE64w" Received: by mail-pg1-f228.google.com with SMTP id 41be03b00d2f7-bc17d39ccd2so5801235a12.3 for ; Mon, 29 Dec 2025 13:59:39 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045579; x=1767650379; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=khRhfUyS2wSCnelTC2k3Mez3rZkjvkbZG4nf8+8nWDY=; b=B4No1dUh8YE/HGtDnUepgwPv5JpU/vqoHow6ICJq/pyLe9HS/4uI9iRniY1OkcEtzC nZ+VIUyjRG5pkTfPW2BojoQl3l6GX71yeSFsYdA8uG/x3umIdIXoMjweslEqzHd9SwNX wsAtLhIIlZBFwOck6qhn1DT3m0HKJl+M/WWtZh7swgoZS4/XAqz5d9NEZoJt/tB+ucM2 KXmaara16jEAJ9HDBVQu69GtPhYRbTG09qbANpCGG1mrWVBAh3glQMAAhQqYUWwur9ON qOC8yGChxbezK+QPp59n6FaDrV4KnikNUPgRykQ68/F4Zq8UhnEcuQk1Rk+BnT+IGsXl lVyQ== X-Forwarded-Encrypted: i=1; AJvYcCWdnAN7Ow+DrU8FHVCMYgoelHmUvcjwKH3yO9pCdfTvaSqXpHD5AFZ3I5cf2MjmEfETXOx0OkH9EdqCe74=@vger.kernel.org X-Gm-Message-State: AOJu0YyHPpTv5Bda3AqRxivTRG1xroAcgLhmTClSl4JW/m111AftsNXQ b0MC7DdoQQddUTnlBuT5t/YazhHLnbUVw47PZ7penoZ/91h+Vd273NTmZbkGHjxFVVxYs9BLkFA Cr7Y+QQNWM80Tplos0z0C9idGHhcBfm0EkYaHpbmzjGKzUeDhb8wUmXDZW1j6ek7yWk9Y5IMTl9 qlCdoqSg9/46gSM9wG7ou0LzsL8CSWglI9dNXvMO4gmgaCd+AcFreqqjqKvX6UTIonVmLX9I7uK rTBdFcPdrGhOToq X-Gm-Gg: AY/fxX6sdPr/Djm4J5Td9dIM8Bau67X9Xs7IN/1O0wG7rSu9AGyXgALPY5aHInaNWhh uWHz3IeUKpmU8fxPG8D2blaXPjo3ymI97y4iktOV2jY3tYWr8/d9jwHjmnR+lGhHbWsZL1/eW3s MKdid4ijkXyhptViSxtAGVyhz/hIM2DIhR02DQOIxOW8e9yLgopPkkYR3nLwG+7OHkqrBm0focu wUuup474CAZr+31l45N5LkJKifUIxCrmsP9P9D2iIORlmq7/IACtBCZwGaWwcV4/7PFfrE4tEFz LpI/I5fYdGFizXA6Qx5uB39OtE1EtmzYrFdyMMFTprN64pawAPi6DI8dTREoqidlMysEYTzR4uk KtW2f7XnTxn6BC44LFzLw/L3Rub38T8MemEywK16YAxRDyScIyUsIDk4s6n2aFku0Ey2ICQRXLB RcxoOnmhMhjIDQhbu6+D6VSiohyk+rijTt2lD2aEagd/vd X-Google-Smtp-Source: AGHT+IGjded6AAinraonUc9glAvw82Nox8wYVrpTxTixiSh2rKKLi9KCoDnVI5txHrvhm7/fUtUOKYd2yMRF X-Received: by 2002:a05:7022:ef18:b0:11b:9386:a389 with SMTP id a92af1059eb24-121722fc6bdmr23633983c88.44.1767045578898; Mon, 29 Dec 2025 13:59:38 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-101.dlp.protect.broadcom.com. [144.49.247.101]) by smtp-relay.gmail.com with ESMTPS id a92af1059eb24-121724cbe73sm6412243c88.1.2025.12.29.13.59.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:38 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-8887c0d3074so242816986d6.2 for ; Mon, 29 Dec 2025 13:59:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045576; x=1767650376; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=khRhfUyS2wSCnelTC2k3Mez3rZkjvkbZG4nf8+8nWDY=; b=OGVQE64wiqbs6i/htXrQ/neDav+d8kqvYZMV3ptsLXTREy2tn5pN1vlIr7qaTdmnSP jjuoD8uExKJO7hyhfwWlV3w5O14y1YJnAnIqVE3ncfPT5E4xLgJ8llCTe5ZrZWqN69/p EOl1miPUxO4z/NrKeQnU7Jb8VuvLdmZqlxhdI= X-Forwarded-Encrypted: i=1; AJvYcCXwDYCHmcmKVu9kJGNOMy+DrdbXX3GnKPPQQPnGIqTk4LEXb+kQjdi3i+NxSY/ak4GYH7vWghTVceBVNY4=@vger.kernel.org X-Received: by 2002:a0c:e98f:0:b0:888:7e02:50c4 with SMTP id 6a1803df08f44-88d820415e9mr358861286d6.24.1767045576013; Mon, 29 Dec 2025 13:59:36 -0800 (PST) X-Received: by 2002:a0c:e98f:0:b0:888:7e02:50c4 with SMTP id 6a1803df08f44-88d820415e9mr358861126d6.24.1767045575654; Mon, 29 Dec 2025 13:59:35 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:32 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Hans de Goede , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH 08/12] drm/vboxvideo: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:14 -0500 Message-ID: <20251229215906.3688205-9-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. This ensures users don't lose display output if the vboxvideo driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Hans de Goede Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: David Airlie Cc: Simona Vetter Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/vboxvideo/vbox_drv.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvid= eo/vbox_drv.c index bb861f0a0a31..569fd7b60115 100644 --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c @@ -46,7 +46,12 @@ static int vbox_pci_probe(struct pci_dev *pdev, const st= ruct pci_device_id *ent) if (!vbox_check_supported(VBE_DISPI_ID_HGSMI)) return -ENODEV; =20 - ret =3D aperture_remove_conflicting_pci_devices(pdev, driver.name); + /* + * Use devm variant to automatically restore sysfb if probe fails. + * This ensures the user doesn't lose display if our probe fails + * after removing the firmware framebuffer (efifb/simpledrm). + */ + ret =3D devm_aperture_remove_conflicting_pci_devices(pdev, driver.name); if (ret) return ret; =20 @@ -84,6 +89,12 @@ static int vbox_pci_probe(struct pci_dev *pdev, const st= ruct pci_device_id *ent) =20 drm_client_setup(&vbox->ddev, NULL); =20 + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; =20 err_irq_fini: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-qv1-f100.google.com (mail-qv1-f100.google.com [209.85.219.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C2AA31062C for ; Mon, 29 Dec 2025 21:59:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045584; cv=none; b=UCbRt5dZQsBhhQ5fZslmLE9CGANfO17GvuNLZWDHmmVBli6g5eMDkK1vgSZNqFWnCGsBOQz2BL28mDQxFF1OlrLPNEau9RxBJxtg2IgJb4glnJUXuWRT2d9Pv7CH6TS53Pufj903Fhzngoc6Ajcgzun+2Epf1crkF0H+PdwR1Cs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045584; c=relaxed/simple; bh=dQpvv6P8rpsc9VhbHXErM++gAE6dp88Qa5WuWmijx9Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=COxyDODF17wV+At7jco/Hq4MI7a8LsCNRFO+OA4Ek6Pc4HEmQ1PJEDyz5w+b9l1rft4MND+82h6Hgx/Un6Is1iG5etEo/O0lgzmImIgoLBampHu2UaDB9/EVZEypekDG4I3XuAillw/FpPavviWadKSF/shBx+9JmRK+fsXnwFc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=gDQIf74g; arc=none smtp.client-ip=209.85.219.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="gDQIf74g" Received: by mail-qv1-f100.google.com with SMTP id 6a1803df08f44-8888a444300so102285146d6.1 for ; Mon, 29 Dec 2025 13:59:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045580; x=1767650380; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4cjHGpdx5LLmnDfUfy3cg6m+WR+7JCISjjlWlDNw0F4=; b=KX3VPLcp/L/Gh9idporYBKZqcVJVrQ0X/zG17ZRU4xYs2A2GiVNP1jTUAgaGW2FLaq F7X0QCVSIkpssk1PrJLJhmm3Z8u++pel424Rq0C07VRT1Z9sg49pxU0IO9VPy3Mz6vJ9 B/JoKiF0ftt0fiYAydF8xOcJfjdq9vkUwnP32vlgTXKW9lkNCRrDD3ePZRdRS+5JpB1M Nkvv+AmnLR0Qn63R04CwdMeSJRwolqSgOuo69T+U8rnVvuIz/7X/3TJts74fjgOC+pOm ibUfFN3YLIgSkajG0Evblkx3COjdNaL+aSD4hXNnjzHgDBzRRYyachRnokftbAvmNnzr 8e6w== X-Forwarded-Encrypted: i=1; AJvYcCWQ3UbRjKDmzXsZEpaOanD5kZo4JdgGtLaRKYRmsOEJsiE40WRqefDfqQ+F5rm7PQV9rK/9AY2tgt9dhO0=@vger.kernel.org X-Gm-Message-State: AOJu0YwfK6X6YA/j9DiiEBLVjqSWr7MQV08FzIVb5TVIsk6rBaf4hBYf ri2T346Mc0hlHrhevuF9kksnR/91MIVkOzdSB3sN444lYeR4F0deJAhaYDbiSy1tUvEAoQYnEOn Ta8G0pXDYuwwgbrabJyADwsEw5Y9qcLv5sakYSmIqGO08O4Sjg59wZ2A5Lg8DhNQUwv23q0Q4C/ QNIRGdCa+xYB73rKvDpR+qewQzgq0urh2XZ29AklgCY/1jz16Y+of0Sqn1OasdkrtwA6s0rgBRl DsPVMyyIMJvZOG6 X-Gm-Gg: AY/fxX5+DxHYlrXmpn8DTSFN5d0iXBNHN/RCyCzOCWDLDos76EXASEK5DJ4F6NwxX+Z Q18wAYy5GUQ6MhOUIiiCh7FKwLoFN0Tgx3DCKYjb+9SPmtsVrmyO7qZbmtTAWXWWoI1boMVhTAk D554P9BcId+aMOtO/Npb6CizoKDjgn1mwr9YFNgEd42lGtZMCh1Ebq6b9NY+aRR4DILD3Sr0IEn 2+7K6UBfCUa5vulF0nPlUEOd91hF8tVFglBAhr/VFQDX+Zi1nU2/hHvxD8V2IO3hrSGr7UHUR9X qUONCsCk0njlKn+NFYNGBwCMCWnpwSwngd1+57B9u0ON13ed3+clmOeI95UoqGm6icSR5/IkJxR cYUHzd8jVhWL2roAscKcWOCsMazrnL9/SQdtGjuaebJ5otqYLm0PCeBU7VHextGCAQDkuTkKKo8 2n43/5qoiGcOzok1sA3vfjAUDlWAiUPjbNlieNzwgh5UDY X-Google-Smtp-Source: AGHT+IEyGUAHia8nc0YQwTidbTs1ZxZUdWVpoV343Bd288Xe4YJVsM4jAlQj8GSLFy8oOt15RzdG/wWH12sF X-Received: by 2002:a0c:f990:0:b0:880:6719:db40 with SMTP id 6a1803df08f44-88d854e1679mr361695896d6.64.1767045580148; Mon, 29 Dec 2025 13:59:40 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-117.dlp.protect.broadcom.com. [144.49.247.117]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-88d95889cbasm42509556d6.13.2025.12.29.13.59.39 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:40 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qv1-f72.google.com with SMTP id 6a1803df08f44-88a3356a310so266283186d6.3 for ; Mon, 29 Dec 2025 13:59:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045579; x=1767650379; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4cjHGpdx5LLmnDfUfy3cg6m+WR+7JCISjjlWlDNw0F4=; b=gDQIf74g0f4XN814wGOEeni7K74zctudEumOwUwtDut0irXYw8qeKDbeygAknuCbjW TXPFwcAJhveCNs5mBxBt9XOqkWHPnqycUegmsVGP/0IVTgvWXjUlRARmNSF9neLrlUbf fVA4cOKJgsQW1IvzVSMY0Qa5XLoI3dBhQ4eGg= X-Forwarded-Encrypted: i=1; AJvYcCXoZeetOBWMXran0HERyL8JLu0gPDyCRozMpyRcwNs5iXsX/PyOM6+0jYUUT+EKY+CadzcKI9aDN09Mzsc=@vger.kernel.org X-Received: by 2002:a05:6214:458b:b0:882:437d:282d with SMTP id 6a1803df08f44-88d82de8226mr482656256d6.30.1767045579087; Mon, 29 Dec 2025 13:59:39 -0800 (PST) X-Received: by 2002:a05:6214:458b:b0:882:437d:282d with SMTP id 6a1803df08f44-88d82de8226mr482656146d6.30.1767045578716; Mon, 29 Dec 2025 13:59:38 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:36 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Deepak Rawat , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 09/12] drm/hyperv: Add sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:15 -0500 Message-ID: <20251229215906.3688205-10-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Register a devm action on the vmbus device to restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Unlike PCI drivers, hyperv cannot use the devm_aperture_remove_conflicting_pci_devices() helper because this is a vmbus device, not a PCI device. Instead, register the sysfb restore action on the hv device (&hdev->device) which will be released if probe fails. Cancel the action after successful probe since the driver is now responsible for display output. This ensures users don't lose display output if the hyperv driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Deepak Rawat Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: David Airlie Cc: Simona Vetter Cc: linux-hyperv@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c b/drivers/gpu/drm/hype= rv/hyperv_drm_drv.c index 06b5d96e6eaf..6d66cd243bab 100644 --- a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c +++ b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c @@ -8,6 +8,7 @@ #include #include #include +#include =20 #include #include @@ -102,6 +103,11 @@ static int hyperv_setup_vram(struct hyperv_drm_device = *hv, return ret; } =20 +static void hyperv_restore_sysfb(void *unused) +{ + sysfb_restore(); +} + static int hyperv_vmbus_probe(struct hv_device *hdev, const struct hv_vmbus_device_id *dev_id) { @@ -127,6 +133,17 @@ static int hyperv_vmbus_probe(struct hv_device *hdev, =20 aperture_remove_all_conflicting_devices(hyperv_driver.name); =20 + /* + * Register sysfb restore on the hv device. We can't use + * devm_aperture_remove_conflicting_pci_devices() because this + * is a vmbus device, not a PCI device. Register on &hdev->device + * so it fires if our probe fails after removing firmware FB. + */ + ret =3D devm_add_action_or_reset(&hdev->device, hyperv_restore_sysfb, + NULL); + if (ret) + goto err_vmbus_close; + ret =3D hyperv_setup_vram(hv, hdev); if (ret) goto err_vmbus_close; @@ -152,6 +169,12 @@ static int hyperv_vmbus_probe(struct hv_device *hdev, =20 drm_client_setup(dev, NULL); =20 + /* + * Probe succeeded - cancel sysfb restore. We're now responsible + * for display output. + */ + devm_remove_action(&hdev->device, hyperv_restore_sysfb, NULL); + return 0; =20 err_free_mmio: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-oa1-f98.google.com (mail-oa1-f98.google.com [209.85.160.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E14331076D for ; Mon, 29 Dec 2025 21:59:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045587; cv=none; b=HdMU1T0pbq+9sug+DTUKyFyi7msy6blzrl2KzQq2elhMWpoUpPqV86g/4Vnfj4At0I65OPCSjcwTwXiqgzkGwAcTPnCE1tApxcPVwB168aOT0dqwCKDdxCXR4xlDjtugvVZ+M7kGWoXMIM558vWS/KBZgtLUZsWNXdoeFAmqX40= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045587; c=relaxed/simple; bh=RPSJS+jBwiBieHmZlL9c8OFFrA3PH+L7A3JbON+UxCw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mS7Pb3mXB1L5BTu3xXRie7e7jv137LF9RpsaVUfkDnBmUYNabeY9Wc5emniXyUkeiYZLqcRETrIyo/zHwadOWtIH9JR0HdLJEEFOEEbrc2TnlGmCZSq6dKOOxRe58N5eOW2+F+wHzyqrmMpVMIjSH7Eg8ut9sMNe4oDZKmPseiA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=KFkCvuhr; arc=none smtp.client-ip=209.85.160.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="KFkCvuhr" Received: by mail-oa1-f98.google.com with SMTP id 586e51a60fabf-3f4f9ea26aaso6654986fac.0 for ; Mon, 29 Dec 2025 13:59:45 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045584; x=1767650384; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Ud7EWqvaAYC+L/BMEOnAHtOcyfh1O0xHeiVDUtFFCbY=; b=Eatp75Ytepo3V7JoMJ3VucfZFebZtU6qk+bGJhwD+O/nB/djZujwrDMDe89g1dTwj8 hu+ak4wXj616dv2G388w6/FGwmfAdQ9WR1apNE5SIdXfm+wdQXRwMBvi9VjbejSHobr6 5LBWmG9QcR1PfNRoqwQJ0SrVNGxbyTrw17+H74sVdWZje5L1R8SRKfuXktBkzQR3pNzR o+VJYiPED+WfFea0rsVUEXKcrgjAcebHvB/6jYtxJYoH4Dh5+20n+ep22vU1x17bf5Ia w4x2PCmH9CEA7XrXvJoSLhll7qRaZtssKnR7sRfJhcROQUgfN5RdpzATTayw3w5IdF8f UpWg== X-Forwarded-Encrypted: i=1; AJvYcCV8YSAiHh7JPtq5Llr61pKBATGM1R/Tff4i5FJis0cRJdaP2HcsMLPfL1o5wG0C6U/Dk4Y3+Oco2GPvnOc=@vger.kernel.org X-Gm-Message-State: AOJu0YyzvdwHtXxsWIUiH+YeGug3OahAhuYhZrTxroGX00dkDDMQlYqP //DwA6oLviqLJEHU5+ygJ0J/7qmXMT324tdIXTRDEOOxPBjsVR0JdGzPxG8WxjtU6y7lZ9LuQw1 vAxeClziP3X400DkFoCgPr0MTg0F6KNU6SrLbPHEdWBoyefBoyLMJ5YQS94xsqs6JeJZcy38vde SrsNf6EwPJaDnzLK3uAgts7XOXvkMvz1j85i6cnYKSBv0M/yS9MlskaIaG880sjIE0QHKDzsRrs tJDeo1uZTsu3Ta7 X-Gm-Gg: AY/fxX71xFgcA3fjw118fLL2qrQ2BcAx9Kc80XGwgiFJT7N6sCcJ7WG0iXGzyOfa+Kj xWWRZgBnxrP+pLPfw9uh9cuMhGoZc4Cf13p/ilyrxcinypg2HWaoica/m4+RgenJSmcgcvHxjHd FuYxMH8scjcheN2gcdWuyOrTqG9ItxkpkIAYLwIhrbq9kP0kkOjwDSuyWjvKrETUmii0rUhuqEI JFK2Xi37NVJHVV+F1c/fZ4E3PPgbe3mRbjPK8hcN7fAJOJBJeBlg+f7d1FQrdBGukQVk47MraWE FkB8bGjJPJxsk+F5o3gCVcA70fbFYngo3fojBIfGgIkuulvRfd9QfHvzQqj36G2tdbXBAXo/jiW 6nFUJOcfkoLJmsqugTwZcl3FOx6L68pX7jKF/X/NPRbid5uAwe3R7ZUN7vfDUYJ/EixBSlU+MCS suA94Q0F5PpmiQwR7YVJSuCRL4UEqP4F2Mfyx3Xo0= X-Google-Smtp-Source: AGHT+IGhh4eHxXz5mweG/rseZK/ttS6mSMcUrn3XWbRxPvnJo8yeqDc0GRLg5B1zNA2wXV7F/anGdTH19Esg X-Received: by 2002:a05:6871:61ca:b0:3fa:966:a859 with SMTP id 586e51a60fabf-3fda56c7d2emr17453612fac.42.1767045584277; Mon, 29 Dec 2025 13:59:44 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-2.dlp.protect.broadcom.com. [144.49.247.2]) by smtp-relay.gmail.com with ESMTPS id 586e51a60fabf-3fdaabd2ebdsm3226430fac.13.2025.12.29.13.59.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:44 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4f1dea13d34so228907181cf.1 for ; Mon, 29 Dec 2025 13:59:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045580; x=1767650380; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ud7EWqvaAYC+L/BMEOnAHtOcyfh1O0xHeiVDUtFFCbY=; b=KFkCvuhrcjDlXv8Cqcxj9trPCi18y10yq051JNs7OFG1CDjt4qPtA6bYbW18VG8QWZ N9G3L6NeT5WR0YkASj7sC+SgH9Y0FyOQgdtHO25ktM2p55MCAveTn//Br0KOXHxHaVOw UlrYpDWifklM3OkGdoS+CXd0JgPbhTHDKkEgQ= X-Forwarded-Encrypted: i=1; AJvYcCUEjesy9GfDorcBs+J17gBkNgmKl+ikmpOU7tsHfIMx0axTnHbSCtOxKSqGq2uWYv2CkI6xojOPzj5K+hQ=@vger.kernel.org X-Received: by 2002:a05:622a:2b0a:b0:4f1:b714:5864 with SMTP id d75a77b69052e-4f4abbcc5cfmr460052011cf.0.1767045580449; Mon, 29 Dec 2025 13:59:40 -0800 (PST) X-Received: by 2002:a05:622a:2b0a:b0:4f1:b714:5864 with SMTP id d75a77b69052e-4f4abbcc5cfmr460051871cf.0.1767045580088; Mon, 29 Dec 2025 13:59:40 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:39 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Dave Airlie , Thomas Zimmermann , Jocelyn Falempe , Maarten Lankhorst , Maxime Ripard , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org Subject: [PATCH 10/12] drm/ast: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:16 -0500 Message-ID: <20251229215906.3688205-11-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. This ensures users don't lose display output if the ast driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Dave Airlie Cc: Thomas Zimmermann Cc: Jocelyn Falempe Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: David Airlie Cc: Simona Vetter Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/ast/ast_drv.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c index b9a9b050b546..8e6c7cbafa59 100644 --- a/drivers/gpu/drm/ast/ast_drv.c +++ b/drivers/gpu/drm/ast/ast_drv.c @@ -310,7 +310,12 @@ static int ast_pci_probe(struct pci_dev *pdev, const s= truct pci_device_id *ent) struct drm_device *drm; bool need_post =3D false; =20 - ret =3D aperture_remove_conflicting_pci_devices(pdev, ast_driver.name); + /* + * Use devm variant to automatically restore sysfb if probe fails. + * This ensures the user doesn't lose display if our probe fails + * after removing the firmware framebuffer (efifb/simpledrm). + */ + ret =3D devm_aperture_remove_conflicting_pci_devices(pdev, ast_driver.nam= e); if (ret) return ret; =20 @@ -426,6 +431,12 @@ static int ast_pci_probe(struct pci_dev *pdev, const s= truct pci_device_id *ent) =20 drm_client_setup(drm, NULL); =20 + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; } =20 --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-qv1-f98.google.com (mail-qv1-f98.google.com [209.85.219.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA6DF310785 for ; Mon, 29 Dec 2025 21:59:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045588; cv=none; b=qTVw24RDmyonlsRPDNPpYbz66clzDESe39RXvvvhqL9HxVi8U3TRfeW59sA+FPhffJVCr1PNcIEk4BcOhF4oQ/qpANYYnlCnmccAdo9IFqj399m0fORuucGKMJHVSKdKwJ6RlqYYWfEqYNcfnuhHkjU+qElM90FotYZKYQE/z60= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045588; c=relaxed/simple; bh=IyNAce/gjDKl8/1PEqfEt2kXbFAdpNjKL4WWOlBvphg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=KZQLvRHVqE0SqLCBxmINcg5Pkx9C4r79z/J+wg6Y/8R5mTC+2pvtRbyG1UPeZOCFtxI67TQMah6+AbmhoepYDzzOP75sY5MbTI0QBHyV53s9Rng6TntAmc+C93u0NPmKF7bJxOL2ni4lp6Ri1ptxO7wGdHoeapeqyMpGlOr0sNU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=VDRsJlYO; arc=none smtp.client-ip=209.85.219.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="VDRsJlYO" Received: by mail-qv1-f98.google.com with SMTP id 6a1803df08f44-8888a444300so102285656d6.1 for ; Mon, 29 Dec 2025 13:59:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045585; x=1767650385; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IB8+29ViFF3HgSBOU+iv2rB43ubUg7MMKbsWRsTRATY=; b=dG7K2YZrYDNspdAgboVmOm9y7x6HLY3VK62oCBibmdk/q5q5Cg85X9qcwaGY6TYY7P uAZicYiXbBeQ5VDAygFIBjU4baRTNwHwcc/T88L53H5R5aRUoPQYrJHE78QATHu8JaVU tVvUnLzAyyH2cuVr3mlICPLJhQZSCEKOFWM9Nvl0OmTa2Rw+ELazYRUeLoj5Co8ZznxP b696PfTcfMZSea3PwjO3LYO2WLkNy7QZraANkRzurhFlYOlodDxuJaoLQABDsjVmq846 Ju5YB0b5lyVNtUdxWxP08GNA5CVDo+v8tzjWa8333p/ShQdj1RvWsj6FiSQDC+rRg158 Ltjw== X-Forwarded-Encrypted: i=1; AJvYcCVZZL/pnI4mrQGnhEteFn9wHJD7AxPT52FgZuK+0/3nvBo9+0aAfSFIbieQB2I0Gv1eGRk7xdctK3k/+y8=@vger.kernel.org X-Gm-Message-State: AOJu0Ywdkl3KkHGklIjLQ1MbhRvNNOKtT3Kw78v0K0gxhiI9PHI/BA4K SRaQFH9dUk0yWXyNRLzgz19JYNzDPuV/pvHNwHqp51mQc8erJG154dvXk2s0+NqDu76f6a9Vqz1 UpLKccaW2pLe3Hu7tRbQ+yjeunl+9a2ypTYmEDGSUF9PQ07G8eR9gLQqE6dbBpZVUXnN4/EAXBS 5ozs4VPyUwqvh1tcRzTqZwPURpJVDfiyPqjgKmQfeF2lNygbBUMVALY4NfM3vdcdhhSVRgsrZzF SzPfVlkMWnObYgP X-Gm-Gg: AY/fxX4veTg4lZZreWRmegUztrA17U9EB3W4aB5G7LUiFObxbkigoJ/xIS/AAiYpluJ qmNYFOahUYRYnCytJu4ZyWGPMpdVQNJa2JfipH5hNcezJS37uMDhoz1fQVPMFmkZb0YVvYpzHoC 7N31qfI/AYIvE5o+7QPoS4U3ZNBVkUMKstHoswYQRAlzoan1FDqJ1oYler2W8R+C6zr/Lt2Rp2f eZAfMXzvgjiGeS8X1erGceELJZ/I7COvTlUglYFhKVcFDxVyIf72SszCUrk3ogY170CM2YoDesG /9xH6HhCab6eGUTuAai68Sr0Ih1rOWRB97NuS1cOnEo6DPUgYNW9lkI/ugfSdGEEZu5AZdwoA/F Q+ala+fUaucFdVnuoEoXEmDvkCFa22br+Pac01A0FBny5DR7QHe/23fXGFxEjTt3leln7C9UOXU aOKPtceT3dud4tW3aGsv6ZEq/TaPtjCZJzJ0WSsj8= X-Google-Smtp-Source: AGHT+IHTycB8LPoOD1GFQyu9c8f8W6YDI9bYdjJmeT5X1QVl89trGD3Vr4y8/KOGq/LHVN25u6xXRXlzVN7z X-Received: by 2002:a05:6214:248b:b0:70f:a4b0:1eb8 with SMTP id 6a1803df08f44-88d8203f029mr513090346d6.13.1767045585524; Mon, 29 Dec 2025 13:59:45 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-2.dlp.protect.broadcom.com. [144.49.247.2]) by smtp-relay.gmail.com with ESMTPS id 6a1803df08f44-88d94fcc0e5sm42173716d6.3.2025.12.29.13.59.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:45 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8b2e2342803so2213598485a.3 for ; Mon, 29 Dec 2025 13:59:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045584; x=1767650384; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IB8+29ViFF3HgSBOU+iv2rB43ubUg7MMKbsWRsTRATY=; b=VDRsJlYOw9x6GQA24mgP6SEoOMzvjGg0A1+6b6Kh4Vg3IRbGobpCwBomZ7rMU42fLk ZbVx5n/JCD6sT8+aH/jNtKgMV1bcHCnHJFAVfes5eIpUSNNWj7Zzo1qywNVCYvQD5hp1 ZWdeHdUzHeMkO3nablR31qTl6S5gCTkNBj47A= X-Forwarded-Encrypted: i=1; AJvYcCXYhC0ni780VmCwDgTiftRRETRcUtC1kjiY+LprrvsboO6dwRr0/RNC1Spqm2wBhg63+ydwt30cc4pcLzo=@vger.kernel.org X-Received: by 2002:a05:620a:2911:b0:89e:b8af:f72d with SMTP id af79cd13be357-8c08fa99987mr4700269885a.57.1767045584538; Mon, 29 Dec 2025 13:59:44 -0800 (PST) X-Received: by 2002:a05:620a:2911:b0:89e:b8af:f72d with SMTP id af79cd13be357-8c08fa99987mr4700268685a.57.1767045584169; Mon, 29 Dec 2025 13:59:44 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:40 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Airlie , Simona Vetter , amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 11/12] drm/radeon: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:17 -0500 Message-ID: <20251229215906.3688205-12-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. This ensures users don't lose display output if the radeon driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Alex Deucher Cc: "Christian K=C3=B6nig" Cc: David Airlie Cc: Simona Vetter Cc: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/radeon/radeon_drv.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/r= adeon_drv.c index 87fd6255c114..225f716d5db9 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -324,8 +324,13 @@ static int radeon_pci_probe(struct pci_dev *pdev, if (vga_switcheroo_client_probe_defer(pdev)) return -EPROBE_DEFER; =20 - /* Get rid of things like offb */ - ret =3D aperture_remove_conflicting_pci_devices(pdev, kms_driver.name); + /* + * Get rid of things like offb. Use devm variant to automatically + * restore sysfb if probe fails. This ensures the user doesn't lose + * display if our probe fails after removing the firmware framebuffer + * (efifb/simpledrm). + */ + ret =3D devm_aperture_remove_conflicting_pci_devices(pdev, kms_driver.nam= e); if (ret) return ret; =20 @@ -361,6 +366,12 @@ static int radeon_pci_probe(struct pci_dev *pdev, =20 drm_client_setup(ddev, format); =20 + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; =20 err: --=20 2.48.1 From nobody Sun Feb 8 11:05:58 2026 Received: from mail-pl1-f226.google.com (mail-pl1-f226.google.com [209.85.214.226]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D62C3101C2 for ; Mon, 29 Dec 2025 21:59:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.226 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045589; cv=none; b=YUrOHneSrV9i32vekuWsGHVSydOQ5bitbpoVw2EdQnyLn1kl53nfeoyNaa1T5dSziyGSLXlQfTuNkik8zj7QjsCgOlCGOFW66MllzNcIpLf5tiIEBE0SGNLHR8XzIBgFsNBHw0LA/tIwOgcrZ8gj6FfCDNDJAL8TbQYeVBczncY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767045589; c=relaxed/simple; bh=MCmZMQpuKmERVQMPsv7VnKQwRQOFoHYWjZ3czevXg6I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m2XXTkgprktNqo8NBFtfYLsDdikuGTCMLk1iNhVx1wXkkiPXcJgWU3dA1BnP2NTyqhxtDkk+P/I9SzsWlDjS83+A4Ggz4onp8ubxAdBWUJzxon0K5HK6WuTfJ8qbiMrJ+8+wvsXLqnTffVDbZ1NZLpZLgzEa+9kfVs5KHa2UOXE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=MSgek0ap; arc=none smtp.client-ip=209.85.214.226 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="MSgek0ap" Received: by mail-pl1-f226.google.com with SMTP id d9443c01a7336-2a07f8dd9cdso98841605ad.1 for ; Mon, 29 Dec 2025 13:59:47 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767045587; x=1767650387; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=eqxbMiL7ohe4dc/pwMvCfPcqWUGF7TjyIlnwnpMs1gk=; b=mN6/kfh9hdn7jly8Sj6n+0bAmDk8bA2sjTlPOs0W9LM9in2sb4kh8smbigJVlN3kiv jqJ7yYAC4M9HbiGh6Hn+aDt7hCVM720j8AD9EdbroTPX65Eim9/Oj5dhsEUzVTd6j2M/ d7AJ6wdytY686+u4RLUp80Fuh7C81vOU4GH7xKw8duxAYxAR4Scaa5HiafLG3LvUS8dI ubs7ZFurcHTfKtqHFRH+2raVOs2tq/pfeaTTED9dNd/0Or4kDojmYyj/N7zpxbfUWaNz dNRhCljokg/BeLo1cPu8qOiylEddxs5RUxqlaHBoFCCmpN03dclzXJS2wYt2cazSVGGs PNMA== X-Forwarded-Encrypted: i=1; AJvYcCUnKC5xdzD0TjBNYBgvePPm8sqQv6GKDtmhqNyP71Uf5EEF1s4cAuy5AaVkuXyLO1HtjNmE8UJbPryaNUs=@vger.kernel.org X-Gm-Message-State: AOJu0YxcVoxaQLZoQomTaUPLju9PbJ+v7up84bDYIphNTE3828+S7K/Z 6vK40K9S3jKFKWL46C1H/nZMiEFns+thtGIDepbjVO6sVrHWO3cmTwTRsZqVUTodo2HpzKM7FOw Cs41pP+EfKyFp8crb4MKbPC6oPoN3je7PNhUYHQeu6Tmwv6eM49I/7xr6kpjL0OAp76X7YbagXt i9Rfp5tI8x0eXqceX3nsCq2GqSOLx5MpJgd2uBgcYb1UUVWxhoTqRtNHpVmI3H08GOTxAalZ65Q xn4h0RefLGs7gmq X-Gm-Gg: AY/fxX4JgDl5GHU6lcaVRRjNIM4YVjcz0p8CXFzsdKZuIKAzSyCbEwV095mw+JI+F3V WtfHUKGfvFjkeIdwOK5D0NbzEPdP8sxBxgflRRn/7S0mnA8fS0+Biwb1sQJQIsrKx73KThEKGUN Yavg06vu36nf9B5s99wYsmczJOBVyXDpgOivz7ttcwhodo6y12B0ZsvdPbI6157SsF3a70minMo OGhizp1BNGbhfZwaHu9dMTD9NCBJd2X/8U6V/pPqDbnEJ6026Ivk97vMK4CpSGfRn0ynLAsNTxo ASF7DG/BvdppX74D0vh0iKXzv045rJIt3hY1tT6PTbJ9QpLVwdI+k+5zWzArSNkAIb8v3lzYR+d 4DXj1/rTGKeEAJcBp7oLZUjZskabTcjYEBEm82lamr33nfxTIw4wqcc+Zts4O0au99FjKx9gCe+ JEW0AmL0b/IorrNOQb6w6iMqpXGHz/mKD1R6okmRKH05je X-Google-Smtp-Source: AGHT+IH6oqoMiU16N2fusgOQd45YDn9L8427D4U7G9m3BxvZsVnK5GgEbHWEKFmJSXMqFEQb4IGQvgWRtTFI X-Received: by 2002:a17:902:e846:b0:246:7a43:3f66 with SMTP id d9443c01a7336-2a2f220d878mr345135385ad.7.1767045587419; Mon, 29 Dec 2025 13:59:47 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-117.dlp.protect.broadcom.com. [144.49.247.117]) by smtp-relay.gmail.com with ESMTPS id d9443c01a7336-2a2f3eae07bsm35905555ad.33.2025.12.29.13.59.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 29 Dec 2025 13:59:47 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8b1d8f56e24so2399905985a.2 for ; Mon, 29 Dec 2025 13:59:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1767045586; x=1767650386; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eqxbMiL7ohe4dc/pwMvCfPcqWUGF7TjyIlnwnpMs1gk=; b=MSgek0apE+U+uqUmSBP471HsvASc0fDspC1G4pIpXunO94rzQb/75adp9onQ7I3VaY GgZyktOo1vyDrG2DBGEixd+wzOHH6Lkk6pl4xIzEqJTFvyJq5vFFnOgZjZHnh46GqOdA bVZskUpYjxTk5ZQPYnPACJcd2r78Gkn12+NsE= X-Forwarded-Encrypted: i=1; AJvYcCW0RoXG8iiBLarezvBONRPk8EAiYV/knqkjMqGpUa4xhDruLjBZbhPHYsjKRZAgSXL0AcHfFrCWorrKX0I=@vger.kernel.org X-Received: by 2002:a05:620a:44d5:b0:8b2:e179:feb7 with SMTP id af79cd13be357-8c08fa99a77mr5321267385a.49.1767045585854; Mon, 29 Dec 2025 13:59:45 -0800 (PST) X-Received: by 2002:a05:620a:44d5:b0:8b2:e179:feb7 with SMTP id af79cd13be357-8c08fa99a77mr5321265485a.49.1767045585459; Mon, 29 Dec 2025 13:59:45 -0800 (PST) Received: from localhost.localdomain (pool-173-49-113-140.phlapa.fios.verizon.net. [173.49.113.140]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-88d9759f164sm231530026d6.24.2025.12.29.13.59.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Dec 2025 13:59:44 -0800 (PST) From: Zack Rusin To: dri-devel@lists.freedesktop.org Cc: Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Simona Vetter , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 12/12] drm/i915: Use devm aperture helpers for sysfb restore on probe failure Date: Mon, 29 Dec 2025 16:58:18 -0500 Message-ID: <20251229215906.3688205-13-zack.rusin@broadcom.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20251229215906.3688205-1-zack.rusin@broadcom.com> References: <20251229215906.3688205-1-zack.rusin@broadcom.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" Use devm_aperture_remove_conflicting_pci_devices() instead of the non-devm variant to automatically restore the system framebuffer (efifb/simpledrm) if the driver's probe fails after removing the firmware framebuffer. Call devm_aperture_remove_conflicting_pci_devices_done() after successful probe to cancel the automatic restore, as the driver is now responsible for display output. This ensures users don't lose display output if the i915 driver fails to probe after removing the firmware framebuffer. Signed-off-by: Zack Rusin Cc: Jani Nikula Cc: Joonas Lahtinen Cc: Rodrigo Vivi Cc: Tvrtko Ursulin Cc: David Airlie Cc: Simona Vetter Cc: intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org --- drivers/gpu/drm/i915/i915_driver.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915= _driver.c index c97b76771917..f9efeb825064 100644 --- a/drivers/gpu/drm/i915/i915_driver.c +++ b/drivers/gpu/drm/i915/i915_driver.c @@ -506,7 +506,12 @@ static int i915_driver_hw_probe(struct drm_i915_privat= e *dev_priv) if (ret) goto err_perf; =20 - ret =3D aperture_remove_conflicting_pci_devices(pdev, dev_priv->drm.drive= r->name); + /* + * Use devm variant to automatically restore sysfb if probe fails. + * This ensures the user doesn't lose display if our probe fails + * after removing the firmware framebuffer (efifb/simpledrm). + */ + ret =3D devm_aperture_remove_conflicting_pci_devices(pdev, dev_priv->drm.= driver->name); if (ret) goto err_ggtt; =20 @@ -866,6 +871,12 @@ int i915_driver_probe(struct pci_dev *pdev, const stru= ct pci_device_id *ent) =20 i915->do_release =3D true; =20 + /* + * Probe succeeded - cancel the automatic sysfb restore action. + * We're now responsible for display output. + */ + devm_aperture_remove_conflicting_pci_devices_done(pdev); + return 0; =20 out_cleanup_gem: --=20 2.48.1