[PATCH v3 03/37] drm/nouveau: replace drm_device* with nouveau_drm* as dev drvdata
Zhi Wang
zhiw at nvidia.com
Wed Jul 31 10:14:14 UTC 2024
On Fri, 26 Jul 2024 14:37:54 +1000
Ben Skeggs <bskeggs at nvidia.com> wrote:
> We almost always want to cast the pointer from dev_get_drvdata() to
> 'struct nouveau_drm *', so just directly store that pointer instead,
> simplifying callers, and fixing some clumsy naming of dev/drm_dev
> variables at the same time.
>
> Signed-off-by: Ben Skeggs <bskeggs at nvidia.com>
> ---
> drivers/gpu/drm/nouveau/dispnv50/disp.c | 17 ++---
> drivers/gpu/drm/nouveau/nouveau_display.c | 4 +-
> drivers/gpu/drm/nouveau/nouveau_display.h | 2 +-
> drivers/gpu/drm/nouveau/nouveau_drm.c | 78
> ++++++++++------------ drivers/gpu/drm/nouveau/nouveau_drv.h |
> 2 +- drivers/gpu/drm/nouveau/nouveau_platform.c | 5 +-
> drivers/gpu/drm/nouveau/nouveau_vga.c | 14 ++--
> 7 files changed, 58 insertions(+), 64 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c
> b/drivers/gpu/drm/nouveau/dispnv50/disp.c index
> 6d20d3c68fa7..58c986528ff6 100644 ---
> a/drivers/gpu/drm/nouveau/dispnv50/disp.c +++
> b/drivers/gpu/drm/nouveau/dispnv50/disp.c @@ -593,8 +593,7 @@ static
> int nv50_audio_component_get_eld(struct device *kdev, int port, int
> dev_id, bool *enabled, unsigned char *buf, int max_bytes)
> {
> - struct drm_device *drm_dev = dev_get_drvdata(kdev);
> - struct nouveau_drm *drm = nouveau_drm(drm_dev);
> + struct nouveau_drm *drm = dev_get_drvdata(kdev);
> struct drm_encoder *encoder;
> struct nouveau_encoder *nv_encoder;
> struct nouveau_crtc *nv_crtc;
> @@ -639,18 +638,17 @@ static int
> nv50_audio_component_bind(struct device *kdev, struct device
> *hda_kdev, void *data)
> {
> - struct drm_device *drm_dev = dev_get_drvdata(kdev);
> - struct nouveau_drm *drm = nouveau_drm(drm_dev);
> + struct nouveau_drm *drm = dev_get_drvdata(kdev);
> struct drm_audio_component *acomp = data;
>
> if (WARN_ON(!device_link_add(hda_kdev, kdev,
> DL_FLAG_STATELESS))) return -ENOMEM;
>
> - drm_modeset_lock_all(drm_dev);
> + drm_modeset_lock_all(drm->dev);
> acomp->ops = &nv50_audio_component_ops;
> acomp->dev = kdev;
> drm->audio.component = acomp;
> - drm_modeset_unlock_all(drm_dev);
> + drm_modeset_unlock_all(drm->dev);
> return 0;
> }
>
> @@ -658,15 +656,14 @@ static void
> nv50_audio_component_unbind(struct device *kdev, struct device
> *hda_kdev, void *data)
> {
> - struct drm_device *drm_dev = dev_get_drvdata(kdev);
> - struct nouveau_drm *drm = nouveau_drm(drm_dev);
> + struct nouveau_drm *drm = dev_get_drvdata(kdev);
> struct drm_audio_component *acomp = data;
>
> - drm_modeset_lock_all(drm_dev);
> + drm_modeset_lock_all(drm->dev);
> drm->audio.component = NULL;
> acomp->ops = NULL;
> acomp->dev = NULL;
> - drm_modeset_unlock_all(drm_dev);
> + drm_modeset_unlock_all(drm->dev);
> }
>
> static const struct component_ops nv50_audio_component_bind_ops = {
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c
> b/drivers/gpu/drm/nouveau/nouveau_display.c index
> aed5d5b51b43..fa30c97bcf90 100644 ---
> a/drivers/gpu/drm/nouveau/nouveau_display.c +++
> b/drivers/gpu/drm/nouveau/nouveau_display.c @@ -446,10 +446,8 @@
> static struct nouveau_drm_prop_enum_list dither_depth[] = { } while(0)
>
> void
> -nouveau_display_hpd_resume(struct drm_device *dev)
> +nouveau_display_hpd_resume(struct nouveau_drm *drm)
> {
> - struct nouveau_drm *drm = nouveau_drm(dev);
> -
> spin_lock_irq(&drm->hpd_lock);
> drm->hpd_pending = ~0;
> spin_unlock_irq(&drm->hpd_lock);
> diff --git a/drivers/gpu/drm/nouveau/nouveau_display.h
> b/drivers/gpu/drm/nouveau/nouveau_display.h index
> 2ab2ddb1eadf..1f506f8b289c 100644 ---
> a/drivers/gpu/drm/nouveau/nouveau_display.h +++
> b/drivers/gpu/drm/nouveau/nouveau_display.h @@ -45,7 +45,7 @@
> nouveau_display(struct drm_device *dev) int
> nouveau_display_create(struct drm_device *dev); void
> nouveau_display_destroy(struct drm_device *dev); int
> nouveau_display_init(struct drm_device *dev, bool resume, bool
> runtime); -void nouveau_display_hpd_resume(struct drm_device *dev);
> +void nouveau_display_hpd_resume(struct nouveau_drm *); void
> nouveau_display_fini(struct drm_device *dev, bool suspend, bool
> runtime); int nouveau_display_suspend(struct drm_device *dev, bool
> runtime); void nouveau_display_resume(struct drm_device *dev, bool
> runtime); diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c
> b/drivers/gpu/drm/nouveau/nouveau_drm.c index
> 9beff8737617..0687bc59d486 100644 ---
> a/drivers/gpu/drm/nouveau/nouveau_drm.c +++
> b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -579,10 +579,10 @@
> nouveau_parent = { };
> static void
> -nouveau_drm_device_fini(struct drm_device *dev)
> +nouveau_drm_device_fini(struct nouveau_drm *drm)
> {
> + struct drm_device *dev = drm->dev;
> struct nouveau_cli *cli, *temp_cli;
> - struct nouveau_drm *drm = nouveau_drm(dev);
>
> if (nouveau_pmops_runtime()) {
> pm_runtime_get_sync(dev->dev);
> @@ -707,7 +707,7 @@ nouveau_drm_device_init(struct nouveau_drm *drm)
>
> ret = drm_dev_register(drm->dev, 0);
> if (ret) {
> - nouveau_drm_device_fini(drm->dev);
> + nouveau_drm_device_fini(drm);
> return ret;
> }
>
> @@ -758,7 +758,7 @@ nouveau_drm_device_new(const struct drm_driver
> *drm_driver, struct device *paren }
>
> drm->dev->dev_private = drm;
> - dev_set_drvdata(parent, drm->dev);
> + dev_set_drvdata(parent, drm);
>
> done:
> if (ret) {
> @@ -811,8 +811,7 @@ nouveau_drm_device_new(const struct drm_driver
> *drm_driver, struct device *paren
> static void quirk_broken_nv_runpm(struct pci_dev *pdev)
> {
> - struct drm_device *dev = pci_get_drvdata(pdev);
> - struct nouveau_drm *drm = nouveau_drm(dev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> struct pci_dev *bridge = pci_upstream_bridge(pdev);
>
> if (!bridge || bridge->vendor != PCI_VENDOR_ID_INTEL)
> @@ -894,18 +893,17 @@ static int nouveau_drm_probe(struct pci_dev
> *pdev, }
>
> void
> -nouveau_drm_device_remove(struct drm_device *dev)
> +nouveau_drm_device_remove(struct nouveau_drm *drm)
> {
> - struct nouveau_drm *drm = nouveau_drm(dev);
> struct nvkm_client *client;
> struct nvkm_device *device;
>
> - drm_dev_unplug(dev);
> + drm_dev_unplug(drm->dev);
>
> client = nvxx_client(&drm->client.base);
> device = nvkm_device_find(client->device);
>
> - nouveau_drm_device_fini(dev);
> + nouveau_drm_device_fini(drm);
> nouveau_drm_device_del(drm);
> nvkm_device_del(&device);
> }
> @@ -913,20 +911,19 @@ nouveau_drm_device_remove(struct drm_device
> *dev) static void
> nouveau_drm_remove(struct pci_dev *pdev)
> {
> - struct drm_device *dev = pci_get_drvdata(pdev);
> - struct nouveau_drm *drm = nouveau_drm(dev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
>
> /* revert our workaround */
> if (drm->old_pm_cap)
> pdev->pm_cap = drm->old_pm_cap;
> - nouveau_drm_device_remove(dev);
> + nouveau_drm_device_remove(drm);
> pci_disable_device(pdev);
> }
>
> static int
> -nouveau_do_suspend(struct drm_device *dev, bool runtime)
> +nouveau_do_suspend(struct nouveau_drm *drm, bool runtime)
> {
> - struct nouveau_drm *drm = nouveau_drm(dev);
> + struct drm_device *dev = drm->dev;
> struct ttm_resource_manager *man;
> int ret;
>
> @@ -987,10 +984,10 @@ nouveau_do_suspend(struct drm_device *dev, bool
> runtime) }
>
> static int
> -nouveau_do_resume(struct drm_device *dev, bool runtime)
> +nouveau_do_resume(struct nouveau_drm *drm, bool runtime)
> {
> + struct drm_device *dev = drm->dev;
> int ret = 0;
> - struct nouveau_drm *drm = nouveau_drm(dev);
>
> NV_DEBUG(drm, "resuming object tree...\n");
> ret = nvif_client_resume(&drm->master.base);
> @@ -1020,14 +1017,14 @@ int
> nouveau_pmops_suspend(struct device *dev)
> {
> struct pci_dev *pdev = to_pci_dev(dev);
> - struct drm_device *drm_dev = pci_get_drvdata(pdev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> int ret;
>
> - if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
> - drm_dev->switch_power_state ==
> DRM_SWITCH_POWER_DYNAMIC_OFF)
> + if (drm->dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
> + drm->dev->switch_power_state ==
> DRM_SWITCH_POWER_DYNAMIC_OFF) return 0;
>
> - ret = nouveau_do_suspend(drm_dev, false);
> + ret = nouveau_do_suspend(drm, false);
> if (ret)
> return ret;
>
> @@ -1042,11 +1039,11 @@ int
> nouveau_pmops_resume(struct device *dev)
> {
> struct pci_dev *pdev = to_pci_dev(dev);
> - struct drm_device *drm_dev = pci_get_drvdata(pdev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> int ret;
>
> - if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
> - drm_dev->switch_power_state ==
> DRM_SWITCH_POWER_DYNAMIC_OFF)
> + if (drm->dev->switch_power_state == DRM_SWITCH_POWER_OFF ||
> + drm->dev->switch_power_state ==
> DRM_SWITCH_POWER_DYNAMIC_OFF) return 0;
>
> pci_set_power_state(pdev, PCI_D0);
> @@ -1056,10 +1053,10 @@ nouveau_pmops_resume(struct device *dev)
> return ret;
> pci_set_master(pdev);
>
> - ret = nouveau_do_resume(drm_dev, false);
> + ret = nouveau_do_resume(drm, false);
>
> /* Monitors may have been connected / disconnected during
> suspend */
> - nouveau_display_hpd_resume(drm_dev);
> + nouveau_display_hpd_resume(drm);
>
> return ret;
> }
> @@ -1067,17 +1064,17 @@ nouveau_pmops_resume(struct device *dev)
> static int
> nouveau_pmops_freeze(struct device *dev)
> {
> - struct pci_dev *pdev = to_pci_dev(dev);
> - struct drm_device *drm_dev = pci_get_drvdata(pdev);
> - return nouveau_do_suspend(drm_dev, false);
> + struct nouveau_drm *drm = dev_get_drvdata(dev);
> +
> + return nouveau_do_suspend(drm, false);
> }
>
> static int
> nouveau_pmops_thaw(struct device *dev)
> {
> - struct pci_dev *pdev = to_pci_dev(dev);
> - struct drm_device *drm_dev = pci_get_drvdata(pdev);
> - return nouveau_do_resume(drm_dev, false);
> + struct nouveau_drm *drm = dev_get_drvdata(dev);
> +
> + return nouveau_do_resume(drm, false);
> }
>
> bool
> @@ -1092,7 +1089,7 @@ static int
> nouveau_pmops_runtime_suspend(struct device *dev)
> {
> struct pci_dev *pdev = to_pci_dev(dev);
> - struct drm_device *drm_dev = pci_get_drvdata(pdev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> int ret;
>
> if (!nouveau_pmops_runtime()) {
> @@ -1101,12 +1098,12 @@ nouveau_pmops_runtime_suspend(struct device
> *dev) }
>
> nouveau_switcheroo_optimus_dsm();
> - ret = nouveau_do_suspend(drm_dev, true);
> + ret = nouveau_do_suspend(drm, true);
> pci_save_state(pdev);
> pci_disable_device(pdev);
> pci_ignore_hotplug(pdev);
> pci_set_power_state(pdev, PCI_D3cold);
> - drm_dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;
> + drm->dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;
> return ret;
> }
>
> @@ -1114,9 +1111,8 @@ static int
> nouveau_pmops_runtime_resume(struct device *dev)
> {
> struct pci_dev *pdev = to_pci_dev(dev);
> - struct drm_device *drm_dev = pci_get_drvdata(pdev);
> - struct nouveau_drm *drm = nouveau_drm(drm_dev);
> - struct nvif_device *device =
> &nouveau_drm(drm_dev)->client.device;
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> + struct nvif_device *device = &drm->client.device;
> int ret;
>
> if (!nouveau_pmops_runtime()) {
> @@ -1131,7 +1127,7 @@ nouveau_pmops_runtime_resume(struct device *dev)
> return ret;
> pci_set_master(pdev);
>
> - ret = nouveau_do_resume(drm_dev, true);
> + ret = nouveau_do_resume(drm, true);
> if (ret) {
> NV_ERROR(drm, "resume failed with: %d\n", ret);
> return ret;
> @@ -1139,10 +1135,10 @@ nouveau_pmops_runtime_resume(struct device
> *dev)
> /* do magic */
> nvif_mask(&device->object, 0x088488, (1 << 25), (1 << 25));
> - drm_dev->switch_power_state = DRM_SWITCH_POWER_ON;
> + drm->dev->switch_power_state = DRM_SWITCH_POWER_ON;
>
> /* Monitors may have been connected / disconnected during
> suspend */
> - nouveau_display_hpd_resume(drm_dev);
> + nouveau_display_hpd_resume(drm);
>
> return ret;
> }
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h
> b/drivers/gpu/drm/nouveau/nouveau_drv.h index
> e239c6bf4afa..7e624c587fc0 100644 ---
> a/drivers/gpu/drm/nouveau/nouveau_drv.h +++
> b/drivers/gpu/drm/nouveau/nouveau_drv.h @@ -325,7 +325,7 @@ bool
> nouveau_pmops_runtime(void); struct drm_device *
> nouveau_platform_device_create(const struct nvkm_device_tegra_func *,
> struct platform_device *, struct
> nvkm_device **); -void nouveau_drm_device_remove(struct drm_device
> *dev); +void nouveau_drm_device_remove(struct nouveau_drm *);
>
> #define NV_PRINTK(l,c,f,a...) do {
> \ struct nouveau_cli *_cli = (c);
> \ diff --git
> a/drivers/gpu/drm/nouveau/nouveau_platform.c
> b/drivers/gpu/drm/nouveau/nouveau_platform.c index
> d0a63f0f54a2..3194b110eff8 100644 ---
> a/drivers/gpu/drm/nouveau/nouveau_platform.c +++
> b/drivers/gpu/drm/nouveau/nouveau_platform.c @@ -39,8 +39,9 @@ static
> int nouveau_platform_probe(struct platform_device *pdev) static void
> nouveau_platform_remove(struct platform_device *pdev) {
> - struct drm_device *dev = platform_get_drvdata(pdev);
> - nouveau_drm_device_remove(dev);
> + struct nouveau_drm *drm = platform_get_drvdata(pdev);
> +
> + nouveau_drm_device_remove(drm);
> }
>
> #if IS_ENABLED(CONFIG_OF)
> diff --git a/drivers/gpu/drm/nouveau/nouveau_vga.c
> b/drivers/gpu/drm/nouveau/nouveau_vga.c index
> f8bf0ec26844..2525e08938b3 100644 ---
> a/drivers/gpu/drm/nouveau/nouveau_vga.c +++
> b/drivers/gpu/drm/nouveau/nouveau_vga.c @@ -11,7 +11,7 @@
> static unsigned int
> nouveau_vga_set_decode(struct pci_dev *pdev, bool state)
> {
> - struct nouveau_drm *drm = nouveau_drm(pci_get_drvdata(pdev));
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> struct nvif_object *device = &drm->client.device.object;
>
> if (drm->client.device.info.family ==
> NV_DEVICE_INFO_V0_CURIE && @@ -34,7 +34,8 @@ static void
> nouveau_switcheroo_set_state(struct pci_dev *pdev,
> enum vga_switcheroo_state state)
> {
> - struct drm_device *dev = pci_get_drvdata(pdev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> + struct drm_device *dev = drm->dev;
>
> if ((nouveau_is_optimus() || nouveau_is_v1_dsm()) && state
> == VGA_SWITCHEROO_OFF) return;
> @@ -56,21 +57,22 @@ nouveau_switcheroo_set_state(struct pci_dev *pdev,
> static void
> nouveau_switcheroo_reprobe(struct pci_dev *pdev)
> {
> - struct drm_device *dev = pci_get_drvdata(pdev);
> - drm_fb_helper_output_poll_changed(dev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
> +
> + drm_fb_helper_output_poll_changed(drm->dev);
> }
>
> static bool
> nouveau_switcheroo_can_switch(struct pci_dev *pdev)
> {
> - struct drm_device *dev = pci_get_drvdata(pdev);
> + struct nouveau_drm *drm = pci_get_drvdata(pdev);
>
> /*
> * FIXME: open_count is protected by drm_global_mutex but
> that would lead to
> * locking inversion with the driver load path. And the
> access here is
> * completely racy anyway. So don't bother with locking for
> now. */
> - return atomic_read(&dev->open_count) == 0;
> + return atomic_read(&drm->dev->open_count) == 0;
> }
>
> static const struct vga_switcheroo_client_ops
Reviewed-by: Zhi Wang <zhiw at nvidia.com>
More information about the Nouveau
mailing list