From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
intel-gfx@lists.freedesktop.org
Cc: intel-xe@lists.freedesktop.org
Subject: Re: [PATCH 01/19] drm/i915/vga: Register vgaarb client later
Date: Tue, 09 Dec 2025 12:23:38 +0200 [thread overview]
Message-ID: <ffced987dae21837148d7e9216e90e77b156c085@intel.com> (raw)
In-Reply-To: <20251208182637.334-2-ville.syrjala@linux.intel.com>
On Mon, 08 Dec 2025, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Currently we register to vgaarb way too early. Thus it is
> possible that the entire VGA decode logic gets nuked via
> GMCH_CTRL before intel_vga_disable() has even disabled the
> VGA plane. This could even cause a system hang because
> we'll be unable to turn off the VGA plane gracefully.
>
> Move the vgaarb registration into intel_display_driver_register().
> I suppose we could do it a bit earlier (after intel_vga_disable()),
> but not convinced there's any point.
>
> Also the error handling here is pointless since the
> registration can't fail (unless the device isn't a VGA class
> in which case all VGA decode logic should aleady be disabled
> by the BIOS via GMCH_CTRL). But let's toss in a WARN to catch
> any future breakage of vga_client_register().
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
After this, intel_vga_register() is only called for HAS_DISPLAY(), while
previously it was called unconditionally.
It's probably fine?
Other than that,
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> ---
> .../drm/i915/display/intel_display_driver.c | 18 +++++++-----------
> drivers/gpu/drm/i915/display/intel_vga.c | 7 ++-----
> drivers/gpu/drm/i915/display/intel_vga.h | 2 +-
> 3 files changed, 10 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
> index 7e000ba3e08b..b149976f527b 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_driver.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
> @@ -214,16 +214,12 @@ int intel_display_driver_probe_noirq(struct intel_display *display)
>
> intel_bios_init(display);
>
> - ret = intel_vga_register(display);
> - if (ret)
> - goto cleanup_bios;
> -
> intel_psr_dc5_dc6_wa_init(display);
>
> /* FIXME: completely on the wrong abstraction layer */
> ret = intel_power_domains_init(display);
> if (ret < 0)
> - goto cleanup_vga;
> + goto cleanup_bios;
>
> intel_pmdemand_init_early(display);
>
> @@ -235,7 +231,7 @@ int intel_display_driver_probe_noirq(struct intel_display *display)
> display->hotplug.dp_wq = alloc_ordered_workqueue("intel-dp", 0);
> if (!display->hotplug.dp_wq) {
> ret = -ENOMEM;
> - goto cleanup_vga_client_pw_domain_dmc;
> + goto cleanup_pw_domain_dmc;
> }
>
> display->wq.modeset = alloc_ordered_workqueue("i915_modeset", 0);
> @@ -307,11 +303,9 @@ int intel_display_driver_probe_noirq(struct intel_display *display)
> destroy_workqueue(display->wq.modeset);
> cleanup_wq_dp:
> destroy_workqueue(display->hotplug.dp_wq);
> -cleanup_vga_client_pw_domain_dmc:
> +cleanup_pw_domain_dmc:
> intel_dmc_fini(display);
> intel_power_domains_driver_remove(display);
> -cleanup_vga:
> - intel_vga_unregister(display);
> cleanup_bios:
> intel_bios_driver_remove(display);
>
> @@ -566,6 +560,8 @@ void intel_display_driver_register(struct intel_display *display)
> if (!HAS_DISPLAY(display))
> return;
>
> + intel_vga_register(display);
> +
> /* Must be done after probing outputs */
> intel_opregion_register(display);
> intel_acpi_video_register(display);
> @@ -658,8 +654,6 @@ void intel_display_driver_remove_nogem(struct intel_display *display)
>
> intel_power_domains_driver_remove(display);
>
> - intel_vga_unregister(display);
> -
> intel_bios_driver_remove(display);
> }
>
> @@ -687,6 +681,8 @@ void intel_display_driver_unregister(struct intel_display *display)
>
> acpi_video_unregister();
> intel_opregion_unregister(display);
> +
> + intel_vga_unregister(display);
> }
>
> /*
> diff --git a/drivers/gpu/drm/i915/display/intel_vga.c b/drivers/gpu/drm/i915/display/intel_vga.c
> index c45c4bbc3f95..f13734cfd904 100644
> --- a/drivers/gpu/drm/i915/display/intel_vga.c
> +++ b/drivers/gpu/drm/i915/display/intel_vga.c
> @@ -135,7 +135,7 @@ static unsigned int intel_gmch_vga_set_decode(struct pci_dev *pdev, bool enable_
> return VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM;
> }
>
> -int intel_vga_register(struct intel_display *display)
> +void intel_vga_register(struct intel_display *display)
> {
>
> struct pci_dev *pdev = to_pci_dev(display->drm->dev);
> @@ -150,10 +150,7 @@ int intel_vga_register(struct intel_display *display)
> * vga_client_register() fails with -ENODEV.
> */
> ret = vga_client_register(pdev, intel_gmch_vga_set_decode);
> - if (ret && ret != -ENODEV)
> - return ret;
> -
> - return 0;
> + drm_WARN_ON(display->drm, ret && ret != -ENODEV);
> }
>
> void intel_vga_unregister(struct intel_display *display)
> diff --git a/drivers/gpu/drm/i915/display/intel_vga.h b/drivers/gpu/drm/i915/display/intel_vga.h
> index 16d699f3b641..80084265c6cd 100644
> --- a/drivers/gpu/drm/i915/display/intel_vga.h
> +++ b/drivers/gpu/drm/i915/display/intel_vga.h
> @@ -10,7 +10,7 @@ struct intel_display;
>
> void intel_vga_reset_io_mem(struct intel_display *display);
> void intel_vga_disable(struct intel_display *display);
> -int intel_vga_register(struct intel_display *display);
> +void intel_vga_register(struct intel_display *display);
> void intel_vga_unregister(struct intel_display *display);
>
> #endif /* __INTEL_VGA_H__ */
--
Jani Nikula, Intel
next prev parent reply other threads:[~2025-12-09 10:23 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-08 18:26 [PATCH 00/19] drm/i915/vga: Try to sort out the VGA decode mess Ville Syrjala
2025-12-08 18:26 ` [PATCH 01/19] drm/i915/vga: Register vgaarb client later Ville Syrjala
2025-12-09 10:23 ` Jani Nikula [this message]
2025-12-08 18:26 ` [PATCH 02/19] drm/i915/vga: Get rid of intel_vga_reset_io_mem() Ville Syrjala
2025-12-09 10:26 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 03/19] drm/i915/power: Remove i915_power_well_desc::has_vga Ville Syrjala
2025-12-09 10:27 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 04/19] drm/i915/vga: Extract intel_gmch_ctrl_reg() Ville Syrjala
2025-12-09 10:28 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 05/19] drm/i915/vga: Don't touch VGA registers if VGA decode is fully disabled Ville Syrjala
2025-12-09 10:29 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 06/19] drm/i915/vga: Clean up VGA registers even if VGA plane is disabled Ville Syrjala
2025-12-09 10:32 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 07/19] drm/i915/vga: Avoid VGA arbiter during intel_vga_disable() for iGPUs Ville Syrjala
2025-12-09 10:35 ` Jani Nikula
2025-12-09 12:17 ` Ville Syrjälä
2025-12-08 18:26 ` [PATCH 08/19] drm/i915/vga: Stop trying to use GMCH_CTRL for VGA decode control Ville Syrjala
2025-12-09 10:39 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 09/19] drm/i915/vga: Assert that VGA register accesses are going to the right GPU Ville Syrjala
2025-12-09 10:40 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 10/19] drm/i915/de: Simplify intel_de_read8() Ville Syrjala
2025-12-09 10:47 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 11/19] drm/i915/de: Add intel_de_write8() Ville Syrjala
2025-12-09 10:49 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 12/19] drm/i915/vga: Introduce intel_vga_{read,write}() Ville Syrjala
2025-12-09 10:52 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 13/19] drm/i915/vga: Use MMIO for VGA registers on pre-g4x Ville Syrjala
2025-12-09 10:53 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 14/19] video/vga: Add VGA_IS0_R Ville Syrjala
2025-12-08 21:07 ` kernel test robot
2025-12-08 21:18 ` kernel test robot
2025-12-08 22:22 ` kernel test robot
2025-12-09 7:55 ` [PATCH v2 " Ville Syrjala
2025-12-09 10:55 ` Jani Nikula
2025-12-18 16:56 ` Ville Syrjälä
2025-12-30 8:30 ` Helge Deller
2025-12-10 14:13 ` [PATCH " kernel test robot
2025-12-10 14:24 ` kernel test robot
2025-12-08 18:26 ` [PATCH 15/19] drm/i915/crt: Use IS0_R instead of VGA_MIS_W Ville Syrjala
2025-12-09 10:56 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 16/19] drm/i915/crt: Extract intel_crt_sense_above_threshold() Ville Syrjala
2025-12-09 10:57 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 17/19] drm/i915: Get rid of the INTEL_GMCH_CTRL alias Ville Syrjala
2025-12-09 10:58 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 18/19] drm/i915: Clean up PCI config space reg defines Ville Syrjala
2025-12-09 11:00 ` Jani Nikula
2025-12-09 11:01 ` Jani Nikula
2025-12-08 18:26 ` [PATCH 19/19] drm/i915: Document the GMCH_CTRL register a bit Ville Syrjala
2025-12-09 11:03 ` Jani Nikula
2025-12-08 19:11 ` ✗ Fi.CI.BUILD: failure for drm/i915/vga: Try to sort out the VGA decode mess Patchwork
2025-12-08 20:19 ` ✗ CI.KUnit: " Patchwork
2025-12-09 8:52 ` ✓ CI.KUnit: success for drm/i915/vga: Try to sort out the VGA decode mess (rev2) Patchwork
2025-12-09 9:07 ` ✗ CI.checksparse: warning " Patchwork
2025-12-09 9:35 ` ✓ Xe.CI.BAT: success " Patchwork
2025-12-09 11:31 ` ✗ i915.CI.BAT: failure " Patchwork
2025-12-09 15:57 ` ✗ Xe.CI.Full: " Patchwork
2025-12-10 19:14 ` ✓ i915.CI.BAT: success for drm/i915/vga: Try to sort out the VGA decode mess (rev3) Patchwork
2025-12-11 3:23 ` ✓ i915.CI.Full: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ffced987dae21837148d7e9216e90e77b156c085@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=ville.syrjala@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.