drm/i915/opregion: Cleanup opregion after errors during driver loading
Clean up the opregion state if something fails after intel_opregion_setup() is called. Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230308162503.3219200-2-imre.deak@intel.com
This commit is contained in:
parent
c4a1e57b35
commit
3e226e4a21
@ -1237,6 +1237,14 @@ void intel_opregion_unregister(struct drm_i915_private *i915)
|
||||
unregister_acpi_notifier(&opregion->acpi_notifier);
|
||||
opregion->acpi_notifier.notifier_call = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void intel_opregion_cleanup(struct drm_i915_private *i915)
|
||||
{
|
||||
struct intel_opregion *opregion = &i915->display.opregion;
|
||||
|
||||
if (!opregion->header)
|
||||
return;
|
||||
|
||||
/* just clear all opregion memory pointers now */
|
||||
memunmap(opregion->header);
|
||||
|
@ -60,6 +60,7 @@ struct intel_opregion {
|
||||
#ifdef CONFIG_ACPI
|
||||
|
||||
int intel_opregion_setup(struct drm_i915_private *dev_priv);
|
||||
void intel_opregion_cleanup(struct drm_i915_private *i915);
|
||||
|
||||
void intel_opregion_register(struct drm_i915_private *dev_priv);
|
||||
void intel_opregion_unregister(struct drm_i915_private *dev_priv);
|
||||
|
@ -531,7 +531,7 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
|
||||
|
||||
ret = i915_pcode_init(dev_priv);
|
||||
if (ret)
|
||||
goto err_msi;
|
||||
goto err_opregion;
|
||||
|
||||
/*
|
||||
* Fill the dram structure to get the system dram info. This will be
|
||||
@ -552,6 +552,8 @@ static int i915_driver_hw_probe(struct drm_i915_private *dev_priv)
|
||||
|
||||
return 0;
|
||||
|
||||
err_opregion:
|
||||
intel_opregion_cleanup(dev_priv);
|
||||
err_msi:
|
||||
if (pdev->msi_enabled)
|
||||
pci_disable_msi(pdev);
|
||||
@ -577,6 +579,8 @@ static void i915_driver_hw_remove(struct drm_i915_private *dev_priv)
|
||||
|
||||
i915_perf_fini(dev_priv);
|
||||
|
||||
intel_opregion_cleanup(dev_priv);
|
||||
|
||||
if (pdev->msi_enabled)
|
||||
pci_disable_msi(pdev);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user