* [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc
@ 2024-06-30 16:59 Wu Hoi Pok
2024-06-30 16:59 ` [PATCH v3 1/6] drm/radeon: change variable name "dev" to "ddev" for consistency Wu Hoi Pok
` (6 more replies)
0 siblings, 7 replies; 29+ messages in thread
From: Wu Hoi Pok @ 2024-06-30 16:59 UTC (permalink / raw)
Cc: Thomas Zimmermann, Wu Hoi Pok, Alex Deucher, Christian König,
Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel,
linux-kernel
.load and drm_dev_alloc are deprecated. These patch series aims to
remove them.
v3: Both v1 and v2 sucks. v3 improves greatly on readability.
Wu Hoi Pok (6):
drm/radeon: change variable name "dev" to "ddev" for consistency
drm/radeon: remove load callback from kms_driver
drm/radeon: use variable flags as parameter
drm/radeon: add helper rdev_to_drm(rdev)
drm/radeon: change rdev->ddev to rdev_to_drm(rdev)
drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc
drivers/gpu/drm/radeon/atombios_encoders.c | 2 +-
drivers/gpu/drm/radeon/cik.c | 14 ++--
drivers/gpu/drm/radeon/dce6_afmt.c | 2 +-
drivers/gpu/drm/radeon/evergreen.c | 12 ++--
drivers/gpu/drm/radeon/ni.c | 2 +-
drivers/gpu/drm/radeon/r100.c | 24 +++----
drivers/gpu/drm/radeon/r300.c | 6 +-
drivers/gpu/drm/radeon/r420.c | 6 +-
drivers/gpu/drm/radeon/r520.c | 2 +-
drivers/gpu/drm/radeon/r600.c | 12 ++--
drivers/gpu/drm/radeon/r600_cs.c | 2 +-
drivers/gpu/drm/radeon/r600_dpm.c | 4 +-
drivers/gpu/drm/radeon/r600_hdmi.c | 2 +-
drivers/gpu/drm/radeon/radeon.h | 7 +-
drivers/gpu/drm/radeon/radeon_acpi.c | 10 +--
drivers/gpu/drm/radeon/radeon_agp.c | 2 +-
drivers/gpu/drm/radeon/radeon_atombios.c | 2 +-
drivers/gpu/drm/radeon/radeon_audio.c | 4 +-
drivers/gpu/drm/radeon/radeon_combios.c | 12 ++--
drivers/gpu/drm/radeon/radeon_device.c | 13 ++--
drivers/gpu/drm/radeon/radeon_display.c | 74 +++++++++++-----------
drivers/gpu/drm/radeon/radeon_drv.c | 27 +++++---
drivers/gpu/drm/radeon/radeon_fbdev.c | 26 ++++----
drivers/gpu/drm/radeon/radeon_fence.c | 8 +--
drivers/gpu/drm/radeon/radeon_gem.c | 2 +-
drivers/gpu/drm/radeon/radeon_i2c.c | 2 +-
drivers/gpu/drm/radeon/radeon_ib.c | 2 +-
drivers/gpu/drm/radeon/radeon_irq_kms.c | 12 ++--
drivers/gpu/drm/radeon/radeon_kms.c | 8 +--
drivers/gpu/drm/radeon/radeon_object.c | 2 +-
drivers/gpu/drm/radeon/radeon_pm.c | 20 +++---
drivers/gpu/drm/radeon/radeon_ring.c | 2 +-
drivers/gpu/drm/radeon/radeon_ttm.c | 6 +-
drivers/gpu/drm/radeon/rs400.c | 6 +-
drivers/gpu/drm/radeon/rs600.c | 14 ++--
drivers/gpu/drm/radeon/rs690.c | 2 +-
drivers/gpu/drm/radeon/rv515.c | 4 +-
drivers/gpu/drm/radeon/rv770.c | 2 +-
drivers/gpu/drm/radeon/si.c | 4 +-
39 files changed, 184 insertions(+), 179 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 29+ messages in thread* [PATCH v3 1/6] drm/radeon: change variable name "dev" to "ddev" for consistency 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok @ 2024-06-30 16:59 ` Wu Hoi Pok 2024-07-03 8:42 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 2/6] drm/radeon: remove load callback from kms_driver Wu Hoi Pok ` (5 subsequent siblings) 6 siblings, 1 reply; 29+ messages in thread From: Wu Hoi Pok @ 2024-06-30 16:59 UTC (permalink / raw) Cc: Thomas Zimmermann, Wu Hoi Pok, Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel In the probe function of amdgpu, it uses "ddev" as the name of "struct drm_device *", so I suggest renaming it to be consistent. Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> --- drivers/gpu/drm/radeon/radeon_drv.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 7bf08164140e..739bb1da9dcc 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -259,7 +259,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { unsigned long flags = 0; - struct drm_device *dev; + struct drm_device *ddev; int ret; if (!ent) @@ -300,28 +300,28 @@ static int radeon_pci_probe(struct pci_dev *pdev, if (ret) return ret; - dev = drm_dev_alloc(&kms_driver, &pdev->dev); - if (IS_ERR(dev)) - return PTR_ERR(dev); + ddev = drm_dev_alloc(&kms_driver, &pdev->dev); + if (IS_ERR(ddev)) + return PTR_ERR(ddev); ret = pci_enable_device(pdev); if (ret) goto err_free; - pci_set_drvdata(pdev, dev); + pci_set_drvdata(pdev, ddev); - ret = drm_dev_register(dev, ent->driver_data); + ret = drm_dev_register(ddev, ent->driver_data); if (ret) goto err_agp; - radeon_fbdev_setup(dev->dev_private); + radeon_fbdev_setup(ddev->dev_private); return 0; err_agp: pci_disable_device(pdev); err_free: - drm_dev_put(dev); + drm_dev_put(ddev); return ret; } -- 2.45.2 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v3 1/6] drm/radeon: change variable name "dev" to "ddev" for consistency 2024-06-30 16:59 ` [PATCH v3 1/6] drm/radeon: change variable name "dev" to "ddev" for consistency Wu Hoi Pok @ 2024-07-03 8:42 ` Thomas Zimmermann 0 siblings, 0 replies; 29+ messages in thread From: Thomas Zimmermann @ 2024-07-03 8:42 UTC (permalink / raw) To: Wu Hoi Pok Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > In the probe function of amdgpu, it uses "ddev" as the name of "struct drm_device *", > so I suggest renaming it to be consistent. > > Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Tested-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/radeon/radeon_drv.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > index 7bf08164140e..739bb1da9dcc 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -259,7 +259,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, > const struct pci_device_id *ent) > { > unsigned long flags = 0; > - struct drm_device *dev; > + struct drm_device *ddev; > int ret; > > if (!ent) > @@ -300,28 +300,28 @@ static int radeon_pci_probe(struct pci_dev *pdev, > if (ret) > return ret; > > - dev = drm_dev_alloc(&kms_driver, &pdev->dev); > - if (IS_ERR(dev)) > - return PTR_ERR(dev); > + ddev = drm_dev_alloc(&kms_driver, &pdev->dev); > + if (IS_ERR(ddev)) > + return PTR_ERR(ddev); > > ret = pci_enable_device(pdev); > if (ret) > goto err_free; > > - pci_set_drvdata(pdev, dev); > + pci_set_drvdata(pdev, ddev); > > - ret = drm_dev_register(dev, ent->driver_data); > + ret = drm_dev_register(ddev, ent->driver_data); > if (ret) > goto err_agp; > > - radeon_fbdev_setup(dev->dev_private); > + radeon_fbdev_setup(ddev->dev_private); > > return 0; > > err_agp: > pci_disable_device(pdev); > err_free: > - drm_dev_put(dev); > + drm_dev_put(ddev); > return ret; > } > -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v3 2/6] drm/radeon: remove load callback from kms_driver 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok 2024-06-30 16:59 ` [PATCH v3 1/6] drm/radeon: change variable name "dev" to "ddev" for consistency Wu Hoi Pok @ 2024-06-30 16:59 ` Wu Hoi Pok 2024-07-03 8:43 ` Thomas Zimmermann 2024-09-19 16:56 ` Arthur Marsh 2024-06-30 16:59 ` [PATCH v3 3/6] drm/radeon: use variable flags as parameter Wu Hoi Pok ` (4 subsequent siblings) 6 siblings, 2 replies; 29+ messages in thread From: Wu Hoi Pok @ 2024-06-30 16:59 UTC (permalink / raw) Cc: Thomas Zimmermann, Wu Hoi Pok, Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel The ".load" callback in "struct drm_driver" is deprecated. In order to remove the callback, we have to manually call "radeon_driver_load_kms" instead. Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> --- drivers/gpu/drm/radeon/radeon_drv.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 739bb1da9dcc..88d3de2a79f8 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -310,6 +310,10 @@ static int radeon_pci_probe(struct pci_dev *pdev, pci_set_drvdata(pdev, ddev); + ret = radeon_driver_load_kms(ddev, flags); + if (ret) + goto err_agp; + ret = drm_dev_register(ddev, ent->driver_data); if (ret) goto err_agp; @@ -569,7 +573,6 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = { static const struct drm_driver kms_driver = { .driver_features = DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET, - .load = radeon_driver_load_kms, .open = radeon_driver_open_kms, .postclose = radeon_driver_postclose_kms, .unload = radeon_driver_unload_kms, -- 2.45.2 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v3 2/6] drm/radeon: remove load callback from kms_driver 2024-06-30 16:59 ` [PATCH v3 2/6] drm/radeon: remove load callback from kms_driver Wu Hoi Pok @ 2024-07-03 8:43 ` Thomas Zimmermann 2024-09-19 16:56 ` Arthur Marsh 1 sibling, 0 replies; 29+ messages in thread From: Thomas Zimmermann @ 2024-07-03 8:43 UTC (permalink / raw) To: Wu Hoi Pok Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > The ".load" callback in "struct drm_driver" is deprecated. In order to remove > the callback, we have to manually call "radeon_driver_load_kms" instead. > > Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Tested-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/radeon/radeon_drv.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > index 739bb1da9dcc..88d3de2a79f8 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -310,6 +310,10 @@ static int radeon_pci_probe(struct pci_dev *pdev, > > pci_set_drvdata(pdev, ddev); > > + ret = radeon_driver_load_kms(ddev, flags); > + if (ret) > + goto err_agp; > + > ret = drm_dev_register(ddev, ent->driver_data); > if (ret) > goto err_agp; > @@ -569,7 +573,6 @@ static const struct drm_ioctl_desc radeon_ioctls_kms[] = { > static const struct drm_driver kms_driver = { > .driver_features = > DRIVER_GEM | DRIVER_RENDER | DRIVER_MODESET, > - .load = radeon_driver_load_kms, > .open = radeon_driver_open_kms, > .postclose = radeon_driver_postclose_kms, > .unload = radeon_driver_unload_kms, -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* drm/radeon: remove load callback from kms_driver 2024-06-30 16:59 ` [PATCH v3 2/6] drm/radeon: remove load callback from kms_driver Wu Hoi Pok 2024-07-03 8:43 ` Thomas Zimmermann @ 2024-09-19 16:56 ` Arthur Marsh 2024-09-24 2:08 ` radeon ARUBA NULL pointer dereference Arthur Marsh 1 sibling, 1 reply; 29+ messages in thread From: Arthur Marsh @ 2024-09-19 16:56 UTC (permalink / raw) To: wuhoipok Cc: Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, linux-kernel, tzimmermann, arthur.marsh Recent kernels resulted in a blank screen, with Xorg.0.log reporting: (II) [KMS] drm report modesetting isn't supported. Sometimes while bisecting the pc came to a complete lockup (magic Sysreq unresponsive). At the end of bisecting I had: 90985660ba488cd3428706e7d53d6c9cdbbf3101 is the first bad commit commit 90985660ba488cd3428706e7d53d6c9cdbbf3101 Author: Wu Hoi Pok <wuhoipok@gmail.com> Date: Sun Jun 30 12:59:18 2024 -0400 drm/radeon: remove load callback from kms_driver The ".load" callback in "struct drm_driver" is deprecated. In order to remove the callback, we have to manually call "radeon_driver_load_kms" instead. This machine reports having: AMD A10-6800K APU with Radeon HD Graphics with the gpu appearing as Advanced Micro Devices [AMD/ATI] Richland [Radeon HD 8670D] 1002:990c Regards, Arthur Marsh. ^ permalink raw reply [flat|nested] 29+ messages in thread
* radeon ARUBA NULL pointer dereference 2024-09-19 16:56 ` Arthur Marsh @ 2024-09-24 2:08 ` Arthur Marsh 2024-09-24 12:20 ` Thomas Zimmermann 0 siblings, 1 reply; 29+ messages in thread From: Arthur Marsh @ 2024-09-24 2:08 UTC (permalink / raw) To: arthur.marsh Cc: Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, linux-kernel, tzimmermann, wuhoipok Using current Linus git head kernel, I was able to save the dmesg output: [ 17.218724] [drm] radeon kernel modesetting enabled. [ 17.218778] radeon 0000:00:01.0: vgaarb: deactivate vga console [ 17.219509] Console: switching to colour dummy device 80x25 [ 17.219700] [drm] initializing kernel modesetting (ARUBA 0x1002:0x990C 0x1002:0x0123 0x00). [ 17.219773] ATOM BIOS: 113 [ 17.219838] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - 0x000000002FFFFFFF (768M used) [ 17.219841] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - 0x000000006FFFFFFF [ 17.219844] [drm] Detected VRAM RAM=768M, BAR=256M [ 17.219845] [drm] RAM width 64bits DDR [ 17.219851] BUG: kernel NULL pointer dereference, address: 00000000000000a0 [ 17.219852] #PF: supervisor read access in kernel mode [ 17.219853] #PF: error_code(0x0000) - not-present page [ 17.219854] PGD 0 P4D 0 [ 17.219856] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI [ 17.219858] CPU: 0 UID: 0 PID: 451 Comm: udevd Not tainted 6.11.0+ #6121 [ 17.219860] Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 [ 17.219862] RIP: 0010:dma_get_required_mask+0x11/0x50 [ 17.219868] Code: 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 87 68 02 00 00 48 85 c0 74 11 <48> 8b 80 a0 00 00 00 48 85 c0 74 1f e9 ee ed 94 00 f6 87 2c 03 00 [ 17.219870] RSP: 0018:ffffa54bc13a7b00 EFLAGS: 00010202 [ 17.219871] RAX: 0000000000000000 RBX: 000000ffffffffff RCX: 0000000000000000 [ 17.219872] RDX: 0000000000000000 RSI: 0000000000000027 RDI: ffff976f44e720c8 [ 17.219873] RBP: ffff976f44e720c8 R08: 00000000ffffefff R09: ffffffffab2aab08 [ 17.219874] R10: 00000000fffff000 R11: 0000000000000002 R12: 0000000000000000 [ 17.219875] R13: ffff976f48a4aa30 R14: 0000000000000000 R15: 0000000000000028 [ 17.219876] FS: 00007f59a070d840(0000) GS:ffff97726f800000(0000) knlGS:0000000000000000 [ 17.219878] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 17.219879] CR2: 00000000000000a0 CR3: 00000001053b4000 CR4: 00000000000406f0 [ 17.219880] Call Trace: [ 17.219881] <TASK> [ 17.219882] ? __die_body.cold+0x19/0x1e [ 17.219885] ? page_fault_oops+0xa8/0x230 [ 17.219889] ? search_module_extables+0x4f/0x90 [ 17.219891] ? fixup_exception+0x36/0x2f0 [ 17.219894] ? exc_page_fault+0x88/0x1b0 [ 17.219897] ? asm_exc_page_fault+0x22/0x30 [ 17.219900] ? dma_get_required_mask+0x11/0x50 [ 17.219902] dma_addressing_limited+0x6c/0xb0 [ 17.219905] radeon_ttm_init+0x3f/0x210 [radeon] [ 17.219977] cayman_init+0x97/0x290 [radeon] [ 17.220057] radeon_device_init+0x5e9/0xb40 [radeon] [ 17.220115] radeon_driver_load_kms+0xb0/0x260 [radeon] [ 17.220174] radeon_pci_probe+0xff/0x170 [radeon] [ 17.220231] pci_device_probe+0xbe/0x1a0 [ 17.220234] really_probe+0xde/0x350 [ 17.220237] ? pm_runtime_barrier+0x61/0xb0 [ 17.220240] ? __pfx___driver_attach+0x10/0x10 [ 17.220242] __driver_probe_device+0x78/0x110 [ 17.220245] driver_probe_device+0x2d/0xc0 [ 17.220247] __driver_attach+0xc9/0x1c0 [ 17.220249] bus_for_each_dev+0x6a/0xb0 [ 17.220251] ? migrate_enable+0xbf/0xf0 [ 17.220254] bus_add_driver+0x139/0x220 [ 17.220256] driver_register+0x6e/0xc0 [ 17.220258] ? __pfx_radeon_module_init+0x10/0x10 [radeon] [ 17.220315] do_one_initcall+0x42/0x210 [ 17.220318] ? __kmalloc_cache_noprof+0x89/0x230 [ 17.220321] do_init_module+0x60/0x210 [ 17.220324] init_module_from_file+0x89/0xc0 [ 17.220326] __x64_sys_finit_module+0x142/0x390 [ 17.220329] do_syscall_64+0x47/0x110 [ 17.220331] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 17.220334] RIP: 0033:0x7f59a0625279 [ 17.220336] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 77 6b 0d 00 f7 d8 64 89 01 48 [ 17.220337] RSP: 002b:00007ffd15ee7df8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 17.220339] RAX: ffffffffffffffda RBX: 00005578ae660840 RCX: 00007f59a0625279 [ 17.220340] RDX: 0000000000000000 RSI: 00005578ae677fc0 RDI: 0000000000000011 [ 17.220341] RBP: 0000000000000000 R08: 00007f59a06fcb20 R09: 00005578ae640550 [ 17.220342] R10: 0000000000000040 R11: 0000000000000246 R12: 00005578ae677fc0 [ 17.220342] R13: 0000000000020000 R14: 00005578ae651750 R15: 0000000000000000 [ 17.220344] </TASK> [ 17.220345] Modules linked in: radeon(+) snd_hda_codec_hdmi snd_seq_midi snd_seq_midi_event snd_seq snd_hda_intel snd_intel_dspcfg snd_emu10k1 snd_hda_codec drm_ttm_helper ttm snd_util_mem drm_suballoc_helper snd_ac97_codec snd_hda_core drm_display_helper ac97_bus snd_rawmidi snd_hwdep snd_seq_device snd_pcm drm_kms_helper edac_mce_amd sha512_ssse3 sha512_generic k10temp sha256_ssse3 sha1_ssse3 drm aesni_intel snd_timer gf128mul crypto_simd cryptd acpi_cpufreq evdev pcspkr serio_raw emu10k1_gp gameport at24 regmap_i2c i2c_algo_bit snd video soundcore wmi button sp5100_tco ext4 crc32c_generic crc16 mbcache jbd2 uas usb_storage hid_generic usbhid hid sg sr_mod sd_mod cdrom ata_generic firewire_ohci crc32_pclmul crc32c_intel firewire_core crc_itu_t pata_atiixp i2c_piix4 i2c_smbus ahci r8169 libahci xhci_pci ohci_pci realtek libata mdio_devres ehci_pci ohci_hcd xhci_hcd scsi_mod ehci_hcd scsi_common usbcore libphy usb_common [ 17.220388] CR2: 00000000000000a0 [ 17.220390] ---[ end trace 0000000000000000 ]--- Happy to provide additional information and run tests. Regards, Arthur Marsh. ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: radeon ARUBA NULL pointer dereference 2024-09-24 2:08 ` radeon ARUBA NULL pointer dereference Arthur Marsh @ 2024-09-24 12:20 ` Thomas Zimmermann 2024-09-24 12:42 ` Thomas Zimmermann 0 siblings, 1 reply; 29+ messages in thread From: Thomas Zimmermann @ 2024-09-24 12:20 UTC (permalink / raw) To: Arthur Marsh Cc: Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, linux-kernel, wuhoipok, iommu, the arch/x86 maintainers (cc: DMA and x86 folks) Hi Am 24.09.24 um 04:08 schrieb Arthur Marsh: > Using current Linus git head kernel, I was able to save the dmesg output: > > [ 17.218724] [drm] radeon kernel modesetting enabled. > [ 17.218778] radeon 0000:00:01.0: vgaarb: deactivate vga console > [ 17.219509] Console: switching to colour dummy device 80x25 > [ 17.219700] [drm] initializing kernel modesetting (ARUBA 0x1002:0x990C 0x1002:0x0123 0x00). > [ 17.219773] ATOM BIOS: 113 > [ 17.219838] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - 0x000000002FFFFFFF (768M used) > [ 17.219841] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - 0x000000006FFFFFFF > [ 17.219844] [drm] Detected VRAM RAM=768M, BAR=256M > [ 17.219845] [drm] RAM width 64bits DDR > [ 17.219851] BUG: kernel NULL pointer dereference, address: 00000000000000a0 This is 160 bytes behind NULL, which indicates a field within a struct. > [ 17.219852] #PF: supervisor read access in kernel mode > [ 17.219853] #PF: error_code(0x0000) - not-present page > [ 17.219854] PGD 0 P4D 0 > [ 17.219856] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI > [ 17.219858] CPU: 0 UID: 0 PID: 451 Comm: udevd Not tainted 6.11.0+ #6121 > [ 17.219860] Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 > [ 17.219862] RIP: 0010:dma_get_required_mask+0x11/0x50 > [ 17.219868] Code: 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 87 68 02 00 00 48 85 c0 74 11 <48> 8b 80 a0 00 00 00 48 85 c0 74 1f e9 ee ed 94 00 f6 87 2c 03 00 > [ 17.219870] RSP: 0018:ffffa54bc13a7b00 EFLAGS: 00010202 > [ 17.219871] RAX: 0000000000000000 RBX: 000000ffffffffff RCX: 0000000000000000 > [ 17.219872] RDX: 0000000000000000 RSI: 0000000000000027 RDI: ffff976f44e720c8 > [ 17.219873] RBP: ffff976f44e720c8 R08: 00000000ffffefff R09: ffffffffab2aab08 > [ 17.219874] R10: 00000000fffff000 R11: 0000000000000002 R12: 0000000000000000 > [ 17.219875] R13: ffff976f48a4aa30 R14: 0000000000000000 R15: 0000000000000028 > [ 17.219876] FS: 00007f59a070d840(0000) GS:ffff97726f800000(0000) knlGS:0000000000000000 > [ 17.219878] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 17.219879] CR2: 00000000000000a0 CR3: 00000001053b4000 CR4: 00000000000406f0 > [ 17.219880] Call Trace: > [ 17.219881] <TASK> > [ 17.219882] ? __die_body.cold+0x19/0x1e > [ 17.219885] ? page_fault_oops+0xa8/0x230 > [ 17.219889] ? search_module_extables+0x4f/0x90 > [ 17.219891] ? fixup_exception+0x36/0x2f0 > [ 17.219894] ? exc_page_fault+0x88/0x1b0 > [ 17.219897] ? asm_exc_page_fault+0x22/0x30 > [ 17.219900] ? dma_get_required_mask+0x11/0x50 This is not in the radeon driver but the DMA code. I'd say it's at [1], as get_required_mask is 160 bytes within struct drm_map_ops. The call to get_arch_dma_ops() probably returns NULL. Best regards Thomas [1] https://elixir.bootlin.com/linux/v6.11/source/kernel/dma/mapping.c#L523 [2] https://elixir.bootlin.com/linux/v6.11/source/include/linux/dma-map-ops.h#L98 > [ 17.219902] dma_addressing_limited+0x6c/0xb0 > [ 17.219905] radeon_ttm_init+0x3f/0x210 [radeon] > [ 17.219977] cayman_init+0x97/0x290 [radeon] > [ 17.220057] radeon_device_init+0x5e9/0xb40 [radeon] > [ 17.220115] radeon_driver_load_kms+0xb0/0x260 [radeon] > [ 17.220174] radeon_pci_probe+0xff/0x170 [radeon] > [ 17.220231] pci_device_probe+0xbe/0x1a0 > [ 17.220234] really_probe+0xde/0x350 > [ 17.220237] ? pm_runtime_barrier+0x61/0xb0 > [ 17.220240] ? __pfx___driver_attach+0x10/0x10 > [ 17.220242] __driver_probe_device+0x78/0x110 > [ 17.220245] driver_probe_device+0x2d/0xc0 > [ 17.220247] __driver_attach+0xc9/0x1c0 > [ 17.220249] bus_for_each_dev+0x6a/0xb0 > [ 17.220251] ? migrate_enable+0xbf/0xf0 > [ 17.220254] bus_add_driver+0x139/0x220 > [ 17.220256] driver_register+0x6e/0xc0 > [ 17.220258] ? __pfx_radeon_module_init+0x10/0x10 [radeon] > [ 17.220315] do_one_initcall+0x42/0x210 > [ 17.220318] ? __kmalloc_cache_noprof+0x89/0x230 > [ 17.220321] do_init_module+0x60/0x210 > [ 17.220324] init_module_from_file+0x89/0xc0 > [ 17.220326] __x64_sys_finit_module+0x142/0x390 > [ 17.220329] do_syscall_64+0x47/0x110 > [ 17.220331] entry_SYSCALL_64_after_hwframe+0x76/0x7e > [ 17.220334] RIP: 0033:0x7f59a0625279 > [ 17.220336] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 77 6b 0d 00 f7 d8 64 89 01 48 > [ 17.220337] RSP: 002b:00007ffd15ee7df8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 > [ 17.220339] RAX: ffffffffffffffda RBX: 00005578ae660840 RCX: 00007f59a0625279 > [ 17.220340] RDX: 0000000000000000 RSI: 00005578ae677fc0 RDI: 0000000000000011 > [ 17.220341] RBP: 0000000000000000 R08: 00007f59a06fcb20 R09: 00005578ae640550 > [ 17.220342] R10: 0000000000000040 R11: 0000000000000246 R12: 00005578ae677fc0 > [ 17.220342] R13: 0000000000020000 R14: 00005578ae651750 R15: 0000000000000000 > [ 17.220344] </TASK> > [ 17.220345] Modules linked in: radeon(+) snd_hda_codec_hdmi snd_seq_midi snd_seq_midi_event snd_seq snd_hda_intel snd_intel_dspcfg snd_emu10k1 snd_hda_codec drm_ttm_helper ttm snd_util_mem drm_suballoc_helper snd_ac97_codec snd_hda_core drm_display_helper ac97_bus snd_rawmidi snd_hwdep snd_seq_device snd_pcm drm_kms_helper edac_mce_amd sha512_ssse3 sha512_generic k10temp sha256_ssse3 sha1_ssse3 drm aesni_intel snd_timer gf128mul crypto_simd cryptd acpi_cpufreq evdev pcspkr serio_raw emu10k1_gp gameport at24 regmap_i2c i2c_algo_bit snd video soundcore wmi button sp5100_tco ext4 crc32c_generic crc16 mbcache jbd2 uas usb_storage hid_generic usbhid hid sg sr_mod sd_mod cdrom ata_generic firewire_ohci crc32_pclmul crc32c_intel firewire_core crc_itu_t pata_atiixp i2c_piix4 i2c_smbus ahci r8169 libahci xhci_pci ohci_pci realtek libata mdio_devres ehci_pci ohci_hcd xhci_hcd scsi_mod ehci_hcd scsi_common usbcore libphy usb_common > [ 17.220388] CR2: 00000000000000a0 > [ 17.220390] ---[ end trace 0000000000000000 ]--- > > Happy to provide additional information and run tests. > > Regards, > > Arthur Marsh. -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: radeon ARUBA NULL pointer dereference 2024-09-24 12:20 ` Thomas Zimmermann @ 2024-09-24 12:42 ` Thomas Zimmermann 2024-09-24 14:22 ` Alex Deucher 0 siblings, 1 reply; 29+ messages in thread From: Thomas Zimmermann @ 2024-09-24 12:42 UTC (permalink / raw) To: Arthur Marsh Cc: Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, linux-kernel, wuhoipok, iommu, the arch/x86 maintainers Am 24.09.24 um 14:20 schrieb Thomas Zimmermann: > (cc: DMA and x86 folks) > > Hi > > Am 24.09.24 um 04:08 schrieb Arthur Marsh: >> Using current Linus git head kernel, I was able to save the dmesg >> output: >> >> [ 17.218724] [drm] radeon kernel modesetting enabled. >> [ 17.218778] radeon 0000:00:01.0: vgaarb: deactivate vga console >> [ 17.219509] Console: switching to colour dummy device 80x25 >> [ 17.219700] [drm] initializing kernel modesetting (ARUBA >> 0x1002:0x990C 0x1002:0x0123 0x00). >> [ 17.219773] ATOM BIOS: 113 >> [ 17.219838] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - >> 0x000000002FFFFFFF (768M used) >> [ 17.219841] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - >> 0x000000006FFFFFFF >> [ 17.219844] [drm] Detected VRAM RAM=768M, BAR=256M >> [ 17.219845] [drm] RAM width 64bits DDR >> [ 17.219851] BUG: kernel NULL pointer dereference, address: >> 00000000000000a0 > > This is 160 bytes behind NULL, which indicates a field within a struct. > >> [ 17.219852] #PF: supervisor read access in kernel mode >> [ 17.219853] #PF: error_code(0x0000) - not-present page >> [ 17.219854] PGD 0 P4D 0 >> [ 17.219856] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI >> [ 17.219858] CPU: 0 UID: 0 PID: 451 Comm: udevd Not tainted 6.11.0+ >> #6121 >> [ 17.219860] Hardware name: Gigabyte Technology Co., Ltd. To be >> filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 >> [ 17.219862] RIP: 0010:dma_get_required_mask+0x11/0x50 >> [ 17.219868] Code: 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 >> 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 87 68 02 00 00 48 85 >> c0 74 11 <48> 8b 80 a0 00 00 00 48 85 c0 74 1f e9 ee ed 94 00 f6 87 >> 2c 03 00 >> [ 17.219870] RSP: 0018:ffffa54bc13a7b00 EFLAGS: 00010202 >> [ 17.219871] RAX: 0000000000000000 RBX: 000000ffffffffff RCX: >> 0000000000000000 >> [ 17.219872] RDX: 0000000000000000 RSI: 0000000000000027 RDI: >> ffff976f44e720c8 >> [ 17.219873] RBP: ffff976f44e720c8 R08: 00000000ffffefff R09: >> ffffffffab2aab08 >> [ 17.219874] R10: 00000000fffff000 R11: 0000000000000002 R12: >> 0000000000000000 >> [ 17.219875] R13: ffff976f48a4aa30 R14: 0000000000000000 R15: >> 0000000000000028 >> [ 17.219876] FS: 00007f59a070d840(0000) GS:ffff97726f800000(0000) >> knlGS:0000000000000000 >> [ 17.219878] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 >> [ 17.219879] CR2: 00000000000000a0 CR3: 00000001053b4000 CR4: >> 00000000000406f0 >> [ 17.219880] Call Trace: >> [ 17.219881] <TASK> >> [ 17.219882] ? __die_body.cold+0x19/0x1e >> [ 17.219885] ? page_fault_oops+0xa8/0x230 >> [ 17.219889] ? search_module_extables+0x4f/0x90 >> [ 17.219891] ? fixup_exception+0x36/0x2f0 >> [ 17.219894] ? exc_page_fault+0x88/0x1b0 >> [ 17.219897] ? asm_exc_page_fault+0x22/0x30 >> [ 17.219900] ? dma_get_required_mask+0x11/0x50 > > This is not in the radeon driver but the DMA code. I'd say it's at > [1], as get_required_mask is 160 bytes within struct drm_map_ops. The > call to get_arch_dma_ops() probably returns NULL. And indeed, when I added pr_warn("dev dma ops: 0x%p\n", pdev->dev.dma_ops); pr_warn("arch dma ops: 0x%p\n", get_arch_dma_ops()); to radeon_pci_probe(), I got [ 22.325657] dev dma ops: 0x0000000000000000 [ 22.342921] arch dma ops: 0x0000000000000000 as a result. Best regards Thomas > > Best regards > Thomas > > [1] > https://elixir.bootlin.com/linux/v6.11/source/kernel/dma/mapping.c#L523 > [2] > https://elixir.bootlin.com/linux/v6.11/source/include/linux/dma-map-ops.h#L98 > >> [ 17.219902] dma_addressing_limited+0x6c/0xb0 >> [ 17.219905] radeon_ttm_init+0x3f/0x210 [radeon] >> [ 17.219977] cayman_init+0x97/0x290 [radeon] >> [ 17.220057] radeon_device_init+0x5e9/0xb40 [radeon] >> [ 17.220115] radeon_driver_load_kms+0xb0/0x260 [radeon] >> [ 17.220174] radeon_pci_probe+0xff/0x170 [radeon] >> [ 17.220231] pci_device_probe+0xbe/0x1a0 >> [ 17.220234] really_probe+0xde/0x350 >> [ 17.220237] ? pm_runtime_barrier+0x61/0xb0 >> [ 17.220240] ? __pfx___driver_attach+0x10/0x10 >> [ 17.220242] __driver_probe_device+0x78/0x110 >> [ 17.220245] driver_probe_device+0x2d/0xc0 >> [ 17.220247] __driver_attach+0xc9/0x1c0 >> [ 17.220249] bus_for_each_dev+0x6a/0xb0 >> [ 17.220251] ? migrate_enable+0xbf/0xf0 >> [ 17.220254] bus_add_driver+0x139/0x220 >> [ 17.220256] driver_register+0x6e/0xc0 >> [ 17.220258] ? __pfx_radeon_module_init+0x10/0x10 [radeon] >> [ 17.220315] do_one_initcall+0x42/0x210 >> [ 17.220318] ? __kmalloc_cache_noprof+0x89/0x230 >> [ 17.220321] do_init_module+0x60/0x210 >> [ 17.220324] init_module_from_file+0x89/0xc0 >> [ 17.220326] __x64_sys_finit_module+0x142/0x390 >> [ 17.220329] do_syscall_64+0x47/0x110 >> [ 17.220331] entry_SYSCALL_64_after_hwframe+0x76/0x7e >> [ 17.220334] RIP: 0033:0x7f59a0625279 >> [ 17.220336] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 >> 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 >> 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 77 6b 0d 00 f7 d8 64 >> 89 01 48 >> [ 17.220337] RSP: 002b:00007ffd15ee7df8 EFLAGS: 00000246 ORIG_RAX: >> 0000000000000139 >> [ 17.220339] RAX: ffffffffffffffda RBX: 00005578ae660840 RCX: >> 00007f59a0625279 >> [ 17.220340] RDX: 0000000000000000 RSI: 00005578ae677fc0 RDI: >> 0000000000000011 >> [ 17.220341] RBP: 0000000000000000 R08: 00007f59a06fcb20 R09: >> 00005578ae640550 >> [ 17.220342] R10: 0000000000000040 R11: 0000000000000246 R12: >> 00005578ae677fc0 >> [ 17.220342] R13: 0000000000020000 R14: 00005578ae651750 R15: >> 0000000000000000 >> [ 17.220344] </TASK> >> [ 17.220345] Modules linked in: radeon(+) snd_hda_codec_hdmi >> snd_seq_midi snd_seq_midi_event snd_seq snd_hda_intel >> snd_intel_dspcfg snd_emu10k1 snd_hda_codec drm_ttm_helper ttm >> snd_util_mem drm_suballoc_helper snd_ac97_codec snd_hda_core >> drm_display_helper ac97_bus snd_rawmidi snd_hwdep snd_seq_device >> snd_pcm drm_kms_helper edac_mce_amd sha512_ssse3 sha512_generic >> k10temp sha256_ssse3 sha1_ssse3 drm aesni_intel snd_timer gf128mul >> crypto_simd cryptd acpi_cpufreq evdev pcspkr serio_raw emu10k1_gp >> gameport at24 regmap_i2c i2c_algo_bit snd video soundcore wmi button >> sp5100_tco ext4 crc32c_generic crc16 mbcache jbd2 uas usb_storage >> hid_generic usbhid hid sg sr_mod sd_mod cdrom ata_generic >> firewire_ohci crc32_pclmul crc32c_intel firewire_core crc_itu_t >> pata_atiixp i2c_piix4 i2c_smbus ahci r8169 libahci xhci_pci ohci_pci >> realtek libata mdio_devres ehci_pci ohci_hcd xhci_hcd scsi_mod >> ehci_hcd scsi_common usbcore libphy usb_common >> [ 17.220388] CR2: 00000000000000a0 >> [ 17.220390] ---[ end trace 0000000000000000 ]--- >> >> Happy to provide additional information and run tests. >> >> Regards, >> >> Arthur Marsh. > -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: radeon ARUBA NULL pointer dereference 2024-09-24 12:42 ` Thomas Zimmermann @ 2024-09-24 14:22 ` Alex Deucher 2024-09-24 19:30 ` Ewan Milne 2024-09-25 0:22 ` NULL pointer dereference after ib test on ring 7 succeeded Arthur Marsh 0 siblings, 2 replies; 29+ messages in thread From: Alex Deucher @ 2024-09-24 14:22 UTC (permalink / raw) To: Thomas Zimmermann Cc: Arthur Marsh, Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, linux-kernel, wuhoipok, iommu, the arch/x86 maintainers On Tue, Sep 24, 2024 at 8:43 AM Thomas Zimmermann <tzimmermann@suse.de> wrote: > > > > Am 24.09.24 um 14:20 schrieb Thomas Zimmermann: > > (cc: DMA and x86 folks) > > > > Hi > > > > Am 24.09.24 um 04:08 schrieb Arthur Marsh: > >> Using current Linus git head kernel, I was able to save the dmesg > >> output: > >> > >> [ 17.218724] [drm] radeon kernel modesetting enabled. > >> [ 17.218778] radeon 0000:00:01.0: vgaarb: deactivate vga console > >> [ 17.219509] Console: switching to colour dummy device 80x25 > >> [ 17.219700] [drm] initializing kernel modesetting (ARUBA > >> 0x1002:0x990C 0x1002:0x0123 0x00). > >> [ 17.219773] ATOM BIOS: 113 > >> [ 17.219838] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - > >> 0x000000002FFFFFFF (768M used) > >> [ 17.219841] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - > >> 0x000000006FFFFFFF > >> [ 17.219844] [drm] Detected VRAM RAM=768M, BAR=256M > >> [ 17.219845] [drm] RAM width 64bits DDR > >> [ 17.219851] BUG: kernel NULL pointer dereference, address: > >> 00000000000000a0 > > > > This is 160 bytes behind NULL, which indicates a field within a struct. > > > >> [ 17.219852] #PF: supervisor read access in kernel mode > >> [ 17.219853] #PF: error_code(0x0000) - not-present page > >> [ 17.219854] PGD 0 P4D 0 > >> [ 17.219856] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI > >> [ 17.219858] CPU: 0 UID: 0 PID: 451 Comm: udevd Not tainted 6.11.0+ > >> #6121 > >> [ 17.219860] Hardware name: Gigabyte Technology Co., Ltd. To be > >> filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 > >> [ 17.219862] RIP: 0010:dma_get_required_mask+0x11/0x50 > >> [ 17.219868] Code: 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 > >> 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 87 68 02 00 00 48 85 > >> c0 74 11 <48> 8b 80 a0 00 00 00 48 85 c0 74 1f e9 ee ed 94 00 f6 87 > >> 2c 03 00 > >> [ 17.219870] RSP: 0018:ffffa54bc13a7b00 EFLAGS: 00010202 > >> [ 17.219871] RAX: 0000000000000000 RBX: 000000ffffffffff RCX: > >> 0000000000000000 > >> [ 17.219872] RDX: 0000000000000000 RSI: 0000000000000027 RDI: > >> ffff976f44e720c8 > >> [ 17.219873] RBP: ffff976f44e720c8 R08: 00000000ffffefff R09: > >> ffffffffab2aab08 > >> [ 17.219874] R10: 00000000fffff000 R11: 0000000000000002 R12: > >> 0000000000000000 > >> [ 17.219875] R13: ffff976f48a4aa30 R14: 0000000000000000 R15: > >> 0000000000000028 > >> [ 17.219876] FS: 00007f59a070d840(0000) GS:ffff97726f800000(0000) > >> knlGS:0000000000000000 > >> [ 17.219878] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > >> [ 17.219879] CR2: 00000000000000a0 CR3: 00000001053b4000 CR4: > >> 00000000000406f0 > >> [ 17.219880] Call Trace: > >> [ 17.219881] <TASK> > >> [ 17.219882] ? __die_body.cold+0x19/0x1e > >> [ 17.219885] ? page_fault_oops+0xa8/0x230 > >> [ 17.219889] ? search_module_extables+0x4f/0x90 > >> [ 17.219891] ? fixup_exception+0x36/0x2f0 > >> [ 17.219894] ? exc_page_fault+0x88/0x1b0 > >> [ 17.219897] ? asm_exc_page_fault+0x22/0x30 > >> [ 17.219900] ? dma_get_required_mask+0x11/0x50 Also reported here: https://gitlab.freedesktop.org/drm/amd/-/issues/3648 Alex > > > > This is not in the radeon driver but the DMA code. I'd say it's at > > [1], as get_required_mask is 160 bytes within struct drm_map_ops. The > > call to get_arch_dma_ops() probably returns NULL. > > And indeed, when I added > > pr_warn("dev dma ops: 0x%p\n", pdev->dev.dma_ops); > pr_warn("arch dma ops: 0x%p\n", get_arch_dma_ops()); > > to radeon_pci_probe(), I got > > [ 22.325657] dev dma ops: 0x0000000000000000 > [ 22.342921] arch dma ops: 0x0000000000000000 > > as a result. > > Best regards > Thomas > > > > > Best regards > > Thomas > > > > [1] > > https://elixir.bootlin.com/linux/v6.11/source/kernel/dma/mapping.c#L523 > > [2] > > https://elixir.bootlin.com/linux/v6.11/source/include/linux/dma-map-ops.h#L98 > > > >> [ 17.219902] dma_addressing_limited+0x6c/0xb0 > >> [ 17.219905] radeon_ttm_init+0x3f/0x210 [radeon] > >> [ 17.219977] cayman_init+0x97/0x290 [radeon] > >> [ 17.220057] radeon_device_init+0x5e9/0xb40 [radeon] > >> [ 17.220115] radeon_driver_load_kms+0xb0/0x260 [radeon] > >> [ 17.220174] radeon_pci_probe+0xff/0x170 [radeon] > >> [ 17.220231] pci_device_probe+0xbe/0x1a0 > >> [ 17.220234] really_probe+0xde/0x350 > >> [ 17.220237] ? pm_runtime_barrier+0x61/0xb0 > >> [ 17.220240] ? __pfx___driver_attach+0x10/0x10 > >> [ 17.220242] __driver_probe_device+0x78/0x110 > >> [ 17.220245] driver_probe_device+0x2d/0xc0 > >> [ 17.220247] __driver_attach+0xc9/0x1c0 > >> [ 17.220249] bus_for_each_dev+0x6a/0xb0 > >> [ 17.220251] ? migrate_enable+0xbf/0xf0 > >> [ 17.220254] bus_add_driver+0x139/0x220 > >> [ 17.220256] driver_register+0x6e/0xc0 > >> [ 17.220258] ? __pfx_radeon_module_init+0x10/0x10 [radeon] > >> [ 17.220315] do_one_initcall+0x42/0x210 > >> [ 17.220318] ? __kmalloc_cache_noprof+0x89/0x230 > >> [ 17.220321] do_init_module+0x60/0x210 > >> [ 17.220324] init_module_from_file+0x89/0xc0 > >> [ 17.220326] __x64_sys_finit_module+0x142/0x390 > >> [ 17.220329] do_syscall_64+0x47/0x110 > >> [ 17.220331] entry_SYSCALL_64_after_hwframe+0x76/0x7e > >> [ 17.220334] RIP: 0033:0x7f59a0625279 > >> [ 17.220336] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 > >> 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 > >> 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 77 6b 0d 00 f7 d8 64 > >> 89 01 48 > >> [ 17.220337] RSP: 002b:00007ffd15ee7df8 EFLAGS: 00000246 ORIG_RAX: > >> 0000000000000139 > >> [ 17.220339] RAX: ffffffffffffffda RBX: 00005578ae660840 RCX: > >> 00007f59a0625279 > >> [ 17.220340] RDX: 0000000000000000 RSI: 00005578ae677fc0 RDI: > >> 0000000000000011 > >> [ 17.220341] RBP: 0000000000000000 R08: 00007f59a06fcb20 R09: > >> 00005578ae640550 > >> [ 17.220342] R10: 0000000000000040 R11: 0000000000000246 R12: > >> 00005578ae677fc0 > >> [ 17.220342] R13: 0000000000020000 R14: 00005578ae651750 R15: > >> 0000000000000000 > >> [ 17.220344] </TASK> > >> [ 17.220345] Modules linked in: radeon(+) snd_hda_codec_hdmi > >> snd_seq_midi snd_seq_midi_event snd_seq snd_hda_intel > >> snd_intel_dspcfg snd_emu10k1 snd_hda_codec drm_ttm_helper ttm > >> snd_util_mem drm_suballoc_helper snd_ac97_codec snd_hda_core > >> drm_display_helper ac97_bus snd_rawmidi snd_hwdep snd_seq_device > >> snd_pcm drm_kms_helper edac_mce_amd sha512_ssse3 sha512_generic > >> k10temp sha256_ssse3 sha1_ssse3 drm aesni_intel snd_timer gf128mul > >> crypto_simd cryptd acpi_cpufreq evdev pcspkr serio_raw emu10k1_gp > >> gameport at24 regmap_i2c i2c_algo_bit snd video soundcore wmi button > >> sp5100_tco ext4 crc32c_generic crc16 mbcache jbd2 uas usb_storage > >> hid_generic usbhid hid sg sr_mod sd_mod cdrom ata_generic > >> firewire_ohci crc32_pclmul crc32c_intel firewire_core crc_itu_t > >> pata_atiixp i2c_piix4 i2c_smbus ahci r8169 libahci xhci_pci ohci_pci > >> realtek libata mdio_devres ehci_pci ohci_hcd xhci_hcd scsi_mod > >> ehci_hcd scsi_common usbcore libphy usb_common > >> [ 17.220388] CR2: 00000000000000a0 > >> [ 17.220390] ---[ end trace 0000000000000000 ]--- > >> > >> Happy to provide additional information and run tests. > >> > >> Regards, > >> > >> Arthur Marsh. > > > > -- > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Frankenstrasse 146, 90461 Nuernberg, Germany > GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman > HRB 36809 (AG Nuernberg) > ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: radeon ARUBA NULL pointer dereference 2024-09-24 14:22 ` Alex Deucher @ 2024-09-24 19:30 ` Ewan Milne 2024-09-25 18:13 ` Ewan Milne 2024-09-25 0:22 ` NULL pointer dereference after ib test on ring 7 succeeded Arthur Marsh 1 sibling, 1 reply; 29+ messages in thread From: Ewan Milne @ 2024-09-24 19:30 UTC (permalink / raw) To: Alex Deucher Cc: Thomas Zimmermann, Arthur Marsh, Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, linux-kernel, wuhoipok, iommu, the arch/x86 maintainers, Nilesh Javali, Martin K. Petersen I think we are seeing a similar problem w/qla2xxx panicing at boot: commit 1868f9d0260e9afaf7c6436d14923ae12eaea465 (HEAD -> master, origin/master, origin/HEAD) Merge: 056f8c437dc3 96319dacaf15 Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Fri Sep 20 19:34:00 2024 -0700 Merge tag 'for-linux-6.12-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux [ 3.376687] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel HBA Driver: 10.02.09.300-k. [ 3.385285] qla2xxx [0000:c4:00.0]-011c: : MSI-X vector count: 16. [ 3.391502] qla2xxx [0000:c4:00.0]-001d: : Found an ISP2261 irq 121 iobase 0x000000003b0c542c. [ 3.400118] BUG: kernel NULL pointer dereference, address: 00000000000000a0 [ 3.407075] #PF: supervisor read access in kernel mode [ 3.412215] #PF: error_code(0x0000) - not-present page [ 3.417356] PGD 0 P4D 0 [ 3.419896] Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI [ 3.424776] CPU: 0 UID: 0 PID: 413 Comm: kworker/0:2 Not tainted 6.11.0+ #1 [ 3.431731] Hardware name: Dell Inc. PowerEdge R6515/04F3CJ, BIOS 2.13.3 09/12/2023 [ 3.439386] Workqueue: events work_for_cpu_fn [ 3.443744] RIP: 0010:dma_get_required_mask+0x11/0x50 [ 3.448796] Code: 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 87 38 02 00 00 48 85 c0 74 12 <48> 8b 80 a0 00 00 00 48 85 c0 74 20 e9 fe f1 b7 00 cc 48 8b 05 9e [ 3.467542] RSP: 0018:ffffb05741007d80 EFLAGS: 00010202 [ 3.472769] RAX: 0000000000000000 RBX: 0000000000000055 RCX: ffff9f8601f92088 [ 3.479901] RDX: ffffb05740e07000 RSI: ffffffffffffffff RDI: ffff9f8601f920c8 [ 3.487032] RBP: ffff9f861b3ec000 R08: 0000000000000000 R09: ffffb05741007b10 [ 3.494165] R10: ffffb05741007b08 R11: ffffffff831e15c8 R12: ffff9f8601f92000 [ 3.501299] R13: ffff9f861b3ec4a8 R14: 0000000000001000 R15: 0000000000002000 [ 3.508432] FS: 0000000000000000(0000) GS:ffff9f896f200000(0000) knlGS:0000000000000000 [ 3.516517] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 3.522261] CR2: 00000000000000a0 CR3: 000000011d930000 CR4: 0000000000350ef0 [ 3.529394] Call Trace: [ 3.531848] <TASK> [ 3.533954] ? __die+0x20/0x70 [ 3.537012] ? page_fault_oops+0x75/0x170 [ 3.541028] ? exc_page_fault+0x64/0x140 [ 3.544951] ? asm_exc_page_fault+0x22/0x30 [ 3.549141] ? dma_get_required_mask+0x11/0x50 [ 3.553584] qla2x00_probe_one+0x12a1/0x1cb0 [qla2xxx] [ 3.558758] ? srso_return_thunk+0x5/0x5f [ 3.562770] ? __update_idle_core+0x5b/0xb0 [ 3.566958] local_pci_probe+0x46/0xa0 [ 3.570711] work_for_cpu_fn+0x16/0x20 [ 3.574459] process_one_work+0x17c/0x390 [ 3.578474] worker_thread+0x239/0x340 [ 3.582227] ? __pfx_worker_thread+0x10/0x10 [ 3.586497] kthread+0xcf/0x100 [ 3.589643] ? __pfx_kthread+0x10/0x10 [ 3.593398] ret_from_fork+0x30/0x50 [ 3.596975] ? __pfx_kthread+0x10/0x10 [ 3.600728] ret_from_fork_asm+0x1a/0x30 [ 3.604660] </TASK> [ 3.606846] Modules linked in: qla2xxx(+) sd_mod sg nvme_fc nvme_fabrics ahci(+) nvme_keyring libahci crct10dif_pclmul crc32_pclmul ccp nvme_core crc32c_intel libata nvme_auth ghash_clmulni_intel megaraid_sas tg3 scsi_transport_fc sp5100_tco wmi dm_mirror dm_region_hash dm_log dm_mod [ 3.631945] CR2: 00000000000000a0 [ 3.635265] ---[ end trace 0000000000000000 ]--- [ 3.728765] RIP: 0010:dma_get_required_mask+0x11/0x50 [ 3.733828] Code: 2e 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 87 38 02 00 00 48 85 c0 74 12 <48> 8b 80 a0 00 00 00 48 85 c0 74 20 e9 fe f1 b7 00 cc 48 8b 05 9e [ 3.752572] RSP: 0018:ffffb05741007d80 EFLAGS: 00010202 [ 3.757798] RAX: 0000000000000000 RBX: 0000000000000055 RCX: ffff9f8601f92088 [ 3.764930] RDX: ffffb05740e07000 RSI: ffffffffffffffff RDI: ffff9f8601f920c8 [ 3.772062] RBP: ffff9f861b3ec000 R08: 0000000000000000 R09: ffffb05741007b10 [ 3.779197] R10: ffffb05741007b08 R11: ffffffff831e15c8 R12: ffff9f8601f92000 [ 3.786328] R13: ffff9f861b3ec4a8 R14: 0000000000001000 R15: 0000000000002000 [ 3.793460] FS: 0000000000000000(0000) GS:ffff9f896f200000(0000) knlGS:0000000000000000 [ 3.801548] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 3.807292] CR2: 00000000000000a0 CR3: 000000011d930000 CR4: 0000000000350ef0 [ 3.814425] Kernel panic - not syncing: Fatal exception [ 3.821267] Kernel Offset: 0x600000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) [ 3.890453] pstore: backend (erst) writing error (-28) [ 3.895598] ---[ end Kernel panic - not syncing: Fatal exception ]--- On Tue, Sep 24, 2024 at 10:23 AM Alex Deucher <alexdeucher@gmail.com> wrote: > > On Tue, Sep 24, 2024 at 8:43 AM Thomas Zimmermann <tzimmermann@suse.de> wrote: > > > > > > > > Am 24.09.24 um 14:20 schrieb Thomas Zimmermann: > > > (cc: DMA and x86 folks) > > > > > > Hi > > > > > > Am 24.09.24 um 04:08 schrieb Arthur Marsh: > > >> Using current Linus git head kernel, I was able to save the dmesg > > >> output: > > >> > > >> [ 17.218724] [drm] radeon kernel modesetting enabled. > > >> [ 17.218778] radeon 0000:00:01.0: vgaarb: deactivate vga console > > >> [ 17.219509] Console: switching to colour dummy device 80x25 > > >> [ 17.219700] [drm] initializing kernel modesetting (ARUBA > > >> 0x1002:0x990C 0x1002:0x0123 0x00). > > >> [ 17.219773] ATOM BIOS: 113 > > >> [ 17.219838] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - > > >> 0x000000002FFFFFFF (768M used) > > >> [ 17.219841] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - > > >> 0x000000006FFFFFFF > > >> [ 17.219844] [drm] Detected VRAM RAM=768M, BAR=256M > > >> [ 17.219845] [drm] RAM width 64bits DDR > > >> [ 17.219851] BUG: kernel NULL pointer dereference, address: > > >> 00000000000000a0 > > > > > > This is 160 bytes behind NULL, which indicates a field within a struct. > > > > > >> [ 17.219852] #PF: supervisor read access in kernel mode > > >> [ 17.219853] #PF: error_code(0x0000) - not-present page > > >> [ 17.219854] PGD 0 P4D 0 > > >> [ 17.219856] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI > > >> [ 17.219858] CPU: 0 UID: 0 PID: 451 Comm: udevd Not tainted 6.11.0+ > > >> #6121 > > >> [ 17.219860] Hardware name: Gigabyte Technology Co., Ltd. To be > > >> filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 > > >> [ 17.219862] RIP: 0010:dma_get_required_mask+0x11/0x50 > > >> [ 17.219868] Code: 0f 1f 84 00 00 00 00 00 90 90 90 90 90 90 90 90 > > >> 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 48 8b 87 68 02 00 00 48 85 > > >> c0 74 11 <48> 8b 80 a0 00 00 00 48 85 c0 74 1f e9 ee ed 94 00 f6 87 > > >> 2c 03 00 > > >> [ 17.219870] RSP: 0018:ffffa54bc13a7b00 EFLAGS: 00010202 > > >> [ 17.219871] RAX: 0000000000000000 RBX: 000000ffffffffff RCX: > > >> 0000000000000000 > > >> [ 17.219872] RDX: 0000000000000000 RSI: 0000000000000027 RDI: > > >> ffff976f44e720c8 > > >> [ 17.219873] RBP: ffff976f44e720c8 R08: 00000000ffffefff R09: > > >> ffffffffab2aab08 > > >> [ 17.219874] R10: 00000000fffff000 R11: 0000000000000002 R12: > > >> 0000000000000000 > > >> [ 17.219875] R13: ffff976f48a4aa30 R14: 0000000000000000 R15: > > >> 0000000000000028 > > >> [ 17.219876] FS: 00007f59a070d840(0000) GS:ffff97726f800000(0000) > > >> knlGS:0000000000000000 > > >> [ 17.219878] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > >> [ 17.219879] CR2: 00000000000000a0 CR3: 00000001053b4000 CR4: > > >> 00000000000406f0 > > >> [ 17.219880] Call Trace: > > >> [ 17.219881] <TASK> > > >> [ 17.219882] ? __die_body.cold+0x19/0x1e > > >> [ 17.219885] ? page_fault_oops+0xa8/0x230 > > >> [ 17.219889] ? search_module_extables+0x4f/0x90 > > >> [ 17.219891] ? fixup_exception+0x36/0x2f0 > > >> [ 17.219894] ? exc_page_fault+0x88/0x1b0 > > >> [ 17.219897] ? asm_exc_page_fault+0x22/0x30 > > >> [ 17.219900] ? dma_get_required_mask+0x11/0x50 > > Also reported here: > https://gitlab.freedesktop.org/drm/amd/-/issues/3648 > > Alex > > > > > > > This is not in the radeon driver but the DMA code. I'd say it's at > > > [1], as get_required_mask is 160 bytes within struct drm_map_ops. The > > > call to get_arch_dma_ops() probably returns NULL. > > > > And indeed, when I added > > > > pr_warn("dev dma ops: 0x%p\n", pdev->dev.dma_ops); > > pr_warn("arch dma ops: 0x%p\n", get_arch_dma_ops()); > > > > to radeon_pci_probe(), I got > > > > [ 22.325657] dev dma ops: 0x0000000000000000 > > [ 22.342921] arch dma ops: 0x0000000000000000 > > > > as a result. > > > > Best regards > > Thomas > > > > > > > > Best regards > > > Thomas > > > > > > [1] > > > https://elixir.bootlin.com/linux/v6.11/source/kernel/dma/mapping.c#L523 > > > [2] > > > https://elixir.bootlin.com/linux/v6.11/source/include/linux/dma-map-ops.h#L98 > > > > > >> [ 17.219902] dma_addressing_limited+0x6c/0xb0 > > >> [ 17.219905] radeon_ttm_init+0x3f/0x210 [radeon] > > >> [ 17.219977] cayman_init+0x97/0x290 [radeon] > > >> [ 17.220057] radeon_device_init+0x5e9/0xb40 [radeon] > > >> [ 17.220115] radeon_driver_load_kms+0xb0/0x260 [radeon] > > >> [ 17.220174] radeon_pci_probe+0xff/0x170 [radeon] > > >> [ 17.220231] pci_device_probe+0xbe/0x1a0 > > >> [ 17.220234] really_probe+0xde/0x350 > > >> [ 17.220237] ? pm_runtime_barrier+0x61/0xb0 > > >> [ 17.220240] ? __pfx___driver_attach+0x10/0x10 > > >> [ 17.220242] __driver_probe_device+0x78/0x110 > > >> [ 17.220245] driver_probe_device+0x2d/0xc0 > > >> [ 17.220247] __driver_attach+0xc9/0x1c0 > > >> [ 17.220249] bus_for_each_dev+0x6a/0xb0 > > >> [ 17.220251] ? migrate_enable+0xbf/0xf0 > > >> [ 17.220254] bus_add_driver+0x139/0x220 > > >> [ 17.220256] driver_register+0x6e/0xc0 > > >> [ 17.220258] ? __pfx_radeon_module_init+0x10/0x10 [radeon] > > >> [ 17.220315] do_one_initcall+0x42/0x210 > > >> [ 17.220318] ? __kmalloc_cache_noprof+0x89/0x230 > > >> [ 17.220321] do_init_module+0x60/0x210 > > >> [ 17.220324] init_module_from_file+0x89/0xc0 > > >> [ 17.220326] __x64_sys_finit_module+0x142/0x390 > > >> [ 17.220329] do_syscall_64+0x47/0x110 > > >> [ 17.220331] entry_SYSCALL_64_after_hwframe+0x76/0x7e > > >> [ 17.220334] RIP: 0033:0x7f59a0625279 > > >> [ 17.220336] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 > > >> 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 > > >> 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 77 6b 0d 00 f7 d8 64 > > >> 89 01 48 > > >> [ 17.220337] RSP: 002b:00007ffd15ee7df8 EFLAGS: 00000246 ORIG_RAX: > > >> 0000000000000139 > > >> [ 17.220339] RAX: ffffffffffffffda RBX: 00005578ae660840 RCX: > > >> 00007f59a0625279 > > >> [ 17.220340] RDX: 0000000000000000 RSI: 00005578ae677fc0 RDI: > > >> 0000000000000011 > > >> [ 17.220341] RBP: 0000000000000000 R08: 00007f59a06fcb20 R09: > > >> 00005578ae640550 > > >> [ 17.220342] R10: 0000000000000040 R11: 0000000000000246 R12: > > >> 00005578ae677fc0 > > >> [ 17.220342] R13: 0000000000020000 R14: 00005578ae651750 R15: > > >> 0000000000000000 > > >> [ 17.220344] </TASK> > > >> [ 17.220345] Modules linked in: radeon(+) snd_hda_codec_hdmi > > >> snd_seq_midi snd_seq_midi_event snd_seq snd_hda_intel > > >> snd_intel_dspcfg snd_emu10k1 snd_hda_codec drm_ttm_helper ttm > > >> snd_util_mem drm_suballoc_helper snd_ac97_codec snd_hda_core > > >> drm_display_helper ac97_bus snd_rawmidi snd_hwdep snd_seq_device > > >> snd_pcm drm_kms_helper edac_mce_amd sha512_ssse3 sha512_generic > > >> k10temp sha256_ssse3 sha1_ssse3 drm aesni_intel snd_timer gf128mul > > >> crypto_simd cryptd acpi_cpufreq evdev pcspkr serio_raw emu10k1_gp > > >> gameport at24 regmap_i2c i2c_algo_bit snd video soundcore wmi button > > >> sp5100_tco ext4 crc32c_generic crc16 mbcache jbd2 uas usb_storage > > >> hid_generic usbhid hid sg sr_mod sd_mod cdrom ata_generic > > >> firewire_ohci crc32_pclmul crc32c_intel firewire_core crc_itu_t > > >> pata_atiixp i2c_piix4 i2c_smbus ahci r8169 libahci xhci_pci ohci_pci > > >> realtek libata mdio_devres ehci_pci ohci_hcd xhci_hcd scsi_mod > > >> ehci_hcd scsi_common usbcore libphy usb_common > > >> [ 17.220388] CR2: 00000000000000a0 > > >> [ 17.220390] ---[ end trace 0000000000000000 ]--- > > >> > > >> Happy to provide additional information and run tests. > > >> > > >> Regards, > > >> > > >> Arthur Marsh. > > > > > > > -- > > -- > > Thomas Zimmermann > > Graphics Driver Developer > > SUSE Software Solutions Germany GmbH > > Frankenstrasse 146, 90461 Nuernberg, Germany > > GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman > > HRB 36809 (AG Nuernberg) > > > ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: radeon ARUBA NULL pointer dereference 2024-09-24 19:30 ` Ewan Milne @ 2024-09-25 18:13 ` Ewan Milne 0 siblings, 0 replies; 29+ messages in thread From: Ewan Milne @ 2024-09-25 18:13 UTC (permalink / raw) To: Alex Deucher Cc: Thomas Zimmermann, Arthur Marsh, Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, linux-kernel, wuhoipok, iommu, the arch/x86 maintainers, Nilesh Javali, Martin K. Petersen Follow-up, qla2xxx appears to be fixed, most recent test was with: commit 684a64bf32b6e488004e0ad7f0d7e922798f65b6 (HEAD -> master, origin/master, origin/HEAD) Merge: f7fccaa77271 68898131d2df Author: Linus Torvalds <torvalds@linux-foundation.org> Date: Tue Sep 24 15:44:18 2024 -0700 Merge tag 'nfs-for-6.12-1' of git://git.linux-nfs.org/projects/anna/linux-nfs I suppose the most likely fix was probably this one but I do not have the HW to verify (report I got was on an AMD EPYC 7262): commit b348b6d17fd1d5d89b86db602f02bea54a754bd8 Author: Leon Romanovsky <leon@kernel.org> Date: Sun Sep 22 21:09:48 2024 +0300 dma-mapping: report unlimited DMA addressing in IOMMU DMA path -Ewan On Tue, Sep 24, 2024 at 3:30 PM Ewan Milne <emilne@redhat.com> wrote: > > I think we are seeing a similar problem w/qla2xxx panicing at boot: > ^ permalink raw reply [flat|nested] 29+ messages in thread
* NULL pointer dereference after ib test on ring 7 succeeded 2024-09-24 14:22 ` Alex Deucher 2024-09-24 19:30 ` Ewan Milne @ 2024-09-25 0:22 ` Arthur Marsh 2024-09-25 8:02 ` Thomas Zimmermann 1 sibling, 1 reply; 29+ messages in thread From: Arthur Marsh @ 2024-09-25 0:22 UTC (permalink / raw) To: alexdeucher Cc: Xinhui.Pan, airlied, alexander.deucher, amd-gfx, arthur.marsh, christian.koenig, daniel, dri-devel, iommu, linux-kernel, tzimmermann, wuhoipok, x86 After rebuilding current Linus git head with: dma-mapping: report unlimited DMA addressing in IOMMU DMA path b348b6d17fd1d5d89b86db602f02bea54a754bd8 applied, the radeon module load gets further before hitting another NULL pointer dereference: [ 17.777472] [drm] radeon kernel modesetting enabled. [ 17.777536] radeon 0000:00:01.0: vgaarb: deactivate vga console [ 17.778276] Console: switching to colour dummy device 80x25 [ 17.778519] [drm] initializing kernel modesetting (ARUBA 0x1002:0x990C 0x1002:0x0123 0x00). [ 17.778600] ATOM BIOS: 113 [ 17.778658] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - 0x000000002FFFFFFF (768M used) [ 17.778661] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - 0x000000006FFFFFFF [ 17.778665] [drm] Detected VRAM RAM=768M, BAR=256M [ 17.778665] [drm] RAM width 64bits DDR [ 17.778764] [drm] radeon: 768M of VRAM memory ready [ 17.778766] [drm] radeon: 1024M of GTT memory ready. [ 17.778777] [drm] Loading ARUBA Microcode [ 18.038084] [drm] Internal thermal controller without fan control [ 18.038425] [drm] radeon: dpm initialized [ 18.333508] [drm] Found VCE firmware/feedback version 50.0.1 / 17! [ 18.333548] [drm] GART: num cpu pages 262144, num gpu pages 262144 [ 18.353624] [drm] PCIE GART of 1024M enabled (table at 0x00000000001D6000). [ 18.353755] radeon 0000:00:01.0: WB enabled [ 18.353758] radeon 0000:00:01.0: fence driver on ring 0 use gpu addr 0x0000000030000c00 [ 18.354136] radeon 0000:00:01.0: fence driver on ring 5 use gpu addr 0x0000000000075a18 [ 18.374206] radeon 0000:00:01.0: fence driver on ring 6 use gpu addr 0x0000000030000c18 [ 18.374208] radeon 0000:00:01.0: fence driver on ring 7 use gpu addr 0x0000000030000c1c [ 18.374210] radeon 0000:00:01.0: fence driver on ring 1 use gpu addr 0x0000000030000c04 [ 18.374212] radeon 0000:00:01.0: fence driver on ring 2 use gpu addr 0x0000000030000c08 [ 18.374213] radeon 0000:00:01.0: fence driver on ring 3 use gpu addr 0x0000000030000c0c [ 18.374214] radeon 0000:00:01.0: fence driver on ring 4 use gpu addr 0x0000000030000c10 [ 18.374469] radeon 0000:00:01.0: radeon: MSI limited to 32-bit [ 18.374525] radeon 0000:00:01.0: radeon: using MSI. [ 18.374604] [drm] radeon: irq initialized. [ 18.392823] [drm] ring test on 0 succeeded in 3 usecs [ 18.392831] [drm] ring test on 3 succeeded in 4 usecs [ 18.392836] [drm] ring test on 4 succeeded in 3 usecs [ 18.438526] [drm] ring test on 5 succeeded in 2 usecs [ 18.458380] [drm] UVD initialized successfully. [ 18.567616] [drm] ring test on 6 succeeded in 18 usecs [ 18.567626] [drm] ring test on 7 succeeded in 3 usecs [ 18.567627] [drm] VCE initialized successfully. [ 18.567686] snd_hda_intel 0000:00:01.1: bound 0000:00:01.0 (ops radeon_audio_component_bind_ops [radeon]) [ 18.567925] [drm] ib test on ring 0 succeeded in 0 usecs [ 18.567968] [drm] ib test on ring 3 succeeded in 0 usecs [ 18.568008] [drm] ib test on ring 4 succeeded in 0 usecs [ 19.094527] [drm] ib test on ring 5 succeeded [ 19.257713] mc: Linux media interface: v0.10 [ 19.638235] [drm] ib test on ring 6 succeeded [ 20.017069] usb 1-3: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state [ 20.048473] usb 1-3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer [ 20.048493] dvbdev: DVB: registering new adapter (Realtek RTL2832U reference design) [ 20.048497] usb 1-3: media controller created [ 20.049487] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered. [ 20.150361] [drm] ib test on ring 7 succeeded [ 20.150700] BUG: kernel NULL pointer dereference, address: 0000000000000050 [ 20.150702] #PF: supervisor read access in kernel mode [ 20.150704] #PF: error_code(0x0000) - not-present page [ 20.150705] PGD 0 P4D 0 [ 20.150707] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI [ 20.150710] CPU: 0 UID: 0 PID: 446 Comm: udevd Not tainted 6.11.0+ #6122 [ 20.150713] Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 [ 20.150714] RIP: 0010:drm_dp_aux_register+0x59/0x110 [drm_display_helper] [ 20.150732] Code: a1 c0 48 85 f6 48 89 83 b8 00 00 00 74 1c 48 8d bb b4 03 00 00 ba 30 00 00 00 e8 52 e5 60 db 48 8d 7b 08 5b 5d e9 b7 ea 37 db <48> 8b 70 50 48 85 f6 75 db 48 8b 30 eb d6 48 8d ab 88 04 00 00 48 [ 20.150734] RSP: 0018:ffff9eb8013cb960 EFLAGS: 00010246 [ 20.150736] RAX: 0000000000000000 RBX: ffff8f1983bfc508 RCX: ffffffffc0bd1bc0 [ 20.150737] RDX: ffffffffc0a1de40 RSI: 0000000000000000 RDI: ffff8f1983bfc9f0 [ 20.150738] RBP: ffff8f1983bfc9f0 R08: ffff8f199ca70008 R09: 00000000c0c0c0c0 [ 20.150739] R10: 0000000000000000 R11: 0000000000000001 R12: ffff8f199da9af50 [ 20.150740] R13: ffff8f199da9b092 R14: ffff8f199da9af2e R15: 0000000000000018 [ 20.150741] FS: 00007ff9b9e6a840(0000) GS:ffff8f1caf800000(0000) knlGS:0000000000000000 [ 20.150743] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 20.150744] CR2: 0000000000000050 CR3: 00000001033e4000 CR4: 00000000000406f0 [ 20.150745] Call Trace: [ 20.150747] <TASK> [ 20.150748] ? __die_body.cold+0x19/0x1e [ 20.150753] ? page_fault_oops+0xa8/0x230 [ 20.150757] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] [ 20.150767] ? search_module_extables+0x4f/0x90 [ 20.150771] ? fixup_exception+0x36/0x2f0 [ 20.150773] ? exc_page_fault+0x88/0x1b0 [ 20.150776] ? asm_exc_page_fault+0x22/0x30 [ 20.150779] ? __pfx_radeon_dp_aux_transfer_atom+0x10/0x10 [radeon] [ 20.150888] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] [ 20.150900] radeon_dp_aux_init+0x91/0xc0 [radeon] [ 20.150984] radeon_get_atom_connector_info_from_object_table+0x58e/0x880 [radeon] [ 20.151047] ? radeon_get_atom_connector_info_from_supported_devices_table+0x5cf/0x600 [radeon] [ 20.151111] ? kstrdup+0x4c/0x70 [ 20.151115] ? __kmalloc_noprof+0x24d/0x340 [ 20.151118] radeon_modeset_init+0x375/0x470 [radeon] [ 20.151187] ? radeon_device_init+0x667/0xb40 [radeon] [ 20.151250] radeon_driver_load_kms+0xc2/0x260 [radeon] [ 20.151312] radeon_pci_probe+0xff/0x170 [radeon] [ 20.151374] pci_device_probe+0xbe/0x1a0 [ 20.151377] really_probe+0xde/0x350 [ 20.151380] ? pm_runtime_barrier+0x61/0xb0 [ 20.151383] ? __pfx___driver_attach+0x10/0x10 [ 20.151386] __driver_probe_device+0x78/0x110 [ 20.151388] driver_probe_device+0x2d/0xc0 [ 20.151390] __driver_attach+0xc9/0x1c0 [ 20.151393] bus_for_each_dev+0x6a/0xb0 [ 20.151395] ? migrate_enable+0xbf/0xf0 [ 20.151397] bus_add_driver+0x139/0x220 [ 20.151400] driver_register+0x6e/0xc0 [ 20.151402] ? __pfx_radeon_module_init+0x10/0x10 [radeon] [ 20.151463] do_one_initcall+0x42/0x210 [ 20.151467] ? __kmalloc_cache_noprof+0x89/0x230 [ 20.151469] do_init_module+0x60/0x210 [ 20.151472] init_module_from_file+0x89/0xc0 [ 20.151475] __x64_sys_finit_module+0x142/0x390 [ 20.151477] do_syscall_64+0x47/0x110 [ 20.151480] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 20.151483] RIP: 0033:0x7ff9b9d82279 [ 20.151485] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 77 6b 0d 00 f7 d8 64 89 01 48 [ 20.151486] RSP: 002b:00007fffc5f84708 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 20.151488] RAX: ffffffffffffffda RBX: 000055d02068d9b0 RCX: 00007ff9b9d82279 [ 20.151489] RDX: 0000000000000000 RSI: 000055d0206807f0 RDI: 0000000000000012 [ 20.151490] RBP: 0000000000000000 R08: 0000000000000001 R09: 000055d02066d540 [ 20.151491] R10: 0000000000000040 R11: 0000000000000246 R12: 000055d0206807f0 [ 20.151492] R13: 0000000000020000 R14: 000055d02067e510 R15: 0000000000000000 [ 20.151494] </TASK> [ 20.151494] Modules linked in: i2c_mux dvb_usb_rtl28xxu(+) dvb_usb_v2 dvb_core mc snd_emu10k1_synth radeon(+) snd_emux_synth snd_seq_midi_emul snd_seq_virmidi drm_ttm_helper snd_seq_midi snd_seq_midi_event ttm snd_seq edac_mce_amd snd_hda_codec_hdmi sha512_ssse3 sha512_generic sha256_ssse3 sha1_ssse3 snd_emu10k1 aesni_intel drm_suballoc_helper snd_hda_intel drm_display_helper snd_intel_dspcfg snd_hda_codec snd_util_mem gf128mul snd_ac97_codec snd_hda_core drm_kms_helper crypto_simd cryptd ac97_bus snd_rawmidi k10temp snd_seq_device snd_hwdep snd_pcm drm acpi_cpufreq evdev serio_raw pcspkr at24 emu10k1_gp gameport regmap_i2c i2c_algo_bit snd_timer video snd sp5100_tco soundcore wmi button ext4 crc32c_generic crc16 mbcache jbd2 uas usb_storage hid_generic usbhid hid sg sr_mod cdrom sd_mod ata_generic firewire_ohci crc32_pclmul crc32c_intel ahci i2c_piix4 firewire_core crc_itu_t pata_atiixp libahci i2c_smbus ohci_pci xhci_pci libata xhci_hcd ehci_pci ohci_hcd r8169 ehci_hcd realtek scsi_mod mdio_devres usbcore [ 20.151550] scsi_common libphy usb_common [ 20.151553] CR2: 0000000000000050 [ 20.151555] ---[ end trace 0000000000000000 ]--- Regards, Arthur. ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: NULL pointer dereference after ib test on ring 7 succeeded 2024-09-25 0:22 ` NULL pointer dereference after ib test on ring 7 succeeded Arthur Marsh @ 2024-09-25 8:02 ` Thomas Zimmermann 2024-09-30 15:25 ` NULL pointer dereference with kernel 6.12.0-rc1 and ARUBA GPU Arthur Marsh 0 siblings, 1 reply; 29+ messages in thread From: Thomas Zimmermann @ 2024-09-25 8:02 UTC (permalink / raw) To: Arthur Marsh, alexdeucher Cc: Xinhui.Pan, airlied, alexander.deucher, amd-gfx, christian.koenig, daniel, dri-devel, iommu, linux-kernel, wuhoipok, x86 Hi Am 25.09.24 um 02:22 schrieb Arthur Marsh: > After rebuilding current Linus git head with: > > dma-mapping: report unlimited DMA addressing in IOMMU DMA path > b348b6d17fd1d5d89b86db602f02bea54a754bd8 I cannot yet apply this patch locally as a function is missing. I'll wait for -rc1 to do further debugging. Best regards Thomas > > applied, the radeon module load gets further before hitting another > NULL pointer dereference: > > [ 17.777472] [drm] radeon kernel modesetting enabled. > [ 17.777536] radeon 0000:00:01.0: vgaarb: deactivate vga console > [ 17.778276] Console: switching to colour dummy device 80x25 > [ 17.778519] [drm] initializing kernel modesetting (ARUBA 0x1002:0x990C 0x1002:0x0123 0x00). > [ 17.778600] ATOM BIOS: 113 > [ 17.778658] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - 0x000000002FFFFFFF (768M used) > [ 17.778661] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - 0x000000006FFFFFFF > [ 17.778665] [drm] Detected VRAM RAM=768M, BAR=256M > [ 17.778665] [drm] RAM width 64bits DDR > [ 17.778764] [drm] radeon: 768M of VRAM memory ready > [ 17.778766] [drm] radeon: 1024M of GTT memory ready. > [ 17.778777] [drm] Loading ARUBA Microcode > [ 18.038084] [drm] Internal thermal controller without fan control > [ 18.038425] [drm] radeon: dpm initialized > [ 18.333508] [drm] Found VCE firmware/feedback version 50.0.1 / 17! > [ 18.333548] [drm] GART: num cpu pages 262144, num gpu pages 262144 > [ 18.353624] [drm] PCIE GART of 1024M enabled (table at 0x00000000001D6000). > [ 18.353755] radeon 0000:00:01.0: WB enabled > [ 18.353758] radeon 0000:00:01.0: fence driver on ring 0 use gpu addr 0x0000000030000c00 > [ 18.354136] radeon 0000:00:01.0: fence driver on ring 5 use gpu addr 0x0000000000075a18 > [ 18.374206] radeon 0000:00:01.0: fence driver on ring 6 use gpu addr 0x0000000030000c18 > [ 18.374208] radeon 0000:00:01.0: fence driver on ring 7 use gpu addr 0x0000000030000c1c > [ 18.374210] radeon 0000:00:01.0: fence driver on ring 1 use gpu addr 0x0000000030000c04 > [ 18.374212] radeon 0000:00:01.0: fence driver on ring 2 use gpu addr 0x0000000030000c08 > [ 18.374213] radeon 0000:00:01.0: fence driver on ring 3 use gpu addr 0x0000000030000c0c > [ 18.374214] radeon 0000:00:01.0: fence driver on ring 4 use gpu addr 0x0000000030000c10 > [ 18.374469] radeon 0000:00:01.0: radeon: MSI limited to 32-bit > [ 18.374525] radeon 0000:00:01.0: radeon: using MSI. > [ 18.374604] [drm] radeon: irq initialized. > [ 18.392823] [drm] ring test on 0 succeeded in 3 usecs > [ 18.392831] [drm] ring test on 3 succeeded in 4 usecs > [ 18.392836] [drm] ring test on 4 succeeded in 3 usecs > [ 18.438526] [drm] ring test on 5 succeeded in 2 usecs > [ 18.458380] [drm] UVD initialized successfully. > [ 18.567616] [drm] ring test on 6 succeeded in 18 usecs > [ 18.567626] [drm] ring test on 7 succeeded in 3 usecs > [ 18.567627] [drm] VCE initialized successfully. > [ 18.567686] snd_hda_intel 0000:00:01.1: bound 0000:00:01.0 (ops radeon_audio_component_bind_ops [radeon]) > [ 18.567925] [drm] ib test on ring 0 succeeded in 0 usecs > [ 18.567968] [drm] ib test on ring 3 succeeded in 0 usecs > [ 18.568008] [drm] ib test on ring 4 succeeded in 0 usecs > [ 19.094527] [drm] ib test on ring 5 succeeded > [ 19.257713] mc: Linux media interface: v0.10 > [ 19.638235] [drm] ib test on ring 6 succeeded > [ 20.017069] usb 1-3: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state > [ 20.048473] usb 1-3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer > [ 20.048493] dvbdev: DVB: registering new adapter (Realtek RTL2832U reference design) > [ 20.048497] usb 1-3: media controller created > [ 20.049487] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered. > [ 20.150361] [drm] ib test on ring 7 succeeded > [ 20.150700] BUG: kernel NULL pointer dereference, address: 0000000000000050 > [ 20.150702] #PF: supervisor read access in kernel mode > [ 20.150704] #PF: error_code(0x0000) - not-present page > [ 20.150705] PGD 0 P4D 0 > [ 20.150707] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI > [ 20.150710] CPU: 0 UID: 0 PID: 446 Comm: udevd Not tainted 6.11.0+ #6122 > [ 20.150713] Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 > [ 20.150714] RIP: 0010:drm_dp_aux_register+0x59/0x110 [drm_display_helper] > [ 20.150732] Code: a1 c0 48 85 f6 48 89 83 b8 00 00 00 74 1c 48 8d bb b4 03 00 00 ba 30 00 00 00 e8 52 e5 60 db 48 8d 7b 08 5b 5d e9 b7 ea 37 db <48> 8b 70 50 48 85 f6 75 db 48 8b 30 eb d6 48 8d ab 88 04 00 00 48 > [ 20.150734] RSP: 0018:ffff9eb8013cb960 EFLAGS: 00010246 > [ 20.150736] RAX: 0000000000000000 RBX: ffff8f1983bfc508 RCX: ffffffffc0bd1bc0 > [ 20.150737] RDX: ffffffffc0a1de40 RSI: 0000000000000000 RDI: ffff8f1983bfc9f0 > [ 20.150738] RBP: ffff8f1983bfc9f0 R08: ffff8f199ca70008 R09: 00000000c0c0c0c0 > [ 20.150739] R10: 0000000000000000 R11: 0000000000000001 R12: ffff8f199da9af50 > [ 20.150740] R13: ffff8f199da9b092 R14: ffff8f199da9af2e R15: 0000000000000018 > [ 20.150741] FS: 00007ff9b9e6a840(0000) GS:ffff8f1caf800000(0000) knlGS:0000000000000000 > [ 20.150743] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 20.150744] CR2: 0000000000000050 CR3: 00000001033e4000 CR4: 00000000000406f0 > [ 20.150745] Call Trace: > [ 20.150747] <TASK> > [ 20.150748] ? __die_body.cold+0x19/0x1e > [ 20.150753] ? page_fault_oops+0xa8/0x230 > [ 20.150757] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] > [ 20.150767] ? search_module_extables+0x4f/0x90 > [ 20.150771] ? fixup_exception+0x36/0x2f0 > [ 20.150773] ? exc_page_fault+0x88/0x1b0 > [ 20.150776] ? asm_exc_page_fault+0x22/0x30 > [ 20.150779] ? __pfx_radeon_dp_aux_transfer_atom+0x10/0x10 [radeon] > [ 20.150888] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] > [ 20.150900] radeon_dp_aux_init+0x91/0xc0 [radeon] > [ 20.150984] radeon_get_atom_connector_info_from_object_table+0x58e/0x880 [radeon] > [ 20.151047] ? radeon_get_atom_connector_info_from_supported_devices_table+0x5cf/0x600 [radeon] > [ 20.151111] ? kstrdup+0x4c/0x70 > [ 20.151115] ? __kmalloc_noprof+0x24d/0x340 > [ 20.151118] radeon_modeset_init+0x375/0x470 [radeon] > [ 20.151187] ? radeon_device_init+0x667/0xb40 [radeon] > [ 20.151250] radeon_driver_load_kms+0xc2/0x260 [radeon] > [ 20.151312] radeon_pci_probe+0xff/0x170 [radeon] > [ 20.151374] pci_device_probe+0xbe/0x1a0 > [ 20.151377] really_probe+0xde/0x350 > [ 20.151380] ? pm_runtime_barrier+0x61/0xb0 > [ 20.151383] ? __pfx___driver_attach+0x10/0x10 > [ 20.151386] __driver_probe_device+0x78/0x110 > [ 20.151388] driver_probe_device+0x2d/0xc0 > [ 20.151390] __driver_attach+0xc9/0x1c0 > [ 20.151393] bus_for_each_dev+0x6a/0xb0 > [ 20.151395] ? migrate_enable+0xbf/0xf0 > [ 20.151397] bus_add_driver+0x139/0x220 > [ 20.151400] driver_register+0x6e/0xc0 > [ 20.151402] ? __pfx_radeon_module_init+0x10/0x10 [radeon] > [ 20.151463] do_one_initcall+0x42/0x210 > [ 20.151467] ? __kmalloc_cache_noprof+0x89/0x230 > [ 20.151469] do_init_module+0x60/0x210 > [ 20.151472] init_module_from_file+0x89/0xc0 > [ 20.151475] __x64_sys_finit_module+0x142/0x390 > [ 20.151477] do_syscall_64+0x47/0x110 > [ 20.151480] entry_SYSCALL_64_after_hwframe+0x76/0x7e > [ 20.151483] RIP: 0033:0x7ff9b9d82279 > [ 20.151485] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 77 6b 0d 00 f7 d8 64 89 01 48 > [ 20.151486] RSP: 002b:00007fffc5f84708 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 > [ 20.151488] RAX: ffffffffffffffda RBX: 000055d02068d9b0 RCX: 00007ff9b9d82279 > [ 20.151489] RDX: 0000000000000000 RSI: 000055d0206807f0 RDI: 0000000000000012 > [ 20.151490] RBP: 0000000000000000 R08: 0000000000000001 R09: 000055d02066d540 > [ 20.151491] R10: 0000000000000040 R11: 0000000000000246 R12: 000055d0206807f0 > [ 20.151492] R13: 0000000000020000 R14: 000055d02067e510 R15: 0000000000000000 > [ 20.151494] </TASK> > [ 20.151494] Modules linked in: i2c_mux dvb_usb_rtl28xxu(+) dvb_usb_v2 dvb_core mc snd_emu10k1_synth radeon(+) snd_emux_synth snd_seq_midi_emul snd_seq_virmidi drm_ttm_helper snd_seq_midi snd_seq_midi_event ttm snd_seq edac_mce_amd snd_hda_codec_hdmi sha512_ssse3 sha512_generic sha256_ssse3 sha1_ssse3 snd_emu10k1 aesni_intel drm_suballoc_helper snd_hda_intel drm_display_helper snd_intel_dspcfg snd_hda_codec snd_util_mem gf128mul snd_ac97_codec snd_hda_core drm_kms_helper crypto_simd cryptd ac97_bus snd_rawmidi k10temp snd_seq_device snd_hwdep snd_pcm drm acpi_cpufreq evdev serio_raw pcspkr at24 emu10k1_gp gameport regmap_i2c i2c_algo_bit snd_timer video snd sp5100_tco soundcore wmi button ext4 crc32c_generic crc16 mbcache jbd2 uas usb_storage hid_generic usbhid hid sg sr_mod cdrom sd_mod ata_generic firewire_ohci crc32_pclmul crc32c_intel ahci i2c_piix4 firewire_core crc_itu_t pata_atiixp libahci i2c_smbus ohci_pci xhci_pci libata xhci_hcd ehci_pci ohci_hcd r8169 ehci_hcd realtek scsi_mod mdio_devres usbcore > [ 20.151550] scsi_common libphy usb_common > [ 20.151553] CR2: 0000000000000050 > [ 20.151555] ---[ end trace 0000000000000000 ]--- > > Regards, > > Arthur. -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* NULL pointer dereference with kernel 6.12.0-rc1 and ARUBA GPU 2024-09-25 8:02 ` Thomas Zimmermann @ 2024-09-30 15:25 ` Arthur Marsh 2024-09-30 17:54 ` Christian König 0 siblings, 1 reply; 29+ messages in thread From: Arthur Marsh @ 2024-09-30 15:25 UTC (permalink / raw) To: tzimmermann Cc: Xinhui.Pan, airlied, alexander.deucher, alexdeucher, amd-gfx, arthur.marsh, christian.koenig, daniel, dri-devel, iommu, linux-kernel, wuhoipok, x86 [ 13.069630] [drm] radeon kernel modesetting enabled. [ 13.069681] radeon 0000:00:01.0: vgaarb: deactivate vga console [ 13.070435] Console: switching to colour dummy device 80x25 [ 13.070632] [drm] initializing kernel modesetting (ARUBA 0x1002:0x990C 0x1002:0x0123 0x00). [ 13.070718] ATOM BIOS: 113 [ 13.070778] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - 0x000000002FFFFFFF (768M used) [ 13.070781] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - 0x000000006FFFFFFF [ 13.070785] [drm] Detected VRAM RAM=768M, BAR=256M [ 13.070786] [drm] RAM width 64bits DDR [ 13.070884] [drm] radeon: 768M of VRAM memory ready [ 13.070885] [drm] radeon: 1024M of GTT memory ready. [ 13.070896] [drm] Loading ARUBA Microcode [ 13.504398] [drm] Internal thermal controller without fan control [ 13.504566] [drm] radeon: dpm initialized [ 13.839229] [drm] Found VCE firmware/feedback version 50.0.1 / 17! [ 13.839264] [drm] GART: num cpu pages 262144, num gpu pages 262144 [ 13.863929] [drm] PCIE GART of 1024M enabled (table at 0x00000000001D6000). [ 13.864085] radeon 0000:00:01.0: WB enabled [ 13.864088] radeon 0000:00:01.0: fence driver on ring 0 use gpu addr 0x0000000030000c00 [ 13.864467] radeon 0000:00:01.0: fence driver on ring 5 use gpu addr 0x0000000000075a18 [ 13.884497] radeon 0000:00:01.0: fence driver on ring 6 use gpu addr 0x0000000030000c18 [ 13.884502] radeon 0000:00:01.0: fence driver on ring 7 use gpu addr 0x0000000030000c1c [ 13.884503] radeon 0000:00:01.0: fence driver on ring 1 use gpu addr 0x0000000030000c04 [ 13.884505] radeon 0000:00:01.0: fence driver on ring 2 use gpu addr 0x0000000030000c08 [ 13.884506] radeon 0000:00:01.0: fence driver on ring 3 use gpu addr 0x0000000030000c0c [ 13.884507] radeon 0000:00:01.0: fence driver on ring 4 use gpu addr 0x0000000030000c10 [ 13.884862] radeon 0000:00:01.0: radeon: MSI limited to 32-bit [ 13.884921] radeon 0000:00:01.0: radeon: using MSI. [ 13.885003] [drm] radeon: irq initialized. [ 13.903273] [drm] ring test on 0 succeeded in 3 usecs [ 13.903281] [drm] ring test on 3 succeeded in 4 usecs [ 13.903286] [drm] ring test on 4 succeeded in 3 usecs [ 13.949128] [drm] ring test on 5 succeeded in 2 usecs [ 13.968988] [drm] UVD initialized successfully. [ 14.078221] [drm] ring test on 6 succeeded in 17 usecs [ 14.078234] [drm] ring test on 7 succeeded in 3 usecs [ 14.078236] [drm] VCE initialized successfully. [ 14.078314] snd_hda_intel 0000:00:01.1: bound 0000:00:01.0 (ops radeon_audio_component_bind_ops [radeon]) [ 14.078502] [drm] ib test on ring 0 succeeded in 0 usecs [ 14.078555] [drm] ib test on ring 3 succeeded in 0 usecs [ 14.078606] [drm] ib test on ring 4 succeeded in 0 usecs [ 14.153378] mc: Linux media interface: v0.10 [ 14.593759] usb 1-3: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state [ 14.614227] [drm] ib test on ring 5 succeeded [ 14.625865] usb 1-3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer [ 14.625885] dvbdev: DVB: registering new adapter (Realtek RTL2832U reference design) [ 14.625889] usb 1-3: media controller created [ 14.627064] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered. [ 14.801142] i2c i2c-5: Added multiplexed i2c bus 6 [ 14.801149] rtl2832 5-0010: Realtek RTL2832 successfully attached [ 14.801176] usb 1-3: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))... [ 14.801189] dvbdev: dvb_create_media_entity: media entity 'Realtek RTL2832 (DVB-T)' registered. [ 14.957783] i2c i2c-6: fc0012: Fitipower FC0012 successfully identified [ 15.158461] [drm] ib test on ring 6 succeeded [ 15.178787] videodev: Linux video capture interface: v2.00 [ 15.460709] rtl2832_sdr rtl2832_sdr.1.auto: Registered as swradio0 [ 15.460715] rtl2832_sdr rtl2832_sdr.1.auto: Realtek RTL2832 SDR attached [ 15.460718] rtl2832_sdr rtl2832_sdr.1.auto: SDR API is still slightly experimental and functionality changes may follow [ 15.477759] usb 1-3: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected [ 15.477878] usbcore: registered new interface driver dvb_usb_rtl28xxu [ 15.670413] [drm] ib test on ring 7 succeeded [ 15.671111] BUG: kernel NULL pointer dereference, address: 0000000000000050 [ 15.671114] #PF: supervisor read access in kernel mode [ 15.671117] #PF: error_code(0x0000) - not-present page [ 15.671119] PGD 0 P4D 0 [ 15.671123] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI [ 15.671127] CPU: 2 UID: 0 PID: 437 Comm: udevd Not tainted 6.12.0-rc1 #6131 [ 15.671132] Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 [ 15.671134] RIP: 0010:drm_dp_aux_register+0x59/0x110 [drm_display_helper] [ 15.671164] Code: 86 c0 48 85 f6 48 89 83 b8 00 00 00 74 1c 48 8d bb b4 03 00 00 ba 30 00 00 00 e8 52 35 bc c7 48 8d 7b 08 5b 5d e9 37 31 93 c7 <48> 8b 70 50 48 85 f6 75 db 48 8b 30 eb d6 48 8d ab 88 04 00 00 48 [ 15.671167] RSP: 0018:ffffb37f80e33960 EFLAGS: 00010246 [ 15.671170] RAX: 0000000000000000 RBX: ffff892d407ee508 RCX: ffffffffc09b3bc0 [ 15.671172] RDX: ffffffffc0869e40 RSI: 0000000000000000 RDI: ffff892d407ee9f0 [ 15.671174] RBP: ffff892d407ee9f0 R08: ffff892d42fb8008 R09: 00000000c0c0c0c0 [ 15.671176] R10: 0000000000000000 R11: 0000000000000001 R12: ffff892d5b64af50 [ 15.671178] R13: ffff892d5b64b092 R14: ffff892d5b64af2e R15: 0000000000000018 [ 15.671181] FS: 00007f066d882840(0000) GS:ffff89306f900000(0000) knlGS:0000000000000000 [ 15.671183] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 15.671185] CR2: 0000000000000050 CR3: 00000001047a6000 CR4: 00000000000406f0 [ 15.671188] Call Trace: [ 15.671190] <TASK> [ 15.671192] ? __die_body.cold+0x19/0x1e [ 15.671200] ? page_fault_oops+0xa8/0x230 [ 15.671206] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] [ 15.671227] ? search_module_extables+0x4f/0x90 [ 15.671233] ? fixup_exception+0x36/0x2f0 [ 15.671239] ? exc_page_fault+0x88/0x1b0 [ 15.671244] ? asm_exc_page_fault+0x22/0x30 [ 15.671251] ? __pfx_radeon_dp_aux_transfer_atom+0x10/0x10 [radeon] [ 15.671437] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] [ 15.671463] radeon_dp_aux_init+0x91/0xc0 [radeon] [ 15.671634] radeon_get_atom_connector_info_from_object_table+0x58e/0x880 [radeon] [ 15.671764] ? radeon_get_atom_connector_info_from_supported_devices_table+0x5cf/0x600 [radeon] [ 15.671895] ? kstrdup+0x4c/0x70 [ 15.671902] ? __kmalloc_noprof+0x24d/0x340 [ 15.671908] radeon_modeset_init+0x375/0x470 [radeon] [ 15.672050] ? radeon_device_init+0x667/0xb40 [radeon] [ 15.672179] radeon_driver_load_kms+0xc2/0x260 [radeon] [ 15.672308] radeon_pci_probe+0xff/0x170 [radeon] [ 15.672436] pci_device_probe+0xbe/0x1a0 [ 15.672441] really_probe+0xde/0x350 [ 15.672447] ? pm_runtime_barrier+0x61/0xb0 [ 15.672452] ? __pfx___driver_attach+0x10/0x10 [ 15.672457] __driver_probe_device+0x78/0x110 [ 15.672462] driver_probe_device+0x2d/0xc0 [ 15.672467] __driver_attach+0xc9/0x1c0 [ 15.672472] bus_for_each_dev+0x6a/0xb0 [ 15.672476] ? migrate_enable+0xbf/0xf0 [ 15.672480] bus_add_driver+0x139/0x220 [ 15.672485] driver_register+0x6e/0xc0 [ 15.672491] ? __pfx_radeon_module_init+0x10/0x10 [radeon] [ 15.672616] do_one_initcall+0x42/0x210 [ 15.672622] ? __kmalloc_cache_noprof+0x89/0x230 [ 15.672627] do_init_module+0x60/0x210 [ 15.672631] init_module_from_file+0x89/0xc0 [ 15.672637] __x64_sys_finit_module+0x142/0x390 [ 15.672643] do_syscall_64+0x47/0x110 [ 15.672647] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 15.672653] RIP: 0033:0x7f066d6b3839 [ 15.672657] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d b7 85 0d 00 f7 d8 64 89 01 48 [ 15.672659] RSP: 002b:00007ffead344b38 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 [ 15.672663] RAX: ffffffffffffffda RBX: 00005586f29e09b0 RCX: 00007f066d6b3839 [ 15.672665] RDX: 0000000000000000 RSI: 00005586f29d08d0 RDI: 0000000000000011 [ 15.672667] RBP: 0000000000000000 R08: 0000000000000000 R09: 00005586f29c0540 [ 15.672669] R10: 00007f066d78cac0 R11: 0000000000000246 R12: 00005586f29d08d0 [ 15.672671] R13: 0000000000020000 R14: 00005586f29d82e0 R15: 0000000000000000 [ 15.672675] </TASK> [ 15.672676] Modules linked in: rtl2832_sdr videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev fc0012 rtl2832 i2c_mux dvb_usb_rtl28xxu dvb_usb_v2 dvb_core mc snd_emu10k1_synth snd_emux_synth snd_seq_midi_emul snd_seq_virmidi radeon(+) snd_seq_midi snd_seq_midi_event snd_seq snd_emu10k1 drm_ttm_helper ttm snd_hda_codec_hdmi drm_suballoc_helper snd_hda_intel snd_util_mem drm_display_helper snd_ac97_codec snd_intel_dspcfg snd_hda_codec snd_hda_core ac97_bus snd_hwdep snd_rawmidi snd_seq_device snd_pcm drm_kms_helper snd_timer edac_mce_amd k10temp sha512_ssse3 sha512_generic sha256_ssse3 sha1_ssse3 drm aesni_intel snd gf128mul at24 crypto_simd cryptd soundcore acpi_cpufreq regmap_i2c emu10k1_gp gameport pcspkr evdev serio_raw i2c_algo_bit video sp5100_tco wmi button ext4 crc32c_generic crc16 mbcache jbd2 hid_generic usbhid hid sg sr_mod cdrom sd_mod ata_generic crc32_pclmul firewire_ohci crc32c_intel firewire_core ahci i2c_piix4 crc_itu_t pata_atiixp i2c_smbus r8169 libahci ohci_pci xhci_pci libata [ 15.672761] realtek ohci_hcd ehci_pci xhci_hcd ehci_hcd mdio_devres scsi_mod scsi_common libphy usbcore usb_common [ 15.672773] CR2: 0000000000000050 [ 15.672776] ---[ end trace 0000000000000000 ]--- ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: NULL pointer dereference with kernel 6.12.0-rc1 and ARUBA GPU 2024-09-30 15:25 ` NULL pointer dereference with kernel 6.12.0-rc1 and ARUBA GPU Arthur Marsh @ 2024-09-30 17:54 ` Christian König 2024-10-07 12:44 ` Thomas Zimmermann 0 siblings, 1 reply; 29+ messages in thread From: Christian König @ 2024-09-30 17:54 UTC (permalink / raw) To: Arthur Marsh, tzimmermann Cc: Xinhui.Pan, airlied, alexander.deucher, alexdeucher, amd-gfx, daniel, dri-devel, iommu, linux-kernel, wuhoipok, x86 I've been running into the same issue as well. Going to take a look. Christian. Am 30.09.24 um 17:25 schrieb Arthur Marsh: > [ 13.069630] [drm] radeon kernel modesetting enabled. > [ 13.069681] radeon 0000:00:01.0: vgaarb: deactivate vga console > [ 13.070435] Console: switching to colour dummy device 80x25 > [ 13.070632] [drm] initializing kernel modesetting (ARUBA 0x1002:0x990C 0x1002:0x0123 0x00). > [ 13.070718] ATOM BIOS: 113 > [ 13.070778] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - 0x000000002FFFFFFF (768M used) > [ 13.070781] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - 0x000000006FFFFFFF > [ 13.070785] [drm] Detected VRAM RAM=768M, BAR=256M > [ 13.070786] [drm] RAM width 64bits DDR > [ 13.070884] [drm] radeon: 768M of VRAM memory ready > [ 13.070885] [drm] radeon: 1024M of GTT memory ready. > [ 13.070896] [drm] Loading ARUBA Microcode > [ 13.504398] [drm] Internal thermal controller without fan control > [ 13.504566] [drm] radeon: dpm initialized > [ 13.839229] [drm] Found VCE firmware/feedback version 50.0.1 / 17! > [ 13.839264] [drm] GART: num cpu pages 262144, num gpu pages 262144 > [ 13.863929] [drm] PCIE GART of 1024M enabled (table at 0x00000000001D6000). > [ 13.864085] radeon 0000:00:01.0: WB enabled > [ 13.864088] radeon 0000:00:01.0: fence driver on ring 0 use gpu addr 0x0000000030000c00 > [ 13.864467] radeon 0000:00:01.0: fence driver on ring 5 use gpu addr 0x0000000000075a18 > [ 13.884497] radeon 0000:00:01.0: fence driver on ring 6 use gpu addr 0x0000000030000c18 > [ 13.884502] radeon 0000:00:01.0: fence driver on ring 7 use gpu addr 0x0000000030000c1c > [ 13.884503] radeon 0000:00:01.0: fence driver on ring 1 use gpu addr 0x0000000030000c04 > [ 13.884505] radeon 0000:00:01.0: fence driver on ring 2 use gpu addr 0x0000000030000c08 > [ 13.884506] radeon 0000:00:01.0: fence driver on ring 3 use gpu addr 0x0000000030000c0c > [ 13.884507] radeon 0000:00:01.0: fence driver on ring 4 use gpu addr 0x0000000030000c10 > [ 13.884862] radeon 0000:00:01.0: radeon: MSI limited to 32-bit > [ 13.884921] radeon 0000:00:01.0: radeon: using MSI. > [ 13.885003] [drm] radeon: irq initialized. > [ 13.903273] [drm] ring test on 0 succeeded in 3 usecs > [ 13.903281] [drm] ring test on 3 succeeded in 4 usecs > [ 13.903286] [drm] ring test on 4 succeeded in 3 usecs > [ 13.949128] [drm] ring test on 5 succeeded in 2 usecs > [ 13.968988] [drm] UVD initialized successfully. > [ 14.078221] [drm] ring test on 6 succeeded in 17 usecs > [ 14.078234] [drm] ring test on 7 succeeded in 3 usecs > [ 14.078236] [drm] VCE initialized successfully. > [ 14.078314] snd_hda_intel 0000:00:01.1: bound 0000:00:01.0 (ops radeon_audio_component_bind_ops [radeon]) > [ 14.078502] [drm] ib test on ring 0 succeeded in 0 usecs > [ 14.078555] [drm] ib test on ring 3 succeeded in 0 usecs > [ 14.078606] [drm] ib test on ring 4 succeeded in 0 usecs > [ 14.153378] mc: Linux media interface: v0.10 > [ 14.593759] usb 1-3: dvb_usb_v2: found a 'Realtek RTL2832U reference design' in warm state > [ 14.614227] [drm] ib test on ring 5 succeeded > [ 14.625865] usb 1-3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer > [ 14.625885] dvbdev: DVB: registering new adapter (Realtek RTL2832U reference design) > [ 14.625889] usb 1-3: media controller created > [ 14.627064] dvbdev: dvb_create_media_entity: media entity 'dvb-demux' registered. > [ 14.801142] i2c i2c-5: Added multiplexed i2c bus 6 > [ 14.801149] rtl2832 5-0010: Realtek RTL2832 successfully attached > [ 14.801176] usb 1-3: DVB: registering adapter 0 frontend 0 (Realtek RTL2832 (DVB-T))... > [ 14.801189] dvbdev: dvb_create_media_entity: media entity 'Realtek RTL2832 (DVB-T)' registered. > [ 14.957783] i2c i2c-6: fc0012: Fitipower FC0012 successfully identified > [ 15.158461] [drm] ib test on ring 6 succeeded > [ 15.178787] videodev: Linux video capture interface: v2.00 > [ 15.460709] rtl2832_sdr rtl2832_sdr.1.auto: Registered as swradio0 > [ 15.460715] rtl2832_sdr rtl2832_sdr.1.auto: Realtek RTL2832 SDR attached > [ 15.460718] rtl2832_sdr rtl2832_sdr.1.auto: SDR API is still slightly experimental and functionality changes may follow > [ 15.477759] usb 1-3: dvb_usb_v2: 'Realtek RTL2832U reference design' successfully initialized and connected > [ 15.477878] usbcore: registered new interface driver dvb_usb_rtl28xxu > [ 15.670413] [drm] ib test on ring 7 succeeded > [ 15.671111] BUG: kernel NULL pointer dereference, address: 0000000000000050 > [ 15.671114] #PF: supervisor read access in kernel mode > [ 15.671117] #PF: error_code(0x0000) - not-present page > [ 15.671119] PGD 0 P4D 0 > [ 15.671123] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI > [ 15.671127] CPU: 2 UID: 0 PID: 437 Comm: udevd Not tainted 6.12.0-rc1 #6131 > [ 15.671132] Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 > [ 15.671134] RIP: 0010:drm_dp_aux_register+0x59/0x110 [drm_display_helper] > [ 15.671164] Code: 86 c0 48 85 f6 48 89 83 b8 00 00 00 74 1c 48 8d bb b4 03 00 00 ba 30 00 00 00 e8 52 35 bc c7 48 8d 7b 08 5b 5d e9 37 31 93 c7 <48> 8b 70 50 48 85 f6 75 db 48 8b 30 eb d6 48 8d ab 88 04 00 00 48 > [ 15.671167] RSP: 0018:ffffb37f80e33960 EFLAGS: 00010246 > [ 15.671170] RAX: 0000000000000000 RBX: ffff892d407ee508 RCX: ffffffffc09b3bc0 > [ 15.671172] RDX: ffffffffc0869e40 RSI: 0000000000000000 RDI: ffff892d407ee9f0 > [ 15.671174] RBP: ffff892d407ee9f0 R08: ffff892d42fb8008 R09: 00000000c0c0c0c0 > [ 15.671176] R10: 0000000000000000 R11: 0000000000000001 R12: ffff892d5b64af50 > [ 15.671178] R13: ffff892d5b64b092 R14: ffff892d5b64af2e R15: 0000000000000018 > [ 15.671181] FS: 00007f066d882840(0000) GS:ffff89306f900000(0000) knlGS:0000000000000000 > [ 15.671183] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > [ 15.671185] CR2: 0000000000000050 CR3: 00000001047a6000 CR4: 00000000000406f0 > [ 15.671188] Call Trace: > [ 15.671190] <TASK> > [ 15.671192] ? __die_body.cold+0x19/0x1e > [ 15.671200] ? page_fault_oops+0xa8/0x230 > [ 15.671206] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] > [ 15.671227] ? search_module_extables+0x4f/0x90 > [ 15.671233] ? fixup_exception+0x36/0x2f0 > [ 15.671239] ? exc_page_fault+0x88/0x1b0 > [ 15.671244] ? asm_exc_page_fault+0x22/0x30 > [ 15.671251] ? __pfx_radeon_dp_aux_transfer_atom+0x10/0x10 [radeon] > [ 15.671437] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] > [ 15.671463] radeon_dp_aux_init+0x91/0xc0 [radeon] > [ 15.671634] radeon_get_atom_connector_info_from_object_table+0x58e/0x880 [radeon] > [ 15.671764] ? radeon_get_atom_connector_info_from_supported_devices_table+0x5cf/0x600 [radeon] > [ 15.671895] ? kstrdup+0x4c/0x70 > [ 15.671902] ? __kmalloc_noprof+0x24d/0x340 > [ 15.671908] radeon_modeset_init+0x375/0x470 [radeon] > [ 15.672050] ? radeon_device_init+0x667/0xb40 [radeon] > [ 15.672179] radeon_driver_load_kms+0xc2/0x260 [radeon] > [ 15.672308] radeon_pci_probe+0xff/0x170 [radeon] > [ 15.672436] pci_device_probe+0xbe/0x1a0 > [ 15.672441] really_probe+0xde/0x350 > [ 15.672447] ? pm_runtime_barrier+0x61/0xb0 > [ 15.672452] ? __pfx___driver_attach+0x10/0x10 > [ 15.672457] __driver_probe_device+0x78/0x110 > [ 15.672462] driver_probe_device+0x2d/0xc0 > [ 15.672467] __driver_attach+0xc9/0x1c0 > [ 15.672472] bus_for_each_dev+0x6a/0xb0 > [ 15.672476] ? migrate_enable+0xbf/0xf0 > [ 15.672480] bus_add_driver+0x139/0x220 > [ 15.672485] driver_register+0x6e/0xc0 > [ 15.672491] ? __pfx_radeon_module_init+0x10/0x10 [radeon] > [ 15.672616] do_one_initcall+0x42/0x210 > [ 15.672622] ? __kmalloc_cache_noprof+0x89/0x230 > [ 15.672627] do_init_module+0x60/0x210 > [ 15.672631] init_module_from_file+0x89/0xc0 > [ 15.672637] __x64_sys_finit_module+0x142/0x390 > [ 15.672643] do_syscall_64+0x47/0x110 > [ 15.672647] entry_SYSCALL_64_after_hwframe+0x76/0x7e > [ 15.672653] RIP: 0033:0x7f066d6b3839 > [ 15.672657] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d b7 85 0d 00 f7 d8 64 89 01 48 > [ 15.672659] RSP: 002b:00007ffead344b38 EFLAGS: 00000246 ORIG_RAX: 0000000000000139 > [ 15.672663] RAX: ffffffffffffffda RBX: 00005586f29e09b0 RCX: 00007f066d6b3839 > [ 15.672665] RDX: 0000000000000000 RSI: 00005586f29d08d0 RDI: 0000000000000011 > [ 15.672667] RBP: 0000000000000000 R08: 0000000000000000 R09: 00005586f29c0540 > [ 15.672669] R10: 00007f066d78cac0 R11: 0000000000000246 R12: 00005586f29d08d0 > [ 15.672671] R13: 0000000000020000 R14: 00005586f29d82e0 R15: 0000000000000000 > [ 15.672675] </TASK> > [ 15.672676] Modules linked in: rtl2832_sdr videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev fc0012 rtl2832 i2c_mux dvb_usb_rtl28xxu dvb_usb_v2 dvb_core mc snd_emu10k1_synth snd_emux_synth snd_seq_midi_emul snd_seq_virmidi radeon(+) snd_seq_midi snd_seq_midi_event snd_seq snd_emu10k1 drm_ttm_helper ttm snd_hda_codec_hdmi drm_suballoc_helper snd_hda_intel snd_util_mem drm_display_helper snd_ac97_codec snd_intel_dspcfg snd_hda_codec snd_hda_core ac97_bus snd_hwdep snd_rawmidi snd_seq_device snd_pcm drm_kms_helper snd_timer edac_mce_amd k10temp sha512_ssse3 sha512_generic sha256_ssse3 sha1_ssse3 drm aesni_intel snd gf128mul at24 crypto_simd cryptd soundcore acpi_cpufreq regmap_i2c emu10k1_gp gameport pcspkr evdev serio_raw i2c_algo_bit video sp5100_tco wmi button ext4 crc32c_generic crc16 mbcache jbd2 hid_generic usbhid hid sg sr_mod cdrom sd_mod ata_generic crc32_pclmul firewire_ohci crc32c_intel firewire_core ahci i2c_piix4 crc_itu_t pata_atiixp i2c_smbus r8169 libahci ohci_pci xhci_pci libata > [ 15.672761] realtek ohci_hcd ehci_pci xhci_hcd ehci_hcd mdio_devres scsi_mod scsi_common libphy usbcore usb_common > [ 15.672773] CR2: 0000000000000050 > [ 15.672776] ---[ end trace 0000000000000000 ]--- ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: NULL pointer dereference with kernel 6.12.0-rc1 and ARUBA GPU 2024-09-30 17:54 ` Christian König @ 2024-10-07 12:44 ` Thomas Zimmermann 0 siblings, 0 replies; 29+ messages in thread From: Thomas Zimmermann @ 2024-10-07 12:44 UTC (permalink / raw) To: Christian König, Arthur Marsh Cc: Xinhui.Pan, airlied, alexander.deucher, alexdeucher, amd-gfx, daniel, dri-devel, iommu, linux-kernel, wuhoipok, x86 Hi Am 30.09.24 um 19:54 schrieb Christian König: > I've been running into the same issue as well. Going to take a look. Any results? > > Christian. > > Am 30.09.24 um 17:25 schrieb Arthur Marsh: >> [ 13.069630] [drm] radeon kernel modesetting enabled. >> [ 13.069681] radeon 0000:00:01.0: vgaarb: deactivate vga console >> [ 13.070435] Console: switching to colour dummy device 80x25 >> [ 13.070632] [drm] initializing kernel modesetting (ARUBA >> 0x1002:0x990C 0x1002:0x0123 0x00). >> [ 13.070718] ATOM BIOS: 113 >> [ 13.070778] radeon 0000:00:01.0: VRAM: 768M 0x0000000000000000 - >> 0x000000002FFFFFFF (768M used) >> [ 13.070781] radeon 0000:00:01.0: GTT: 1024M 0x0000000030000000 - >> 0x000000006FFFFFFF >> [ 13.070785] [drm] Detected VRAM RAM=768M, BAR=256M >> [ 13.070786] [drm] RAM width 64bits DDR >> [ 13.070884] [drm] radeon: 768M of VRAM memory ready >> [ 13.070885] [drm] radeon: 1024M of GTT memory ready. >> [ 13.070896] [drm] Loading ARUBA Microcode >> [ 13.504398] [drm] Internal thermal controller without fan control >> [ 13.504566] [drm] radeon: dpm initialized >> [ 13.839229] [drm] Found VCE firmware/feedback version 50.0.1 / 17! >> [ 13.839264] [drm] GART: num cpu pages 262144, num gpu pages 262144 >> [ 13.863929] [drm] PCIE GART of 1024M enabled (table at >> 0x00000000001D6000). >> [ 13.864085] radeon 0000:00:01.0: WB enabled >> [ 13.864088] radeon 0000:00:01.0: fence driver on ring 0 use gpu >> addr 0x0000000030000c00 >> [ 13.864467] radeon 0000:00:01.0: fence driver on ring 5 use gpu >> addr 0x0000000000075a18 >> [ 13.884497] radeon 0000:00:01.0: fence driver on ring 6 use gpu >> addr 0x0000000030000c18 >> [ 13.884502] radeon 0000:00:01.0: fence driver on ring 7 use gpu >> addr 0x0000000030000c1c >> [ 13.884503] radeon 0000:00:01.0: fence driver on ring 1 use gpu >> addr 0x0000000030000c04 >> [ 13.884505] radeon 0000:00:01.0: fence driver on ring 2 use gpu >> addr 0x0000000030000c08 >> [ 13.884506] radeon 0000:00:01.0: fence driver on ring 3 use gpu >> addr 0x0000000030000c0c >> [ 13.884507] radeon 0000:00:01.0: fence driver on ring 4 use gpu >> addr 0x0000000030000c10 >> [ 13.884862] radeon 0000:00:01.0: radeon: MSI limited to 32-bit >> [ 13.884921] radeon 0000:00:01.0: radeon: using MSI. >> [ 13.885003] [drm] radeon: irq initialized. >> [ 13.903273] [drm] ring test on 0 succeeded in 3 usecs >> [ 13.903281] [drm] ring test on 3 succeeded in 4 usecs >> [ 13.903286] [drm] ring test on 4 succeeded in 3 usecs >> [ 13.949128] [drm] ring test on 5 succeeded in 2 usecs >> [ 13.968988] [drm] UVD initialized successfully. >> [ 14.078221] [drm] ring test on 6 succeeded in 17 usecs >> [ 14.078234] [drm] ring test on 7 succeeded in 3 usecs >> [ 14.078236] [drm] VCE initialized successfully. >> [ 14.078314] snd_hda_intel 0000:00:01.1: bound 0000:00:01.0 (ops >> radeon_audio_component_bind_ops [radeon]) >> [ 14.078502] [drm] ib test on ring 0 succeeded in 0 usecs >> [ 14.078555] [drm] ib test on ring 3 succeeded in 0 usecs >> [ 14.078606] [drm] ib test on ring 4 succeeded in 0 usecs >> [ 14.153378] mc: Linux media interface: v0.10 >> [ 14.593759] usb 1-3: dvb_usb_v2: found a 'Realtek RTL2832U >> reference design' in warm state >> [ 14.614227] [drm] ib test on ring 5 succeeded >> [ 14.625865] usb 1-3: dvb_usb_v2: will pass the complete MPEG2 >> transport stream to the software demuxer >> [ 14.625885] dvbdev: DVB: registering new adapter (Realtek RTL2832U >> reference design) >> [ 14.625889] usb 1-3: media controller created >> [ 14.627064] dvbdev: dvb_create_media_entity: media entity >> 'dvb-demux' registered. >> [ 14.801142] i2c i2c-5: Added multiplexed i2c bus 6 >> [ 14.801149] rtl2832 5-0010: Realtek RTL2832 successfully attached >> [ 14.801176] usb 1-3: DVB: registering adapter 0 frontend 0 >> (Realtek RTL2832 (DVB-T))... >> [ 14.801189] dvbdev: dvb_create_media_entity: media entity 'Realtek >> RTL2832 (DVB-T)' registered. >> [ 14.957783] i2c i2c-6: fc0012: Fitipower FC0012 successfully >> identified >> [ 15.158461] [drm] ib test on ring 6 succeeded >> [ 15.178787] videodev: Linux video capture interface: v2.00 >> [ 15.460709] rtl2832_sdr rtl2832_sdr.1.auto: Registered as swradio0 >> [ 15.460715] rtl2832_sdr rtl2832_sdr.1.auto: Realtek RTL2832 SDR >> attached >> [ 15.460718] rtl2832_sdr rtl2832_sdr.1.auto: SDR API is still >> slightly experimental and functionality changes may follow >> [ 15.477759] usb 1-3: dvb_usb_v2: 'Realtek RTL2832U reference >> design' successfully initialized and connected >> [ 15.477878] usbcore: registered new interface driver dvb_usb_rtl28xxu >> [ 15.670413] [drm] ib test on ring 7 succeeded >> [ 15.671111] BUG: kernel NULL pointer dereference, address: >> 0000000000000050 >> [ 15.671114] #PF: supervisor read access in kernel mode >> [ 15.671117] #PF: error_code(0x0000) - not-present page >> [ 15.671119] PGD 0 P4D 0 >> [ 15.671123] Oops: Oops: 0000 [#1] PREEMPT_RT SMP NOPTI >> [ 15.671127] CPU: 2 UID: 0 PID: 437 Comm: udevd Not tainted >> 6.12.0-rc1 #6131 >> [ 15.671132] Hardware name: Gigabyte Technology Co., Ltd. To be >> filled by O.E.M./F2A78M-HD2, BIOS F2 05/28/2014 >> [ 15.671134] RIP: 0010:drm_dp_aux_register+0x59/0x110 >> [drm_display_helper] >> [ 15.671164] Code: 86 c0 48 85 f6 48 89 83 b8 00 00 00 74 1c 48 8d >> bb b4 03 00 00 ba 30 00 00 00 e8 52 35 bc c7 48 8d 7b 08 5b 5d e9 37 >> 31 93 c7 <48> 8b 70 50 48 85 f6 75 db 48 8b 30 eb d6 48 8d ab 88 04 >> 00 00 48 >> [ 15.671167] RSP: 0018:ffffb37f80e33960 EFLAGS: 00010246 >> [ 15.671170] RAX: 0000000000000000 RBX: ffff892d407ee508 RCX: >> ffffffffc09b3bc0 >> [ 15.671172] RDX: ffffffffc0869e40 RSI: 0000000000000000 RDI: >> ffff892d407ee9f0 >> [ 15.671174] RBP: ffff892d407ee9f0 R08: ffff892d42fb8008 R09: >> 00000000c0c0c0c0 >> [ 15.671176] R10: 0000000000000000 R11: 0000000000000001 R12: >> ffff892d5b64af50 >> [ 15.671178] R13: ffff892d5b64b092 R14: ffff892d5b64af2e R15: >> 0000000000000018 >> [ 15.671181] FS: 00007f066d882840(0000) GS:ffff89306f900000(0000) >> knlGS:0000000000000000 >> [ 15.671183] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 >> [ 15.671185] CR2: 0000000000000050 CR3: 00000001047a6000 CR4: >> 00000000000406f0 >> [ 15.671188] Call Trace: >> [ 15.671190] <TASK> >> [ 15.671192] ? __die_body.cold+0x19/0x1e >> [ 15.671200] ? page_fault_oops+0xa8/0x230 >> [ 15.671206] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] >> [ 15.671227] ? search_module_extables+0x4f/0x90 >> [ 15.671233] ? fixup_exception+0x36/0x2f0 >> [ 15.671239] ? exc_page_fault+0x88/0x1b0 >> [ 15.671244] ? asm_exc_page_fault+0x22/0x30 >> [ 15.671251] ? __pfx_radeon_dp_aux_transfer_atom+0x10/0x10 [radeon] >> [ 15.671437] ? drm_dp_aux_register+0x59/0x110 [drm_display_helper] >> [ 15.671463] radeon_dp_aux_init+0x91/0xc0 [radeon] >> [ 15.671634] >> radeon_get_atom_connector_info_from_object_table+0x58e/0x880 [radeon] >> [ 15.671764] ? >> radeon_get_atom_connector_info_from_supported_devices_table+0x5cf/0x600 >> [radeon] >> [ 15.671895] ? kstrdup+0x4c/0x70 >> [ 15.671902] ? __kmalloc_noprof+0x24d/0x340 >> [ 15.671908] radeon_modeset_init+0x375/0x470 [radeon] >> [ 15.672050] ? radeon_device_init+0x667/0xb40 [radeon] >> [ 15.672179] radeon_driver_load_kms+0xc2/0x260 [radeon] >> [ 15.672308] radeon_pci_probe+0xff/0x170 [radeon] >> [ 15.672436] pci_device_probe+0xbe/0x1a0 >> [ 15.672441] really_probe+0xde/0x350 >> [ 15.672447] ? pm_runtime_barrier+0x61/0xb0 >> [ 15.672452] ? __pfx___driver_attach+0x10/0x10 >> [ 15.672457] __driver_probe_device+0x78/0x110 >> [ 15.672462] driver_probe_device+0x2d/0xc0 >> [ 15.672467] __driver_attach+0xc9/0x1c0 >> [ 15.672472] bus_for_each_dev+0x6a/0xb0 >> [ 15.672476] ? migrate_enable+0xbf/0xf0 >> [ 15.672480] bus_add_driver+0x139/0x220 >> [ 15.672485] driver_register+0x6e/0xc0 >> [ 15.672491] ? __pfx_radeon_module_init+0x10/0x10 [radeon] >> [ 15.672616] do_one_initcall+0x42/0x210 >> [ 15.672622] ? __kmalloc_cache_noprof+0x89/0x230 >> [ 15.672627] do_init_module+0x60/0x210 >> [ 15.672631] init_module_from_file+0x89/0xc0 >> [ 15.672637] __x64_sys_finit_module+0x142/0x390 >> [ 15.672643] do_syscall_64+0x47/0x110 >> [ 15.672647] entry_SYSCALL_64_after_hwframe+0x76/0x7e >> [ 15.672653] RIP: 0033:0x7f066d6b3839 >> [ 15.672657] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 >> 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 >> 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d b7 85 0d 00 f7 d8 64 >> 89 01 48 >> [ 15.672659] RSP: 002b:00007ffead344b38 EFLAGS: 00000246 ORIG_RAX: >> 0000000000000139 >> [ 15.672663] RAX: ffffffffffffffda RBX: 00005586f29e09b0 RCX: >> 00007f066d6b3839 >> [ 15.672665] RDX: 0000000000000000 RSI: 00005586f29d08d0 RDI: >> 0000000000000011 >> [ 15.672667] RBP: 0000000000000000 R08: 0000000000000000 R09: >> 00005586f29c0540 >> [ 15.672669] R10: 00007f066d78cac0 R11: 0000000000000246 R12: >> 00005586f29d08d0 >> [ 15.672671] R13: 0000000000020000 R14: 00005586f29d82e0 R15: >> 0000000000000000 >> [ 15.672675] </TASK> >> [ 15.672676] Modules linked in: rtl2832_sdr videobuf2_vmalloc >> videobuf2_memops videobuf2_v4l2 videobuf2_common videodev fc0012 >> rtl2832 i2c_mux dvb_usb_rtl28xxu dvb_usb_v2 dvb_core mc >> snd_emu10k1_synth snd_emux_synth snd_seq_midi_emul snd_seq_virmidi >> radeon(+) snd_seq_midi snd_seq_midi_event snd_seq snd_emu10k1 >> drm_ttm_helper ttm snd_hda_codec_hdmi drm_suballoc_helper >> snd_hda_intel snd_util_mem drm_display_helper snd_ac97_codec >> snd_intel_dspcfg snd_hda_codec snd_hda_core ac97_bus snd_hwdep >> snd_rawmidi snd_seq_device snd_pcm drm_kms_helper snd_timer >> edac_mce_amd k10temp sha512_ssse3 sha512_generic sha256_ssse3 >> sha1_ssse3 drm aesni_intel snd gf128mul at24 crypto_simd cryptd >> soundcore acpi_cpufreq regmap_i2c emu10k1_gp gameport pcspkr evdev >> serio_raw i2c_algo_bit video sp5100_tco wmi button ext4 >> crc32c_generic crc16 mbcache jbd2 hid_generic usbhid hid sg sr_mod >> cdrom sd_mod ata_generic crc32_pclmul firewire_ohci crc32c_intel >> firewire_core ahci i2c_piix4 crc_itu_t pata_atiixp i2c_smbus r8169 >> libahci ohci_pci xhci_pci libata >> [ 15.672761] realtek ohci_hcd ehci_pci xhci_hcd ehci_hcd >> mdio_devres scsi_mod scsi_common libphy usbcore usb_common >> [ 15.672773] CR2: 0000000000000050 >> [ 15.672776] ---[ end trace 0000000000000000 ]--- > -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v3 3/6] drm/radeon: use variable flags as parameter 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok 2024-06-30 16:59 ` [PATCH v3 1/6] drm/radeon: change variable name "dev" to "ddev" for consistency Wu Hoi Pok 2024-06-30 16:59 ` [PATCH v3 2/6] drm/radeon: remove load callback from kms_driver Wu Hoi Pok @ 2024-06-30 16:59 ` Wu Hoi Pok 2024-07-03 8:44 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 4/6] drm/radeon: add helper rdev_to_drm(rdev) Wu Hoi Pok ` (3 subsequent siblings) 6 siblings, 1 reply; 29+ messages in thread From: Wu Hoi Pok @ 2024-06-30 16:59 UTC (permalink / raw) Cc: Thomas Zimmermann, Wu Hoi Pok, Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel To be consistent with amdgpu driver, use "flags" as the parameter because it is already assigned as "ent->driver_data". Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> --- drivers/gpu/drm/radeon/radeon_drv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 88d3de2a79f8..7b8aa8406751 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -314,7 +314,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, if (ret) goto err_agp; - ret = drm_dev_register(ddev, ent->driver_data); + ret = drm_dev_register(ddev, flags); if (ret) goto err_agp; -- 2.45.2 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v3 3/6] drm/radeon: use variable flags as parameter 2024-06-30 16:59 ` [PATCH v3 3/6] drm/radeon: use variable flags as parameter Wu Hoi Pok @ 2024-07-03 8:44 ` Thomas Zimmermann 0 siblings, 0 replies; 29+ messages in thread From: Thomas Zimmermann @ 2024-07-03 8:44 UTC (permalink / raw) To: Wu Hoi Pok Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > To be consistent with amdgpu driver, use "flags" as the parameter because > it is already assigned as "ent->driver_data". > > Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Tested-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/radeon/radeon_drv.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > index 88d3de2a79f8..7b8aa8406751 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -314,7 +314,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, > if (ret) > goto err_agp; > > - ret = drm_dev_register(ddev, ent->driver_data); > + ret = drm_dev_register(ddev, flags); > if (ret) > goto err_agp; > -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v3 4/6] drm/radeon: add helper rdev_to_drm(rdev) 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok ` (2 preceding siblings ...) 2024-06-30 16:59 ` [PATCH v3 3/6] drm/radeon: use variable flags as parameter Wu Hoi Pok @ 2024-06-30 16:59 ` Wu Hoi Pok 2024-07-03 8:44 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 5/6] drm/radeon: change rdev->ddev to rdev_to_drm(rdev) Wu Hoi Pok ` (2 subsequent siblings) 6 siblings, 1 reply; 29+ messages in thread From: Wu Hoi Pok @ 2024-06-30 16:59 UTC (permalink / raw) Cc: Thomas Zimmermann, Wu Hoi Pok, Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Add helper rdev_to_drm(rdev), similar to amdgpu, most function should access the "drm_device" with "rdev_to_drm(rdev)" instead, where amdgpu has "adev_to_drm(adev)". It also makes changing from "*drm_device" to "drm_device" in "radeon_devicce" later on easier. Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> --- drivers/gpu/drm/radeon/radeon.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 0999c8eaae94..ae35c102a487 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -2476,6 +2476,11 @@ void r100_io_wreg(struct radeon_device *rdev, u32 reg, u32 v); u32 cik_mm_rdoorbell(struct radeon_device *rdev, u32 index); void cik_mm_wdoorbell(struct radeon_device *rdev, u32 index, u32 v); +static inline struct drm_device *rdev_to_drm(struct radeon_device *rdev) +{ + return rdev->ddev; +} + /* * Cast helper */ -- 2.45.2 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v3 4/6] drm/radeon: add helper rdev_to_drm(rdev) 2024-06-30 16:59 ` [PATCH v3 4/6] drm/radeon: add helper rdev_to_drm(rdev) Wu Hoi Pok @ 2024-07-03 8:44 ` Thomas Zimmermann 0 siblings, 0 replies; 29+ messages in thread From: Thomas Zimmermann @ 2024-07-03 8:44 UTC (permalink / raw) To: Wu Hoi Pok Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > Add helper rdev_to_drm(rdev), similar to amdgpu, most function should > access the "drm_device" with "rdev_to_drm(rdev)" instead, where amdgpu has > "adev_to_drm(adev)". It also makes changing from "*drm_device" to "drm_device" > in "radeon_devicce" later on easier. > > Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Tested-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/radeon/radeon.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h > index 0999c8eaae94..ae35c102a487 100644 > --- a/drivers/gpu/drm/radeon/radeon.h > +++ b/drivers/gpu/drm/radeon/radeon.h > @@ -2476,6 +2476,11 @@ void r100_io_wreg(struct radeon_device *rdev, u32 reg, u32 v); > u32 cik_mm_rdoorbell(struct radeon_device *rdev, u32 index); > void cik_mm_wdoorbell(struct radeon_device *rdev, u32 index, u32 v); > > +static inline struct drm_device *rdev_to_drm(struct radeon_device *rdev) > +{ > + return rdev->ddev; > +} > + > /* > * Cast helper > */ -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v3 5/6] drm/radeon: change rdev->ddev to rdev_to_drm(rdev) 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok ` (3 preceding siblings ...) 2024-06-30 16:59 ` [PATCH v3 4/6] drm/radeon: add helper rdev_to_drm(rdev) Wu Hoi Pok @ 2024-06-30 16:59 ` Wu Hoi Pok 2024-07-03 8:46 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 6/6] drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc Wu Hoi Pok 2024-07-03 8:52 ` [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Thomas Zimmermann 6 siblings, 1 reply; 29+ messages in thread From: Wu Hoi Pok @ 2024-06-30 16:59 UTC (permalink / raw) Cc: Thomas Zimmermann, Wu Hoi Pok, Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel This patch changes the way "drm_device" is accessed. It uses "rdev_to_drm(rdev)" instead of accessing the struct member directly. Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> --- drivers/gpu/drm/radeon/atombios_encoders.c | 2 +- drivers/gpu/drm/radeon/cik.c | 14 ++-- drivers/gpu/drm/radeon/dce6_afmt.c | 2 +- drivers/gpu/drm/radeon/evergreen.c | 12 ++-- drivers/gpu/drm/radeon/ni.c | 2 +- drivers/gpu/drm/radeon/r100.c | 24 +++---- drivers/gpu/drm/radeon/r300.c | 6 +- drivers/gpu/drm/radeon/r420.c | 6 +- drivers/gpu/drm/radeon/r520.c | 2 +- drivers/gpu/drm/radeon/r600.c | 12 ++-- drivers/gpu/drm/radeon/r600_cs.c | 2 +- drivers/gpu/drm/radeon/r600_dpm.c | 4 +- drivers/gpu/drm/radeon/r600_hdmi.c | 2 +- drivers/gpu/drm/radeon/radeon_acpi.c | 10 +-- drivers/gpu/drm/radeon/radeon_agp.c | 2 +- drivers/gpu/drm/radeon/radeon_atombios.c | 2 +- drivers/gpu/drm/radeon/radeon_audio.c | 4 +- drivers/gpu/drm/radeon/radeon_combios.c | 12 ++-- drivers/gpu/drm/radeon/radeon_device.c | 10 +-- drivers/gpu/drm/radeon/radeon_display.c | 74 +++++++++++----------- drivers/gpu/drm/radeon/radeon_fbdev.c | 26 ++++---- drivers/gpu/drm/radeon/radeon_fence.c | 8 +-- drivers/gpu/drm/radeon/radeon_gem.c | 2 +- drivers/gpu/drm/radeon/radeon_i2c.c | 2 +- drivers/gpu/drm/radeon/radeon_ib.c | 2 +- drivers/gpu/drm/radeon/radeon_irq_kms.c | 12 ++-- drivers/gpu/drm/radeon/radeon_object.c | 2 +- drivers/gpu/drm/radeon/radeon_pm.c | 20 +++--- drivers/gpu/drm/radeon/radeon_ring.c | 2 +- drivers/gpu/drm/radeon/radeon_ttm.c | 6 +- drivers/gpu/drm/radeon/rs400.c | 6 +- drivers/gpu/drm/radeon/rs600.c | 14 ++-- drivers/gpu/drm/radeon/rs690.c | 2 +- drivers/gpu/drm/radeon/rv515.c | 4 +- drivers/gpu/drm/radeon/rv770.c | 2 +- drivers/gpu/drm/radeon/si.c | 4 +- 36 files changed, 159 insertions(+), 159 deletions(-) diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c index 03e6871b3065..c82e0fbc49b4 100644 --- a/drivers/gpu/drm/radeon/atombios_encoders.c +++ b/drivers/gpu/drm/radeon/atombios_encoders.c @@ -2179,7 +2179,7 @@ int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder, int fe_idx) void radeon_atom_encoder_init(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_encoder *encoder; list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c index b5e96a8fc2c1..11a492f21157 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c @@ -7585,7 +7585,7 @@ int cik_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[0]) { - drm_handle_vblank(rdev->ddev, 0); + drm_handle_vblank(rdev_to_drm(rdev), 0); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -7615,7 +7615,7 @@ int cik_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[1]) { - drm_handle_vblank(rdev->ddev, 1); + drm_handle_vblank(rdev_to_drm(rdev), 1); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -7645,7 +7645,7 @@ int cik_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[2]) { - drm_handle_vblank(rdev->ddev, 2); + drm_handle_vblank(rdev_to_drm(rdev), 2); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -7675,7 +7675,7 @@ int cik_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[3]) { - drm_handle_vblank(rdev->ddev, 3); + drm_handle_vblank(rdev_to_drm(rdev), 3); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -7705,7 +7705,7 @@ int cik_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[4]) { - drm_handle_vblank(rdev->ddev, 4); + drm_handle_vblank(rdev_to_drm(rdev), 4); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -7735,7 +7735,7 @@ int cik_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[5]) { - drm_handle_vblank(rdev->ddev, 5); + drm_handle_vblank(rdev_to_drm(rdev), 5); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -8581,7 +8581,7 @@ int cik_init(struct radeon_device *rdev) /* Initialize surface registers */ radeon_surface_init(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* Fence driver */ radeon_fence_driver_init(rdev); diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c index 4c06f47453fd..d6ab93ed9ec4 100644 --- a/drivers/gpu/drm/radeon/dce6_afmt.c +++ b/drivers/gpu/drm/radeon/dce6_afmt.c @@ -91,7 +91,7 @@ struct r600_audio_pin *dce6_audio_get_pin(struct radeon_device *rdev) pin = &rdev->audio.pin[i]; pin_count = 0; - list_for_each_entry(encoder, &rdev->ddev->mode_config.encoder_list, head) { + list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) { if (radeon_encoder_is_digital(encoder)) { radeon_encoder = to_radeon_encoder(encoder); dig = radeon_encoder->enc_priv; diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c index c634dc28e6c3..bc4ab71613a5 100644 --- a/drivers/gpu/drm/radeon/evergreen.c +++ b/drivers/gpu/drm/radeon/evergreen.c @@ -1673,7 +1673,7 @@ void evergreen_pm_misc(struct radeon_device *rdev) */ void evergreen_pm_prepare(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 tmp; @@ -1698,7 +1698,7 @@ void evergreen_pm_prepare(struct radeon_device *rdev) */ void evergreen_pm_finish(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 tmp; @@ -1763,7 +1763,7 @@ void evergreen_hpd_set_polarity(struct radeon_device *rdev, */ void evergreen_hpd_init(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned enabled = 0; u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | @@ -1804,7 +1804,7 @@ void evergreen_hpd_init(struct radeon_device *rdev) */ void evergreen_hpd_fini(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned disabled = 0; @@ -4753,7 +4753,7 @@ int evergreen_irq_process(struct radeon_device *rdev) event_name = "vblank"; if (rdev->irq.crtc_vblank_int[crtc_idx]) { - drm_handle_vblank(rdev->ddev, crtc_idx); + drm_handle_vblank(rdev_to_drm(rdev), crtc_idx); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -5211,7 +5211,7 @@ int evergreen_init(struct radeon_device *rdev) /* Initialize surface registers */ radeon_surface_init(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* Fence driver */ radeon_fence_driver_init(rdev); /* initialize AGP */ diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c index 77aee99e473a..3890911fe693 100644 --- a/drivers/gpu/drm/radeon/ni.c +++ b/drivers/gpu/drm/radeon/ni.c @@ -2360,7 +2360,7 @@ int cayman_init(struct radeon_device *rdev) /* Initialize surface registers */ radeon_surface_init(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* Fence driver */ radeon_fence_driver_init(rdev); /* initialize memory controller */ diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c index 0b1e19345f43..d7d7d23bf9a1 100644 --- a/drivers/gpu/drm/radeon/r100.c +++ b/drivers/gpu/drm/radeon/r100.c @@ -459,7 +459,7 @@ void r100_pm_misc(struct radeon_device *rdev) */ void r100_pm_prepare(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 tmp; @@ -490,7 +490,7 @@ void r100_pm_prepare(struct radeon_device *rdev) */ void r100_pm_finish(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 tmp; @@ -603,7 +603,7 @@ void r100_hpd_set_polarity(struct radeon_device *rdev, */ void r100_hpd_init(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned enable = 0; @@ -626,7 +626,7 @@ void r100_hpd_init(struct radeon_device *rdev) */ void r100_hpd_fini(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned disable = 0; @@ -798,7 +798,7 @@ int r100_irq_process(struct radeon_device *rdev) /* Vertical blank interrupts */ if (status & RADEON_CRTC_VBLANK_STAT) { if (rdev->irq.crtc_vblank_int[0]) { - drm_handle_vblank(rdev->ddev, 0); + drm_handle_vblank(rdev_to_drm(rdev), 0); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -807,7 +807,7 @@ int r100_irq_process(struct radeon_device *rdev) } if (status & RADEON_CRTC2_VBLANK_STAT) { if (rdev->irq.crtc_vblank_int[1]) { - drm_handle_vblank(rdev->ddev, 1); + drm_handle_vblank(rdev_to_drm(rdev), 1); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -1471,7 +1471,7 @@ int r100_cs_packet_parse_vline(struct radeon_cs_parser *p) header = radeon_get_ib_value(p, h_idx); crtc_id = radeon_get_ib_value(p, h_idx + 5); reg = R100_CP_PACKET0_GET_REG(header); - crtc = drm_crtc_find(p->rdev->ddev, p->filp, crtc_id); + crtc = drm_crtc_find(rdev_to_drm(p->rdev), p->filp, crtc_id); if (!crtc) { DRM_ERROR("cannot find crtc %d\n", crtc_id); return -ENOENT; @@ -3059,7 +3059,7 @@ DEFINE_SHOW_ATTRIBUTE(r100_debugfs_mc_info); void r100_debugfs_rbbm_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("r100_rbbm_info", 0444, root, rdev, &r100_debugfs_rbbm_info_fops); @@ -3069,7 +3069,7 @@ void r100_debugfs_rbbm_init(struct radeon_device *rdev) void r100_debugfs_cp_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("r100_cp_ring_info", 0444, root, rdev, &r100_debugfs_cp_ring_info_fops); @@ -3081,7 +3081,7 @@ void r100_debugfs_cp_init(struct radeon_device *rdev) void r100_debugfs_mc_info_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("r100_mc_info", 0444, root, rdev, &r100_debugfs_mc_info_fops); @@ -3947,7 +3947,7 @@ int r100_resume(struct radeon_device *rdev) RREG32(R_0007C0_CP_STAT)); } /* post */ - radeon_combios_asic_init(rdev->ddev); + radeon_combios_asic_init(rdev_to_drm(rdev)); /* Resume clock after posting */ r100_clock_startup(rdev); /* Initialize surface registers */ @@ -4056,7 +4056,7 @@ int r100_init(struct radeon_device *rdev) /* Set asic errata */ r100_errata(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize AGP */ if (rdev->flags & RADEON_IS_AGP) { r = radeon_agp_init(rdev); diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c index 1620f534f55f..05c13102a8cb 100644 --- a/drivers/gpu/drm/radeon/r300.c +++ b/drivers/gpu/drm/radeon/r300.c @@ -616,7 +616,7 @@ DEFINE_SHOW_ATTRIBUTE(rv370_debugfs_pcie_gart_info); static void rv370_debugfs_pcie_gart_info_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("rv370_pcie_gart_info", 0444, root, rdev, &rv370_debugfs_pcie_gart_info_fops); @@ -1452,7 +1452,7 @@ int r300_resume(struct radeon_device *rdev) RREG32(R_0007C0_CP_STAT)); } /* post */ - radeon_combios_asic_init(rdev->ddev); + radeon_combios_asic_init(rdev_to_drm(rdev)); /* Resume clock after posting */ r300_clock_startup(rdev); /* Initialize surface registers */ @@ -1538,7 +1538,7 @@ int r300_init(struct radeon_device *rdev) /* Set asic errata */ r300_errata(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize AGP */ if (rdev->flags & RADEON_IS_AGP) { r = radeon_agp_init(rdev); diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c index a979662eaa73..9a31cdec6415 100644 --- a/drivers/gpu/drm/radeon/r420.c +++ b/drivers/gpu/drm/radeon/r420.c @@ -322,7 +322,7 @@ int r420_resume(struct radeon_device *rdev) if (rdev->is_atom_bios) { atom_asic_init(rdev->mode_info.atom_context); } else { - radeon_combios_asic_init(rdev->ddev); + radeon_combios_asic_init(rdev_to_drm(rdev)); } /* Resume clock after posting */ r420_clock_resume(rdev); @@ -414,7 +414,7 @@ int r420_init(struct radeon_device *rdev) return -EINVAL; /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize AGP */ if (rdev->flags & RADEON_IS_AGP) { r = radeon_agp_init(rdev); @@ -493,7 +493,7 @@ DEFINE_SHOW_ATTRIBUTE(r420_debugfs_pipes_info); void r420_debugfs_pipes_info_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("r420_pipes_info", 0444, root, rdev, &r420_debugfs_pipes_info_fops); diff --git a/drivers/gpu/drm/radeon/r520.c b/drivers/gpu/drm/radeon/r520.c index 6cbcaa845192..08e127b3249a 100644 --- a/drivers/gpu/drm/radeon/r520.c +++ b/drivers/gpu/drm/radeon/r520.c @@ -287,7 +287,7 @@ int r520_init(struct radeon_device *rdev) atom_asic_init(rdev->mode_info.atom_context); } /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize AGP */ if (rdev->flags & RADEON_IS_AGP) { r = radeon_agp_init(rdev); diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c index 087d41e370fd..8b62f7faa5b9 100644 --- a/drivers/gpu/drm/radeon/r600.c +++ b/drivers/gpu/drm/radeon/r600.c @@ -950,7 +950,7 @@ void r600_hpd_set_polarity(struct radeon_device *rdev, void r600_hpd_init(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned enable = 0; @@ -1017,7 +1017,7 @@ void r600_hpd_init(struct radeon_device *rdev) void r600_hpd_fini(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned disable = 0; @@ -3280,7 +3280,7 @@ int r600_init(struct radeon_device *rdev) /* Initialize surface registers */ radeon_surface_init(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* Fence driver */ radeon_fence_driver_init(rdev); if (rdev->flags & RADEON_IS_AGP) { @@ -4136,7 +4136,7 @@ int r600_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: D1 vblank - IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[0]) { - drm_handle_vblank(rdev->ddev, 0); + drm_handle_vblank(rdev_to_drm(rdev), 0); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -4166,7 +4166,7 @@ int r600_irq_process(struct radeon_device *rdev) DRM_DEBUG("IH: D2 vblank - IH event w/o asserted irq bit?\n"); if (rdev->irq.crtc_vblank_int[1]) { - drm_handle_vblank(rdev->ddev, 1); + drm_handle_vblank(rdev_to_drm(rdev), 1); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -4358,7 +4358,7 @@ DEFINE_SHOW_ATTRIBUTE(r600_debugfs_mc_info); static void r600_debugfs_mc_info_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("r600_mc_info", 0444, root, rdev, &r600_debugfs_mc_info_fops); diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c index 6cf54a747749..1b2d31c4d77c 100644 --- a/drivers/gpu/drm/radeon/r600_cs.c +++ b/drivers/gpu/drm/radeon/r600_cs.c @@ -884,7 +884,7 @@ int r600_cs_common_vline_parse(struct radeon_cs_parser *p, crtc_id = radeon_get_ib_value(p, h_idx + 2 + 7 + 1); reg = R600_CP_PACKET0_GET_REG(header); - crtc = drm_crtc_find(p->rdev->ddev, p->filp, crtc_id); + crtc = drm_crtc_find(rdev_to_drm(p->rdev), p->filp, crtc_id); if (!crtc) { DRM_ERROR("cannot find crtc %d\n", crtc_id); return -ENOENT; diff --git a/drivers/gpu/drm/radeon/r600_dpm.c b/drivers/gpu/drm/radeon/r600_dpm.c index 64980a61d38a..81d58ef667dd 100644 --- a/drivers/gpu/drm/radeon/r600_dpm.c +++ b/drivers/gpu/drm/radeon/r600_dpm.c @@ -153,7 +153,7 @@ void r600_dpm_print_ps_status(struct radeon_device *rdev, u32 r600_dpm_get_vblank_time(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 vblank_in_pixels; @@ -180,7 +180,7 @@ u32 r600_dpm_get_vblank_time(struct radeon_device *rdev) u32 r600_dpm_get_vrefresh(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 vrefresh = 0; diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c index f3551ebaa2f0..661f374f5f27 100644 --- a/drivers/gpu/drm/radeon/r600_hdmi.c +++ b/drivers/gpu/drm/radeon/r600_hdmi.c @@ -116,7 +116,7 @@ void r600_audio_update_hdmi(struct work_struct *work) { struct radeon_device *rdev = container_of(work, struct radeon_device, audio_work); - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct r600_audio_pin audio_status = r600_audio_status(rdev); struct drm_encoder *encoder; bool changed = false; diff --git a/drivers/gpu/drm/radeon/radeon_acpi.c b/drivers/gpu/drm/radeon/radeon_acpi.c index 603a78e41ba5..22ce61bdfc06 100644 --- a/drivers/gpu/drm/radeon/radeon_acpi.c +++ b/drivers/gpu/drm/radeon/radeon_acpi.c @@ -405,11 +405,11 @@ static int radeon_atif_handler(struct radeon_device *rdev, if (req.pending & ATIF_DGPU_DISPLAY_EVENT) { if ((rdev->flags & RADEON_IS_PX) && radeon_atpx_dgpu_req_power_for_displays()) { - pm_runtime_get_sync(rdev->ddev->dev); + pm_runtime_get_sync(rdev_to_drm(rdev)->dev); /* Just fire off a uevent and let userspace tell us what to do */ - drm_helper_hpd_irq_event(rdev->ddev); - pm_runtime_mark_last_busy(rdev->ddev->dev); - pm_runtime_put_autosuspend(rdev->ddev->dev); + drm_helper_hpd_irq_event(rdev_to_drm(rdev)); + pm_runtime_mark_last_busy(rdev_to_drm(rdev)->dev); + pm_runtime_put_autosuspend(rdev_to_drm(rdev)->dev); } } /* TODO: check other events */ @@ -736,7 +736,7 @@ int radeon_acpi_init(struct radeon_device *rdev) struct radeon_encoder *target = NULL; /* Find the encoder controlling the brightness */ - list_for_each_entry(tmp, &rdev->ddev->mode_config.encoder_list, + list_for_each_entry(tmp, &rdev_to_drm(rdev)->mode_config.encoder_list, head) { struct radeon_encoder *enc = to_radeon_encoder(tmp); diff --git a/drivers/gpu/drm/radeon/radeon_agp.c b/drivers/gpu/drm/radeon/radeon_agp.c index a3d749e350f9..89d7b0e9e79f 100644 --- a/drivers/gpu/drm/radeon/radeon_agp.c +++ b/drivers/gpu/drm/radeon/radeon_agp.c @@ -161,7 +161,7 @@ struct radeon_agp_head *radeon_agp_head_init(struct drm_device *dev) static int radeon_agp_head_acquire(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct pci_dev *pdev = to_pci_dev(dev->dev); if (!rdev->agp) diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c index 10793a433bf5..97c4e10d0550 100644 --- a/drivers/gpu/drm/radeon/radeon_atombios.c +++ b/drivers/gpu/drm/radeon/radeon_atombios.c @@ -187,7 +187,7 @@ void radeon_atombios_i2c_init(struct radeon_device *rdev) if (i2c.valid) { sprintf(stmp, "0x%x", i2c.i2c_id); - rdev->i2c_bus[i] = radeon_i2c_create(rdev->ddev, &i2c, stmp); + rdev->i2c_bus[i] = radeon_i2c_create(rdev_to_drm(rdev), &i2c, stmp); } gpio = (ATOM_GPIO_I2C_ASSIGMENT *) ((u8 *)gpio + sizeof(ATOM_GPIO_I2C_ASSIGMENT)); diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c index 0bcd767b9f47..47aa06a9a942 100644 --- a/drivers/gpu/drm/radeon/radeon_audio.c +++ b/drivers/gpu/drm/radeon/radeon_audio.c @@ -196,7 +196,7 @@ static void radeon_audio_enable(struct radeon_device *rdev, return; if (rdev->mode_info.mode_config_initialized) { - list_for_each_entry(encoder, &rdev->ddev->mode_config.encoder_list, head) { + list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) { if (radeon_encoder_is_digital(encoder)) { radeon_encoder = to_radeon_encoder(encoder); dig = radeon_encoder->enc_priv; @@ -760,7 +760,7 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port, if (!rdev->audio.enabled || !rdev->mode_info.mode_config_initialized) return 0; - list_for_each_entry(encoder, &rdev->ddev->mode_config.encoder_list, head) { + list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) { if (!radeon_encoder_is_digital(encoder)) continue; radeon_encoder = to_radeon_encoder(encoder); diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c index 6952b1273b0f..41ddc576f8f8 100644 --- a/drivers/gpu/drm/radeon/radeon_combios.c +++ b/drivers/gpu/drm/radeon/radeon_combios.c @@ -372,7 +372,7 @@ bool radeon_combios_check_hardcoded_edid(struct radeon_device *rdev) int edid_info, size; struct edid *edid; unsigned char *raw; - edid_info = combios_get_table_offset(rdev->ddev, COMBIOS_HARDCODED_EDID_TABLE); + edid_info = combios_get_table_offset(rdev_to_drm(rdev), COMBIOS_HARDCODED_EDID_TABLE); if (!edid_info) return false; @@ -642,7 +642,7 @@ static struct radeon_i2c_bus_rec combios_setup_i2c_bus(struct radeon_device *rde static struct radeon_i2c_bus_rec radeon_combios_get_i2c_info_from_table(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct radeon_i2c_bus_rec i2c; u16 offset; u8 id, blocks, clk, data; @@ -670,7 +670,7 @@ static struct radeon_i2c_bus_rec radeon_combios_get_i2c_info_from_table(struct r void radeon_combios_i2c_init(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct radeon_i2c_bus_rec i2c; /* actual hw pads @@ -812,7 +812,7 @@ bool radeon_combios_get_clock_info(struct drm_device *dev) bool radeon_combios_sideport_present(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); u16 igp_info; /* sideport is AMD only */ @@ -915,7 +915,7 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct enum radeon_tv_std radeon_combios_get_tv_info(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); uint16_t tv_info; enum radeon_tv_std tv_std = TV_STD_NTSC; @@ -2637,7 +2637,7 @@ static const char *thermal_controller_names[] = { void radeon_combios_get_power_modes(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); u16 offset, misc, misc2 = 0; u8 rev, tmp; int state_index = 0; diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index afbb3a80c0c6..32851632643d 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -760,7 +760,7 @@ bool radeon_boot_test_post_card(struct radeon_device *rdev) if (rdev->is_atom_bios) atom_asic_init(rdev->mode_info.atom_context); else - radeon_combios_asic_init(rdev->ddev); + radeon_combios_asic_init(rdev_to_drm(rdev)); return true; } else { dev_err(rdev->dev, "Card not posted and no BIOS - ignoring\n"); @@ -980,7 +980,7 @@ int radeon_atombios_init(struct radeon_device *rdev) return -ENOMEM; rdev->mode_info.atom_card_info = atom_card_info; - atom_card_info->dev = rdev->ddev; + atom_card_info->dev = rdev_to_drm(rdev); atom_card_info->reg_read = cail_reg_read; atom_card_info->reg_write = cail_reg_write; /* needed for iio ops */ @@ -1005,7 +1005,7 @@ int radeon_atombios_init(struct radeon_device *rdev) mutex_init(&rdev->mode_info.atom_context->mutex); mutex_init(&rdev->mode_info.atom_context->scratch_mutex); - radeon_atom_initialize_bios_scratch_regs(rdev->ddev); + radeon_atom_initialize_bios_scratch_regs(rdev_to_drm(rdev)); atom_allocate_fb_scratch(rdev->mode_info.atom_context); return 0; } @@ -1049,7 +1049,7 @@ void radeon_atombios_fini(struct radeon_device *rdev) */ int radeon_combios_init(struct radeon_device *rdev) { - radeon_combios_initialize_bios_scratch_regs(rdev->ddev); + radeon_combios_initialize_bios_scratch_regs(rdev_to_drm(rdev)); return 0; } @@ -1847,7 +1847,7 @@ int radeon_gpu_reset(struct radeon_device *rdev) downgrade_write(&rdev->exclusive_lock); - drm_helper_resume_force_mode(rdev->ddev); + drm_helper_resume_force_mode(rdev_to_drm(rdev)); /* set the power state here in case we are a PX system or headless */ if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled) diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c index 843383f7237f..829d44cf6759 100644 --- a/drivers/gpu/drm/radeon/radeon_display.c +++ b/drivers/gpu/drm/radeon/radeon_display.c @@ -302,13 +302,13 @@ void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id) if ((radeon_use_pflipirq == 2) && ASIC_IS_DCE4(rdev)) return; - spin_lock_irqsave(&rdev->ddev->event_lock, flags); + spin_lock_irqsave(&rdev_to_drm(rdev)->event_lock, flags); if (radeon_crtc->flip_status != RADEON_FLIP_SUBMITTED) { DRM_DEBUG_DRIVER("radeon_crtc->flip_status = %d != " "RADEON_FLIP_SUBMITTED(%d)\n", radeon_crtc->flip_status, RADEON_FLIP_SUBMITTED); - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); return; } @@ -334,7 +334,7 @@ void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id) */ if (update_pending && (DRM_SCANOUTPOS_VALID & - radeon_get_crtc_scanoutpos(rdev->ddev, crtc_id, + radeon_get_crtc_scanoutpos(rdev_to_drm(rdev), crtc_id, GET_DISTANCE_TO_VBLANKSTART, &vpos, &hpos, NULL, NULL, &rdev->mode_info.crtcs[crtc_id]->base.hwmode)) && @@ -347,7 +347,7 @@ void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id) */ update_pending = 0; } - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); if (!update_pending) radeon_crtc_handle_flip(rdev, crtc_id); } @@ -370,14 +370,14 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id) if (radeon_crtc == NULL) return; - spin_lock_irqsave(&rdev->ddev->event_lock, flags); + spin_lock_irqsave(&rdev_to_drm(rdev)->event_lock, flags); work = radeon_crtc->flip_work; if (radeon_crtc->flip_status != RADEON_FLIP_SUBMITTED) { DRM_DEBUG_DRIVER("radeon_crtc->flip_status = %d != " "RADEON_FLIP_SUBMITTED(%d)\n", radeon_crtc->flip_status, RADEON_FLIP_SUBMITTED); - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); return; } @@ -389,7 +389,7 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id) if (work->event) drm_crtc_send_vblank_event(&radeon_crtc->base, work->event); - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); drm_crtc_vblank_put(&radeon_crtc->base); radeon_irq_kms_pflip_irq_put(rdev, work->crtc_id); @@ -408,7 +408,7 @@ static void radeon_flip_work_func(struct work_struct *__work) struct radeon_flip_work *work = container_of(__work, struct radeon_flip_work, flip_work); struct radeon_device *rdev = work->rdev; - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[work->crtc_id]; struct drm_crtc *crtc = &radeon_crtc->base; @@ -1401,7 +1401,7 @@ static int radeon_modeset_create_props(struct radeon_device *rdev) if (rdev->is_atom_bios) { rdev->mode_info.coherent_mode_property = - drm_property_create_range(rdev->ddev, 0 , "coherent", 0, 1); + drm_property_create_range(rdev_to_drm(rdev), 0, "coherent", 0, 1); if (!rdev->mode_info.coherent_mode_property) return -ENOMEM; } @@ -1409,57 +1409,57 @@ static int radeon_modeset_create_props(struct radeon_device *rdev) if (!ASIC_IS_AVIVO(rdev)) { sz = ARRAY_SIZE(radeon_tmds_pll_enum_list); rdev->mode_info.tmds_pll_property = - drm_property_create_enum(rdev->ddev, 0, + drm_property_create_enum(rdev_to_drm(rdev), 0, "tmds_pll", radeon_tmds_pll_enum_list, sz); } rdev->mode_info.load_detect_property = - drm_property_create_range(rdev->ddev, 0, "load detection", 0, 1); + drm_property_create_range(rdev_to_drm(rdev), 0, "load detection", 0, 1); if (!rdev->mode_info.load_detect_property) return -ENOMEM; - drm_mode_create_scaling_mode_property(rdev->ddev); + drm_mode_create_scaling_mode_property(rdev_to_drm(rdev)); sz = ARRAY_SIZE(radeon_tv_std_enum_list); rdev->mode_info.tv_std_property = - drm_property_create_enum(rdev->ddev, 0, + drm_property_create_enum(rdev_to_drm(rdev), 0, "tv standard", radeon_tv_std_enum_list, sz); sz = ARRAY_SIZE(radeon_underscan_enum_list); rdev->mode_info.underscan_property = - drm_property_create_enum(rdev->ddev, 0, + drm_property_create_enum(rdev_to_drm(rdev), 0, "underscan", radeon_underscan_enum_list, sz); rdev->mode_info.underscan_hborder_property = - drm_property_create_range(rdev->ddev, 0, + drm_property_create_range(rdev_to_drm(rdev), 0, "underscan hborder", 0, 128); if (!rdev->mode_info.underscan_hborder_property) return -ENOMEM; rdev->mode_info.underscan_vborder_property = - drm_property_create_range(rdev->ddev, 0, + drm_property_create_range(rdev_to_drm(rdev), 0, "underscan vborder", 0, 128); if (!rdev->mode_info.underscan_vborder_property) return -ENOMEM; sz = ARRAY_SIZE(radeon_audio_enum_list); rdev->mode_info.audio_property = - drm_property_create_enum(rdev->ddev, 0, + drm_property_create_enum(rdev_to_drm(rdev), 0, "audio", radeon_audio_enum_list, sz); sz = ARRAY_SIZE(radeon_dither_enum_list); rdev->mode_info.dither_property = - drm_property_create_enum(rdev->ddev, 0, + drm_property_create_enum(rdev_to_drm(rdev), 0, "dither", radeon_dither_enum_list, sz); sz = ARRAY_SIZE(radeon_output_csc_enum_list); rdev->mode_info.output_csc_property = - drm_property_create_enum(rdev->ddev, 0, + drm_property_create_enum(rdev_to_drm(rdev), 0, "output_csc", radeon_output_csc_enum_list, sz); @@ -1578,29 +1578,29 @@ int radeon_modeset_init(struct radeon_device *rdev) int i; int ret; - drm_mode_config_init(rdev->ddev); + drm_mode_config_init(rdev_to_drm(rdev)); rdev->mode_info.mode_config_initialized = true; - rdev->ddev->mode_config.funcs = &radeon_mode_funcs; + rdev_to_drm(rdev)->mode_config.funcs = &radeon_mode_funcs; if (radeon_use_pflipirq == 2 && rdev->family >= CHIP_R600) - rdev->ddev->mode_config.async_page_flip = true; + rdev_to_drm(rdev)->mode_config.async_page_flip = true; if (ASIC_IS_DCE5(rdev)) { - rdev->ddev->mode_config.max_width = 16384; - rdev->ddev->mode_config.max_height = 16384; + rdev_to_drm(rdev)->mode_config.max_width = 16384; + rdev_to_drm(rdev)->mode_config.max_height = 16384; } else if (ASIC_IS_AVIVO(rdev)) { - rdev->ddev->mode_config.max_width = 8192; - rdev->ddev->mode_config.max_height = 8192; + rdev_to_drm(rdev)->mode_config.max_width = 8192; + rdev_to_drm(rdev)->mode_config.max_height = 8192; } else { - rdev->ddev->mode_config.max_width = 4096; - rdev->ddev->mode_config.max_height = 4096; + rdev_to_drm(rdev)->mode_config.max_width = 4096; + rdev_to_drm(rdev)->mode_config.max_height = 4096; } - rdev->ddev->mode_config.preferred_depth = 24; - rdev->ddev->mode_config.prefer_shadow = 1; + rdev_to_drm(rdev)->mode_config.preferred_depth = 24; + rdev_to_drm(rdev)->mode_config.prefer_shadow = 1; - rdev->ddev->mode_config.fb_modifiers_not_supported = true; + rdev_to_drm(rdev)->mode_config.fb_modifiers_not_supported = true; ret = radeon_modeset_create_props(rdev); if (ret) { @@ -1618,11 +1618,11 @@ int radeon_modeset_init(struct radeon_device *rdev) /* allocate crtcs */ for (i = 0; i < rdev->num_crtc; i++) { - radeon_crtc_init(rdev->ddev, i); + radeon_crtc_init(rdev_to_drm(rdev), i); } /* okay we should have all the bios connectors */ - ret = radeon_setup_enc_conn(rdev->ddev); + ret = radeon_setup_enc_conn(rdev_to_drm(rdev)); if (!ret) { return ret; } @@ -1639,7 +1639,7 @@ int radeon_modeset_init(struct radeon_device *rdev) /* setup afmt */ radeon_afmt_init(rdev); - drm_kms_helper_poll_init(rdev->ddev); + drm_kms_helper_poll_init(rdev_to_drm(rdev)); /* do pm late init */ ret = radeon_pm_late_init(rdev); @@ -1650,11 +1650,11 @@ int radeon_modeset_init(struct radeon_device *rdev) void radeon_modeset_fini(struct radeon_device *rdev) { if (rdev->mode_info.mode_config_initialized) { - drm_kms_helper_poll_fini(rdev->ddev); + drm_kms_helper_poll_fini(rdev_to_drm(rdev)); radeon_hpd_fini(rdev); - drm_helper_force_disable_all(rdev->ddev); + drm_helper_force_disable_all(rdev_to_drm(rdev)); radeon_afmt_fini(rdev); - drm_mode_config_cleanup(rdev->ddev); + drm_mode_config_cleanup(rdev_to_drm(rdev)); rdev->mode_info.mode_config_initialized = false; } diff --git a/drivers/gpu/drm/radeon/radeon_fbdev.c b/drivers/gpu/drm/radeon/radeon_fbdev.c index 02bf25759059..fb70de29545c 100644 --- a/drivers/gpu/drm/radeon/radeon_fbdev.c +++ b/drivers/gpu/drm/radeon/radeon_fbdev.c @@ -67,7 +67,7 @@ static int radeon_fbdev_create_pinned_object(struct drm_fb_helper *fb_helper, int height = mode_cmd->height; u32 cpp; - info = drm_get_format_info(rdev->ddev, mode_cmd); + info = drm_get_format_info(rdev_to_drm(rdev), mode_cmd); cpp = info->cpp[0]; /* need to align pitch with crtc limits */ @@ -148,15 +148,15 @@ static int radeon_fbdev_fb_open(struct fb_info *info, int user) struct radeon_device *rdev = fb_helper->dev->dev_private; int ret; - ret = pm_runtime_get_sync(rdev->ddev->dev); + ret = pm_runtime_get_sync(rdev_to_drm(rdev)->dev); if (ret < 0 && ret != -EACCES) goto err_pm_runtime_mark_last_busy; return 0; err_pm_runtime_mark_last_busy: - pm_runtime_mark_last_busy(rdev->ddev->dev); - pm_runtime_put_autosuspend(rdev->ddev->dev); + pm_runtime_mark_last_busy(rdev_to_drm(rdev)->dev); + pm_runtime_put_autosuspend(rdev_to_drm(rdev)->dev); return ret; } @@ -165,8 +165,8 @@ static int radeon_fbdev_fb_release(struct fb_info *info, int user) struct drm_fb_helper *fb_helper = info->par; struct radeon_device *rdev = fb_helper->dev->dev_private; - pm_runtime_mark_last_busy(rdev->ddev->dev); - pm_runtime_put_autosuspend(rdev->ddev->dev); + pm_runtime_mark_last_busy(rdev_to_drm(rdev)->dev); + pm_runtime_put_autosuspend(rdev_to_drm(rdev)->dev); return 0; } @@ -236,7 +236,7 @@ static int radeon_fbdev_fb_helper_fb_probe(struct drm_fb_helper *fb_helper, ret = -ENOMEM; goto err_radeon_fbdev_destroy_pinned_object; } - ret = radeon_framebuffer_init(rdev->ddev, fb, &mode_cmd, gobj); + ret = radeon_framebuffer_init(rdev_to_drm(rdev), fb, &mode_cmd, gobj); if (ret) { DRM_ERROR("failed to initialize framebuffer %d\n", ret); goto err_kfree; @@ -374,12 +374,12 @@ void radeon_fbdev_setup(struct radeon_device *rdev) fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); if (!fb_helper) return; - drm_fb_helper_prepare(rdev->ddev, fb_helper, bpp_sel, &radeon_fbdev_fb_helper_funcs); + drm_fb_helper_prepare(rdev_to_drm(rdev), fb_helper, bpp_sel, &radeon_fbdev_fb_helper_funcs); - ret = drm_client_init(rdev->ddev, &fb_helper->client, "radeon-fbdev", + ret = drm_client_init(rdev_to_drm(rdev), &fb_helper->client, "radeon-fbdev", &radeon_fbdev_client_funcs); if (ret) { - drm_err(rdev->ddev, "Failed to register client: %d\n", ret); + drm_err(rdev_to_drm(rdev), "Failed to register client: %d\n", ret); goto err_drm_client_init; } @@ -394,13 +394,13 @@ void radeon_fbdev_setup(struct radeon_device *rdev) void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state) { - if (rdev->ddev->fb_helper) - drm_fb_helper_set_suspend(rdev->ddev->fb_helper, state); + if (rdev_to_drm(rdev)->fb_helper) + drm_fb_helper_set_suspend(rdev_to_drm(rdev)->fb_helper, state); } bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj) { - struct drm_fb_helper *fb_helper = rdev->ddev->fb_helper; + struct drm_fb_helper *fb_helper = rdev_to_drm(rdev)->fb_helper; struct drm_gem_object *gobj; if (!fb_helper) diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c index 4fb780d96f32..daff61586be5 100644 --- a/drivers/gpu/drm/radeon/radeon_fence.c +++ b/drivers/gpu/drm/radeon/radeon_fence.c @@ -150,7 +150,7 @@ int radeon_fence_emit(struct radeon_device *rdev, rdev->fence_context + ring, seq); radeon_fence_ring_emit(rdev, ring, *fence); - trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq); + trace_radeon_fence_emit(rdev_to_drm(rdev), ring, (*fence)->seq); radeon_fence_schedule_check(rdev, ring); return 0; } @@ -489,7 +489,7 @@ static long radeon_fence_wait_seq_timeout(struct radeon_device *rdev, if (!target_seq[i]) continue; - trace_radeon_fence_wait_begin(rdev->ddev, i, target_seq[i]); + trace_radeon_fence_wait_begin(rdev_to_drm(rdev), i, target_seq[i]); radeon_irq_kms_sw_irq_get(rdev, i); } @@ -511,7 +511,7 @@ static long radeon_fence_wait_seq_timeout(struct radeon_device *rdev, continue; radeon_irq_kms_sw_irq_put(rdev, i); - trace_radeon_fence_wait_end(rdev->ddev, i, target_seq[i]); + trace_radeon_fence_wait_end(rdev_to_drm(rdev), i, target_seq[i]); } return r; @@ -995,7 +995,7 @@ DEFINE_DEBUGFS_ATTRIBUTE(radeon_debugfs_gpu_reset_fops, void radeon_debugfs_fence_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("radeon_gpu_reset", 0444, root, rdev, &radeon_debugfs_gpu_reset_fops); diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c index 2ef201a072f1..9dd4ff09d562 100644 --- a/drivers/gpu/drm/radeon/radeon_gem.c +++ b/drivers/gpu/drm/radeon/radeon_gem.c @@ -899,7 +899,7 @@ DEFINE_SHOW_ATTRIBUTE(radeon_debugfs_gem_info); void radeon_gem_debugfs_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("radeon_gem_info", 0444, root, rdev, &radeon_debugfs_gem_info_fops); diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c index 3d174390a8af..1f16619ed06e 100644 --- a/drivers/gpu/drm/radeon/radeon_i2c.c +++ b/drivers/gpu/drm/radeon/radeon_i2c.c @@ -1011,7 +1011,7 @@ void radeon_i2c_add(struct radeon_device *rdev, struct radeon_i2c_bus_rec *rec, const char *name) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); int i; for (i = 0; i < RADEON_MAX_I2C_BUS; i++) { diff --git a/drivers/gpu/drm/radeon/radeon_ib.c b/drivers/gpu/drm/radeon/radeon_ib.c index 63d914f3414d..1aa41cc3f991 100644 --- a/drivers/gpu/drm/radeon/radeon_ib.c +++ b/drivers/gpu/drm/radeon/radeon_ib.c @@ -309,7 +309,7 @@ DEFINE_SHOW_ATTRIBUTE(radeon_debugfs_sa_info); static void radeon_debugfs_sa_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("radeon_sa_info", 0444, root, rdev, &radeon_debugfs_sa_info_fops); diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c index c4dda908666c..9961251b44ba 100644 --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -80,7 +80,7 @@ static void radeon_hotplug_work_func(struct work_struct *work) { struct radeon_device *rdev = container_of(work, struct radeon_device, hotplug_work.work); - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_mode_config *mode_config = &dev->mode_config; struct drm_connector *connector; @@ -101,7 +101,7 @@ static void radeon_dp_work_func(struct work_struct *work) { struct radeon_device *rdev = container_of(work, struct radeon_device, dp_work); - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_mode_config *mode_config = &dev->mode_config; struct drm_connector *connector; @@ -197,7 +197,7 @@ static void radeon_driver_irq_uninstall_kms(struct drm_device *dev) static int radeon_irq_install(struct radeon_device *rdev, int irq) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); int ret; if (irq == IRQ_NOTCONNECTED) @@ -218,7 +218,7 @@ static int radeon_irq_install(struct radeon_device *rdev, int irq) static void radeon_irq_uninstall(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct pci_dev *pdev = to_pci_dev(dev->dev); radeon_driver_irq_uninstall_kms(dev); @@ -322,9 +322,9 @@ int radeon_irq_kms_init(struct radeon_device *rdev) spin_lock_init(&rdev->irq.lock); /* Disable vblank irqs aggressively for power-saving */ - rdev->ddev->vblank_disable_immediate = true; + rdev_to_drm(rdev)->vblank_disable_immediate = true; - r = drm_vblank_init(rdev->ddev, rdev->num_crtc); + r = drm_vblank_init(rdev_to_drm(rdev), rdev->num_crtc); if (r) { return r; } diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c index a955f8a2f7fe..450ff7daa46c 100644 --- a/drivers/gpu/drm/radeon/radeon_object.c +++ b/drivers/gpu/drm/radeon/radeon_object.c @@ -150,7 +150,7 @@ int radeon_bo_create(struct radeon_device *rdev, bo = kzalloc(sizeof(struct radeon_bo), GFP_KERNEL); if (bo == NULL) return -ENOMEM; - drm_gem_private_object_init(rdev->ddev, &bo->tbo.base, size); + drm_gem_private_object_init(rdev_to_drm(rdev), &bo->tbo.base, size); bo->rdev = rdev; bo->surface_reg = -1; INIT_LIST_HEAD(&bo->list); diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c index 2d9d9f46f243..b4fb7e70320b 100644 --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c @@ -282,7 +282,7 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) if (rdev->irq.installed) { i = 0; - drm_for_each_crtc(crtc, rdev->ddev) { + drm_for_each_crtc(crtc, rdev_to_drm(rdev)) { if (rdev->pm.active_crtcs & (1 << i)) { /* This can fail if a modeset is in progress */ if (drm_crtc_vblank_get(crtc) == 0) @@ -299,7 +299,7 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) if (rdev->irq.installed) { i = 0; - drm_for_each_crtc(crtc, rdev->ddev) { + drm_for_each_crtc(crtc, rdev_to_drm(rdev)) { if (rdev->pm.req_vblank & (1 << i)) { rdev->pm.req_vblank &= ~(1 << i); drm_crtc_vblank_put(crtc); @@ -671,7 +671,7 @@ static ssize_t radeon_hwmon_show_temp(struct device *dev, char *buf) { struct radeon_device *rdev = dev_get_drvdata(dev); - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); int temp; /* Can't get temperature when the card is off */ @@ -715,7 +715,7 @@ static ssize_t radeon_hwmon_show_sclk(struct device *dev, struct device_attribute *attr, char *buf) { struct radeon_device *rdev = dev_get_drvdata(dev); - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); u32 sclk = 0; /* Can't get clock frequency when the card is off */ @@ -740,7 +740,7 @@ static ssize_t radeon_hwmon_show_vddc(struct device *dev, struct device_attribute *attr, char *buf) { struct radeon_device *rdev = dev_get_drvdata(dev); - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); u16 vddc = 0; /* Can't get vddc when the card is off */ @@ -1692,7 +1692,7 @@ void radeon_pm_fini(struct radeon_device *rdev) static void radeon_pm_compute_clocks_old(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; @@ -1765,7 +1765,7 @@ static void radeon_pm_compute_clocks_old(struct radeon_device *rdev) static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; struct radeon_connector *radeon_connector; @@ -1826,7 +1826,7 @@ static bool radeon_pm_in_vbl(struct radeon_device *rdev) */ for (crtc = 0; (crtc < rdev->num_crtc) && in_vbl; crtc++) { if (rdev->pm.active_crtcs & (1 << crtc)) { - vbl_status = radeon_get_crtc_scanoutpos(rdev->ddev, + vbl_status = radeon_get_crtc_scanoutpos(rdev_to_drm(rdev), crtc, USE_REAL_VBLANKSTART, &vpos, &hpos, NULL, NULL, @@ -1918,7 +1918,7 @@ static void radeon_dynpm_idle_work_handler(struct work_struct *work) static int radeon_debugfs_pm_info_show(struct seq_file *m, void *unused) { struct radeon_device *rdev = m->private; - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); if ((rdev->flags & RADEON_IS_PX) && (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) { @@ -1955,7 +1955,7 @@ DEFINE_SHOW_ATTRIBUTE(radeon_debugfs_pm_info); static void radeon_debugfs_pm_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("radeon_pm_info", 0444, root, rdev, &radeon_debugfs_pm_info_fops); diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c index 8d1d458286a8..581ae20c46e4 100644 --- a/drivers/gpu/drm/radeon/radeon_ring.c +++ b/drivers/gpu/drm/radeon/radeon_ring.c @@ -550,7 +550,7 @@ static void radeon_debugfs_ring_init(struct radeon_device *rdev, struct radeon_r { #if defined(CONFIG_DEBUG_FS) const char *ring_name = radeon_debugfs_ring_idx_to_name(ring->idx); - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; if (ring_name) debugfs_create_file(ring_name, 0444, root, ring, diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c index 5c65b6dfb99a..69d0c12fa419 100644 --- a/drivers/gpu/drm/radeon/radeon_ttm.c +++ b/drivers/gpu/drm/radeon/radeon_ttm.c @@ -682,8 +682,8 @@ int radeon_ttm_init(struct radeon_device *rdev) /* No others user of address space so set it to 0 */ r = ttm_device_init(&rdev->mman.bdev, &radeon_bo_driver, rdev->dev, - rdev->ddev->anon_inode->i_mapping, - rdev->ddev->vma_offset_manager, + rdev_to_drm(rdev)->anon_inode->i_mapping, + rdev_to_drm(rdev)->vma_offset_manager, rdev->need_swiotlb, dma_addressing_limited(&rdev->pdev->dev)); if (r) { @@ -890,7 +890,7 @@ static const struct file_operations radeon_ttm_gtt_fops = { static void radeon_ttm_debugfs_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct drm_minor *minor = rdev->ddev->primary; + struct drm_minor *minor = rdev_to_drm(rdev)->primary; struct dentry *root = minor->debugfs_root; debugfs_create_file("radeon_vram", 0444, root, rdev, diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c index d4d1501e6576..d6c18fd740ec 100644 --- a/drivers/gpu/drm/radeon/rs400.c +++ b/drivers/gpu/drm/radeon/rs400.c @@ -379,7 +379,7 @@ DEFINE_SHOW_ATTRIBUTE(rs400_debugfs_gart_info); static void rs400_debugfs_pcie_gart_info_init(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("rs400_gart_info", 0444, root, rdev, &rs400_debugfs_gart_info_fops); @@ -474,7 +474,7 @@ int rs400_resume(struct radeon_device *rdev) RREG32(R_0007C0_CP_STAT)); } /* post */ - radeon_combios_asic_init(rdev->ddev); + radeon_combios_asic_init(rdev_to_drm(rdev)); /* Resume clock after posting */ r300_clock_startup(rdev); /* Initialize surface registers */ @@ -552,7 +552,7 @@ int rs400_init(struct radeon_device *rdev) return -EINVAL; /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize memory controller */ rs400_mc_init(rdev); /* Fence driver */ diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c index 5c162778899b..88c8e91ea651 100644 --- a/drivers/gpu/drm/radeon/rs600.c +++ b/drivers/gpu/drm/radeon/rs600.c @@ -321,7 +321,7 @@ void rs600_pm_misc(struct radeon_device *rdev) void rs600_pm_prepare(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 tmp; @@ -339,7 +339,7 @@ void rs600_pm_prepare(struct radeon_device *rdev) void rs600_pm_finish(struct radeon_device *rdev) { - struct drm_device *ddev = rdev->ddev; + struct drm_device *ddev = rdev_to_drm(rdev); struct drm_crtc *crtc; struct radeon_crtc *radeon_crtc; u32 tmp; @@ -408,7 +408,7 @@ void rs600_hpd_set_polarity(struct radeon_device *rdev, void rs600_hpd_init(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned enable = 0; @@ -435,7 +435,7 @@ void rs600_hpd_init(struct radeon_device *rdev) void rs600_hpd_fini(struct radeon_device *rdev) { - struct drm_device *dev = rdev->ddev; + struct drm_device *dev = rdev_to_drm(rdev); struct drm_connector *connector; unsigned disable = 0; @@ -797,7 +797,7 @@ int rs600_irq_process(struct radeon_device *rdev) /* Vertical blank interrupts */ if (G_007EDC_LB_D1_VBLANK_INTERRUPT(rdev->irq.stat_regs.r500.disp_int)) { if (rdev->irq.crtc_vblank_int[0]) { - drm_handle_vblank(rdev->ddev, 0); + drm_handle_vblank(rdev_to_drm(rdev), 0); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -806,7 +806,7 @@ int rs600_irq_process(struct radeon_device *rdev) } if (G_007EDC_LB_D2_VBLANK_INTERRUPT(rdev->irq.stat_regs.r500.disp_int)) { if (rdev->irq.crtc_vblank_int[1]) { - drm_handle_vblank(rdev->ddev, 1); + drm_handle_vblank(rdev_to_drm(rdev), 1); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -1133,7 +1133,7 @@ int rs600_init(struct radeon_device *rdev) return -EINVAL; /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize memory controller */ rs600_mc_init(rdev); r100_debugfs_rbbm_init(rdev); diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c index 14fb0819b8c1..016eb4992803 100644 --- a/drivers/gpu/drm/radeon/rs690.c +++ b/drivers/gpu/drm/radeon/rs690.c @@ -845,7 +845,7 @@ int rs690_init(struct radeon_device *rdev) return -EINVAL; /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize memory controller */ rs690_mc_init(rdev); rv515_debugfs(rdev); diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c index bbc6ccabf788..1b4dfb645585 100644 --- a/drivers/gpu/drm/radeon/rv515.c +++ b/drivers/gpu/drm/radeon/rv515.c @@ -255,7 +255,7 @@ DEFINE_SHOW_ATTRIBUTE(rv515_debugfs_ga_info); void rv515_debugfs(struct radeon_device *rdev) { #if defined(CONFIG_DEBUG_FS) - struct dentry *root = rdev->ddev->primary->debugfs_root; + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; debugfs_create_file("rv515_pipes_info", 0444, root, rdev, &rv515_debugfs_pipes_info_fops); @@ -636,7 +636,7 @@ int rv515_init(struct radeon_device *rdev) if (radeon_boot_test_post_card(rdev) == false) return -EINVAL; /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* initialize AGP */ if (rdev->flags & RADEON_IS_AGP) { r = radeon_agp_init(rdev); diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c index 9ce12fa3c356..7d4b0bf59109 100644 --- a/drivers/gpu/drm/radeon/rv770.c +++ b/drivers/gpu/drm/radeon/rv770.c @@ -1935,7 +1935,7 @@ int rv770_init(struct radeon_device *rdev) /* Initialize surface registers */ radeon_surface_init(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* Fence driver */ radeon_fence_driver_init(rdev); /* initialize AGP */ diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c index 15759c8ca5b7..6c95575ce109 100644 --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c @@ -6277,7 +6277,7 @@ int si_irq_process(struct radeon_device *rdev) event_name = "vblank"; if (rdev->irq.crtc_vblank_int[crtc_idx]) { - drm_handle_vblank(rdev->ddev, crtc_idx); + drm_handle_vblank(rdev_to_drm(rdev), crtc_idx); rdev->pm.vblank_sync = true; wake_up(&rdev->irq.vblank_queue); } @@ -6839,7 +6839,7 @@ int si_init(struct radeon_device *rdev) /* Initialize surface registers */ radeon_surface_init(rdev); /* Initialize clocks */ - radeon_get_clock_info(rdev->ddev); + radeon_get_clock_info(rdev_to_drm(rdev)); /* Fence driver */ radeon_fence_driver_init(rdev); -- 2.45.2 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v3 5/6] drm/radeon: change rdev->ddev to rdev_to_drm(rdev) 2024-06-30 16:59 ` [PATCH v3 5/6] drm/radeon: change rdev->ddev to rdev_to_drm(rdev) Wu Hoi Pok @ 2024-07-03 8:46 ` Thomas Zimmermann 0 siblings, 0 replies; 29+ messages in thread From: Thomas Zimmermann @ 2024-07-03 8:46 UTC (permalink / raw) To: Wu Hoi Pok Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > This patch changes the way "drm_device" is accessed. It uses "rdev_to_drm(rdev)" > instead of accessing the struct member directly. > > Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Tested-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/radeon/atombios_encoders.c | 2 +- > drivers/gpu/drm/radeon/cik.c | 14 ++-- > drivers/gpu/drm/radeon/dce6_afmt.c | 2 +- > drivers/gpu/drm/radeon/evergreen.c | 12 ++-- > drivers/gpu/drm/radeon/ni.c | 2 +- > drivers/gpu/drm/radeon/r100.c | 24 +++---- > drivers/gpu/drm/radeon/r300.c | 6 +- > drivers/gpu/drm/radeon/r420.c | 6 +- > drivers/gpu/drm/radeon/r520.c | 2 +- > drivers/gpu/drm/radeon/r600.c | 12 ++-- > drivers/gpu/drm/radeon/r600_cs.c | 2 +- > drivers/gpu/drm/radeon/r600_dpm.c | 4 +- > drivers/gpu/drm/radeon/r600_hdmi.c | 2 +- > drivers/gpu/drm/radeon/radeon_acpi.c | 10 +-- > drivers/gpu/drm/radeon/radeon_agp.c | 2 +- > drivers/gpu/drm/radeon/radeon_atombios.c | 2 +- > drivers/gpu/drm/radeon/radeon_audio.c | 4 +- > drivers/gpu/drm/radeon/radeon_combios.c | 12 ++-- > drivers/gpu/drm/radeon/radeon_device.c | 10 +-- > drivers/gpu/drm/radeon/radeon_display.c | 74 +++++++++++----------- > drivers/gpu/drm/radeon/radeon_fbdev.c | 26 ++++---- > drivers/gpu/drm/radeon/radeon_fence.c | 8 +-- > drivers/gpu/drm/radeon/radeon_gem.c | 2 +- > drivers/gpu/drm/radeon/radeon_i2c.c | 2 +- > drivers/gpu/drm/radeon/radeon_ib.c | 2 +- > drivers/gpu/drm/radeon/radeon_irq_kms.c | 12 ++-- > drivers/gpu/drm/radeon/radeon_object.c | 2 +- > drivers/gpu/drm/radeon/radeon_pm.c | 20 +++--- > drivers/gpu/drm/radeon/radeon_ring.c | 2 +- > drivers/gpu/drm/radeon/radeon_ttm.c | 6 +- > drivers/gpu/drm/radeon/rs400.c | 6 +- > drivers/gpu/drm/radeon/rs600.c | 14 ++-- > drivers/gpu/drm/radeon/rs690.c | 2 +- > drivers/gpu/drm/radeon/rv515.c | 4 +- > drivers/gpu/drm/radeon/rv770.c | 2 +- > drivers/gpu/drm/radeon/si.c | 4 +- > 36 files changed, 159 insertions(+), 159 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c > index 03e6871b3065..c82e0fbc49b4 100644 > --- a/drivers/gpu/drm/radeon/atombios_encoders.c > +++ b/drivers/gpu/drm/radeon/atombios_encoders.c > @@ -2179,7 +2179,7 @@ int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder, int fe_idx) > void > radeon_atom_encoder_init(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_encoder *encoder; > > list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { > diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c > index b5e96a8fc2c1..11a492f21157 100644 > --- a/drivers/gpu/drm/radeon/cik.c > +++ b/drivers/gpu/drm/radeon/cik.c > @@ -7585,7 +7585,7 @@ int cik_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[0]) { > - drm_handle_vblank(rdev->ddev, 0); > + drm_handle_vblank(rdev_to_drm(rdev), 0); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -7615,7 +7615,7 @@ int cik_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[1]) { > - drm_handle_vblank(rdev->ddev, 1); > + drm_handle_vblank(rdev_to_drm(rdev), 1); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -7645,7 +7645,7 @@ int cik_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[2]) { > - drm_handle_vblank(rdev->ddev, 2); > + drm_handle_vblank(rdev_to_drm(rdev), 2); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -7675,7 +7675,7 @@ int cik_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[3]) { > - drm_handle_vblank(rdev->ddev, 3); > + drm_handle_vblank(rdev_to_drm(rdev), 3); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -7705,7 +7705,7 @@ int cik_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[4]) { > - drm_handle_vblank(rdev->ddev, 4); > + drm_handle_vblank(rdev_to_drm(rdev), 4); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -7735,7 +7735,7 @@ int cik_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[5]) { > - drm_handle_vblank(rdev->ddev, 5); > + drm_handle_vblank(rdev_to_drm(rdev), 5); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -8581,7 +8581,7 @@ int cik_init(struct radeon_device *rdev) > /* Initialize surface registers */ > radeon_surface_init(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > > /* Fence driver */ > radeon_fence_driver_init(rdev); > diff --git a/drivers/gpu/drm/radeon/dce6_afmt.c b/drivers/gpu/drm/radeon/dce6_afmt.c > index 4c06f47453fd..d6ab93ed9ec4 100644 > --- a/drivers/gpu/drm/radeon/dce6_afmt.c > +++ b/drivers/gpu/drm/radeon/dce6_afmt.c > @@ -91,7 +91,7 @@ struct r600_audio_pin *dce6_audio_get_pin(struct radeon_device *rdev) > pin = &rdev->audio.pin[i]; > pin_count = 0; > > - list_for_each_entry(encoder, &rdev->ddev->mode_config.encoder_list, head) { > + list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) { > if (radeon_encoder_is_digital(encoder)) { > radeon_encoder = to_radeon_encoder(encoder); > dig = radeon_encoder->enc_priv; > diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c > index c634dc28e6c3..bc4ab71613a5 100644 > --- a/drivers/gpu/drm/radeon/evergreen.c > +++ b/drivers/gpu/drm/radeon/evergreen.c > @@ -1673,7 +1673,7 @@ void evergreen_pm_misc(struct radeon_device *rdev) > */ > void evergreen_pm_prepare(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 tmp; > @@ -1698,7 +1698,7 @@ void evergreen_pm_prepare(struct radeon_device *rdev) > */ > void evergreen_pm_finish(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 tmp; > @@ -1763,7 +1763,7 @@ void evergreen_hpd_set_polarity(struct radeon_device *rdev, > */ > void evergreen_hpd_init(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned enabled = 0; > u32 tmp = DC_HPDx_CONNECTION_TIMER(0x9c4) | > @@ -1804,7 +1804,7 @@ void evergreen_hpd_init(struct radeon_device *rdev) > */ > void evergreen_hpd_fini(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned disabled = 0; > > @@ -4753,7 +4753,7 @@ int evergreen_irq_process(struct radeon_device *rdev) > event_name = "vblank"; > > if (rdev->irq.crtc_vblank_int[crtc_idx]) { > - drm_handle_vblank(rdev->ddev, crtc_idx); > + drm_handle_vblank(rdev_to_drm(rdev), crtc_idx); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -5211,7 +5211,7 @@ int evergreen_init(struct radeon_device *rdev) > /* Initialize surface registers */ > radeon_surface_init(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* Fence driver */ > radeon_fence_driver_init(rdev); > /* initialize AGP */ > diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c > index 77aee99e473a..3890911fe693 100644 > --- a/drivers/gpu/drm/radeon/ni.c > +++ b/drivers/gpu/drm/radeon/ni.c > @@ -2360,7 +2360,7 @@ int cayman_init(struct radeon_device *rdev) > /* Initialize surface registers */ > radeon_surface_init(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* Fence driver */ > radeon_fence_driver_init(rdev); > /* initialize memory controller */ > diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c > index 0b1e19345f43..d7d7d23bf9a1 100644 > --- a/drivers/gpu/drm/radeon/r100.c > +++ b/drivers/gpu/drm/radeon/r100.c > @@ -459,7 +459,7 @@ void r100_pm_misc(struct radeon_device *rdev) > */ > void r100_pm_prepare(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 tmp; > @@ -490,7 +490,7 @@ void r100_pm_prepare(struct radeon_device *rdev) > */ > void r100_pm_finish(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 tmp; > @@ -603,7 +603,7 @@ void r100_hpd_set_polarity(struct radeon_device *rdev, > */ > void r100_hpd_init(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned enable = 0; > > @@ -626,7 +626,7 @@ void r100_hpd_init(struct radeon_device *rdev) > */ > void r100_hpd_fini(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned disable = 0; > > @@ -798,7 +798,7 @@ int r100_irq_process(struct radeon_device *rdev) > /* Vertical blank interrupts */ > if (status & RADEON_CRTC_VBLANK_STAT) { > if (rdev->irq.crtc_vblank_int[0]) { > - drm_handle_vblank(rdev->ddev, 0); > + drm_handle_vblank(rdev_to_drm(rdev), 0); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -807,7 +807,7 @@ int r100_irq_process(struct radeon_device *rdev) > } > if (status & RADEON_CRTC2_VBLANK_STAT) { > if (rdev->irq.crtc_vblank_int[1]) { > - drm_handle_vblank(rdev->ddev, 1); > + drm_handle_vblank(rdev_to_drm(rdev), 1); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -1471,7 +1471,7 @@ int r100_cs_packet_parse_vline(struct radeon_cs_parser *p) > header = radeon_get_ib_value(p, h_idx); > crtc_id = radeon_get_ib_value(p, h_idx + 5); > reg = R100_CP_PACKET0_GET_REG(header); > - crtc = drm_crtc_find(p->rdev->ddev, p->filp, crtc_id); > + crtc = drm_crtc_find(rdev_to_drm(p->rdev), p->filp, crtc_id); > if (!crtc) { > DRM_ERROR("cannot find crtc %d\n", crtc_id); > return -ENOENT; > @@ -3059,7 +3059,7 @@ DEFINE_SHOW_ATTRIBUTE(r100_debugfs_mc_info); > void r100_debugfs_rbbm_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("r100_rbbm_info", 0444, root, rdev, > &r100_debugfs_rbbm_info_fops); > @@ -3069,7 +3069,7 @@ void r100_debugfs_rbbm_init(struct radeon_device *rdev) > void r100_debugfs_cp_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("r100_cp_ring_info", 0444, root, rdev, > &r100_debugfs_cp_ring_info_fops); > @@ -3081,7 +3081,7 @@ void r100_debugfs_cp_init(struct radeon_device *rdev) > void r100_debugfs_mc_info_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("r100_mc_info", 0444, root, rdev, > &r100_debugfs_mc_info_fops); > @@ -3947,7 +3947,7 @@ int r100_resume(struct radeon_device *rdev) > RREG32(R_0007C0_CP_STAT)); > } > /* post */ > - radeon_combios_asic_init(rdev->ddev); > + radeon_combios_asic_init(rdev_to_drm(rdev)); > /* Resume clock after posting */ > r100_clock_startup(rdev); > /* Initialize surface registers */ > @@ -4056,7 +4056,7 @@ int r100_init(struct radeon_device *rdev) > /* Set asic errata */ > r100_errata(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize AGP */ > if (rdev->flags & RADEON_IS_AGP) { > r = radeon_agp_init(rdev); > diff --git a/drivers/gpu/drm/radeon/r300.c b/drivers/gpu/drm/radeon/r300.c > index 1620f534f55f..05c13102a8cb 100644 > --- a/drivers/gpu/drm/radeon/r300.c > +++ b/drivers/gpu/drm/radeon/r300.c > @@ -616,7 +616,7 @@ DEFINE_SHOW_ATTRIBUTE(rv370_debugfs_pcie_gart_info); > static void rv370_debugfs_pcie_gart_info_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("rv370_pcie_gart_info", 0444, root, rdev, > &rv370_debugfs_pcie_gart_info_fops); > @@ -1452,7 +1452,7 @@ int r300_resume(struct radeon_device *rdev) > RREG32(R_0007C0_CP_STAT)); > } > /* post */ > - radeon_combios_asic_init(rdev->ddev); > + radeon_combios_asic_init(rdev_to_drm(rdev)); > /* Resume clock after posting */ > r300_clock_startup(rdev); > /* Initialize surface registers */ > @@ -1538,7 +1538,7 @@ int r300_init(struct radeon_device *rdev) > /* Set asic errata */ > r300_errata(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize AGP */ > if (rdev->flags & RADEON_IS_AGP) { > r = radeon_agp_init(rdev); > diff --git a/drivers/gpu/drm/radeon/r420.c b/drivers/gpu/drm/radeon/r420.c > index a979662eaa73..9a31cdec6415 100644 > --- a/drivers/gpu/drm/radeon/r420.c > +++ b/drivers/gpu/drm/radeon/r420.c > @@ -322,7 +322,7 @@ int r420_resume(struct radeon_device *rdev) > if (rdev->is_atom_bios) { > atom_asic_init(rdev->mode_info.atom_context); > } else { > - radeon_combios_asic_init(rdev->ddev); > + radeon_combios_asic_init(rdev_to_drm(rdev)); > } > /* Resume clock after posting */ > r420_clock_resume(rdev); > @@ -414,7 +414,7 @@ int r420_init(struct radeon_device *rdev) > return -EINVAL; > > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize AGP */ > if (rdev->flags & RADEON_IS_AGP) { > r = radeon_agp_init(rdev); > @@ -493,7 +493,7 @@ DEFINE_SHOW_ATTRIBUTE(r420_debugfs_pipes_info); > void r420_debugfs_pipes_info_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("r420_pipes_info", 0444, root, rdev, > &r420_debugfs_pipes_info_fops); > diff --git a/drivers/gpu/drm/radeon/r520.c b/drivers/gpu/drm/radeon/r520.c > index 6cbcaa845192..08e127b3249a 100644 > --- a/drivers/gpu/drm/radeon/r520.c > +++ b/drivers/gpu/drm/radeon/r520.c > @@ -287,7 +287,7 @@ int r520_init(struct radeon_device *rdev) > atom_asic_init(rdev->mode_info.atom_context); > } > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize AGP */ > if (rdev->flags & RADEON_IS_AGP) { > r = radeon_agp_init(rdev); > diff --git a/drivers/gpu/drm/radeon/r600.c b/drivers/gpu/drm/radeon/r600.c > index 087d41e370fd..8b62f7faa5b9 100644 > --- a/drivers/gpu/drm/radeon/r600.c > +++ b/drivers/gpu/drm/radeon/r600.c > @@ -950,7 +950,7 @@ void r600_hpd_set_polarity(struct radeon_device *rdev, > > void r600_hpd_init(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned enable = 0; > > @@ -1017,7 +1017,7 @@ void r600_hpd_init(struct radeon_device *rdev) > > void r600_hpd_fini(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned disable = 0; > > @@ -3280,7 +3280,7 @@ int r600_init(struct radeon_device *rdev) > /* Initialize surface registers */ > radeon_surface_init(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* Fence driver */ > radeon_fence_driver_init(rdev); > if (rdev->flags & RADEON_IS_AGP) { > @@ -4136,7 +4136,7 @@ int r600_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: D1 vblank - IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[0]) { > - drm_handle_vblank(rdev->ddev, 0); > + drm_handle_vblank(rdev_to_drm(rdev), 0); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -4166,7 +4166,7 @@ int r600_irq_process(struct radeon_device *rdev) > DRM_DEBUG("IH: D2 vblank - IH event w/o asserted irq bit?\n"); > > if (rdev->irq.crtc_vblank_int[1]) { > - drm_handle_vblank(rdev->ddev, 1); > + drm_handle_vblank(rdev_to_drm(rdev), 1); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -4358,7 +4358,7 @@ DEFINE_SHOW_ATTRIBUTE(r600_debugfs_mc_info); > static void r600_debugfs_mc_info_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("r600_mc_info", 0444, root, rdev, > &r600_debugfs_mc_info_fops); > diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c > index 6cf54a747749..1b2d31c4d77c 100644 > --- a/drivers/gpu/drm/radeon/r600_cs.c > +++ b/drivers/gpu/drm/radeon/r600_cs.c > @@ -884,7 +884,7 @@ int r600_cs_common_vline_parse(struct radeon_cs_parser *p, > crtc_id = radeon_get_ib_value(p, h_idx + 2 + 7 + 1); > reg = R600_CP_PACKET0_GET_REG(header); > > - crtc = drm_crtc_find(p->rdev->ddev, p->filp, crtc_id); > + crtc = drm_crtc_find(rdev_to_drm(p->rdev), p->filp, crtc_id); > if (!crtc) { > DRM_ERROR("cannot find crtc %d\n", crtc_id); > return -ENOENT; > diff --git a/drivers/gpu/drm/radeon/r600_dpm.c b/drivers/gpu/drm/radeon/r600_dpm.c > index 64980a61d38a..81d58ef667dd 100644 > --- a/drivers/gpu/drm/radeon/r600_dpm.c > +++ b/drivers/gpu/drm/radeon/r600_dpm.c > @@ -153,7 +153,7 @@ void r600_dpm_print_ps_status(struct radeon_device *rdev, > > u32 r600_dpm_get_vblank_time(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 vblank_in_pixels; > @@ -180,7 +180,7 @@ u32 r600_dpm_get_vblank_time(struct radeon_device *rdev) > > u32 r600_dpm_get_vrefresh(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 vrefresh = 0; > diff --git a/drivers/gpu/drm/radeon/r600_hdmi.c b/drivers/gpu/drm/radeon/r600_hdmi.c > index f3551ebaa2f0..661f374f5f27 100644 > --- a/drivers/gpu/drm/radeon/r600_hdmi.c > +++ b/drivers/gpu/drm/radeon/r600_hdmi.c > @@ -116,7 +116,7 @@ void r600_audio_update_hdmi(struct work_struct *work) > { > struct radeon_device *rdev = container_of(work, struct radeon_device, > audio_work); > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct r600_audio_pin audio_status = r600_audio_status(rdev); > struct drm_encoder *encoder; > bool changed = false; > diff --git a/drivers/gpu/drm/radeon/radeon_acpi.c b/drivers/gpu/drm/radeon/radeon_acpi.c > index 603a78e41ba5..22ce61bdfc06 100644 > --- a/drivers/gpu/drm/radeon/radeon_acpi.c > +++ b/drivers/gpu/drm/radeon/radeon_acpi.c > @@ -405,11 +405,11 @@ static int radeon_atif_handler(struct radeon_device *rdev, > if (req.pending & ATIF_DGPU_DISPLAY_EVENT) { > if ((rdev->flags & RADEON_IS_PX) && > radeon_atpx_dgpu_req_power_for_displays()) { > - pm_runtime_get_sync(rdev->ddev->dev); > + pm_runtime_get_sync(rdev_to_drm(rdev)->dev); > /* Just fire off a uevent and let userspace tell us what to do */ > - drm_helper_hpd_irq_event(rdev->ddev); > - pm_runtime_mark_last_busy(rdev->ddev->dev); > - pm_runtime_put_autosuspend(rdev->ddev->dev); > + drm_helper_hpd_irq_event(rdev_to_drm(rdev)); > + pm_runtime_mark_last_busy(rdev_to_drm(rdev)->dev); > + pm_runtime_put_autosuspend(rdev_to_drm(rdev)->dev); > } > } > /* TODO: check other events */ > @@ -736,7 +736,7 @@ int radeon_acpi_init(struct radeon_device *rdev) > struct radeon_encoder *target = NULL; > > /* Find the encoder controlling the brightness */ > - list_for_each_entry(tmp, &rdev->ddev->mode_config.encoder_list, > + list_for_each_entry(tmp, &rdev_to_drm(rdev)->mode_config.encoder_list, > head) { > struct radeon_encoder *enc = to_radeon_encoder(tmp); > > diff --git a/drivers/gpu/drm/radeon/radeon_agp.c b/drivers/gpu/drm/radeon/radeon_agp.c > index a3d749e350f9..89d7b0e9e79f 100644 > --- a/drivers/gpu/drm/radeon/radeon_agp.c > +++ b/drivers/gpu/drm/radeon/radeon_agp.c > @@ -161,7 +161,7 @@ struct radeon_agp_head *radeon_agp_head_init(struct drm_device *dev) > > static int radeon_agp_head_acquire(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct pci_dev *pdev = to_pci_dev(dev->dev); > > if (!rdev->agp) > diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c > index 10793a433bf5..97c4e10d0550 100644 > --- a/drivers/gpu/drm/radeon/radeon_atombios.c > +++ b/drivers/gpu/drm/radeon/radeon_atombios.c > @@ -187,7 +187,7 @@ void radeon_atombios_i2c_init(struct radeon_device *rdev) > > if (i2c.valid) { > sprintf(stmp, "0x%x", i2c.i2c_id); > - rdev->i2c_bus[i] = radeon_i2c_create(rdev->ddev, &i2c, stmp); > + rdev->i2c_bus[i] = radeon_i2c_create(rdev_to_drm(rdev), &i2c, stmp); > } > gpio = (ATOM_GPIO_I2C_ASSIGMENT *) > ((u8 *)gpio + sizeof(ATOM_GPIO_I2C_ASSIGMENT)); > diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c > index 0bcd767b9f47..47aa06a9a942 100644 > --- a/drivers/gpu/drm/radeon/radeon_audio.c > +++ b/drivers/gpu/drm/radeon/radeon_audio.c > @@ -196,7 +196,7 @@ static void radeon_audio_enable(struct radeon_device *rdev, > return; > > if (rdev->mode_info.mode_config_initialized) { > - list_for_each_entry(encoder, &rdev->ddev->mode_config.encoder_list, head) { > + list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) { > if (radeon_encoder_is_digital(encoder)) { > radeon_encoder = to_radeon_encoder(encoder); > dig = radeon_encoder->enc_priv; > @@ -760,7 +760,7 @@ static int radeon_audio_component_get_eld(struct device *kdev, int port, > if (!rdev->audio.enabled || !rdev->mode_info.mode_config_initialized) > return 0; > > - list_for_each_entry(encoder, &rdev->ddev->mode_config.encoder_list, head) { > + list_for_each_entry(encoder, &rdev_to_drm(rdev)->mode_config.encoder_list, head) { > if (!radeon_encoder_is_digital(encoder)) > continue; > radeon_encoder = to_radeon_encoder(encoder); > diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c > index 6952b1273b0f..41ddc576f8f8 100644 > --- a/drivers/gpu/drm/radeon/radeon_combios.c > +++ b/drivers/gpu/drm/radeon/radeon_combios.c > @@ -372,7 +372,7 @@ bool radeon_combios_check_hardcoded_edid(struct radeon_device *rdev) > int edid_info, size; > struct edid *edid; > unsigned char *raw; > - edid_info = combios_get_table_offset(rdev->ddev, COMBIOS_HARDCODED_EDID_TABLE); > + edid_info = combios_get_table_offset(rdev_to_drm(rdev), COMBIOS_HARDCODED_EDID_TABLE); > if (!edid_info) > return false; > > @@ -642,7 +642,7 @@ static struct radeon_i2c_bus_rec combios_setup_i2c_bus(struct radeon_device *rde > > static struct radeon_i2c_bus_rec radeon_combios_get_i2c_info_from_table(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct radeon_i2c_bus_rec i2c; > u16 offset; > u8 id, blocks, clk, data; > @@ -670,7 +670,7 @@ static struct radeon_i2c_bus_rec radeon_combios_get_i2c_info_from_table(struct r > > void radeon_combios_i2c_init(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct radeon_i2c_bus_rec i2c; > > /* actual hw pads > @@ -812,7 +812,7 @@ bool radeon_combios_get_clock_info(struct drm_device *dev) > > bool radeon_combios_sideport_present(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > u16 igp_info; > > /* sideport is AMD only */ > @@ -915,7 +915,7 @@ struct radeon_encoder_primary_dac *radeon_combios_get_primary_dac_info(struct > enum radeon_tv_std > radeon_combios_get_tv_info(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > uint16_t tv_info; > enum radeon_tv_std tv_std = TV_STD_NTSC; > > @@ -2637,7 +2637,7 @@ static const char *thermal_controller_names[] = { > > void radeon_combios_get_power_modes(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > u16 offset, misc, misc2 = 0; > u8 rev, tmp; > int state_index = 0; > diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c > index afbb3a80c0c6..32851632643d 100644 > --- a/drivers/gpu/drm/radeon/radeon_device.c > +++ b/drivers/gpu/drm/radeon/radeon_device.c > @@ -760,7 +760,7 @@ bool radeon_boot_test_post_card(struct radeon_device *rdev) > if (rdev->is_atom_bios) > atom_asic_init(rdev->mode_info.atom_context); > else > - radeon_combios_asic_init(rdev->ddev); > + radeon_combios_asic_init(rdev_to_drm(rdev)); > return true; > } else { > dev_err(rdev->dev, "Card not posted and no BIOS - ignoring\n"); > @@ -980,7 +980,7 @@ int radeon_atombios_init(struct radeon_device *rdev) > return -ENOMEM; > > rdev->mode_info.atom_card_info = atom_card_info; > - atom_card_info->dev = rdev->ddev; > + atom_card_info->dev = rdev_to_drm(rdev); > atom_card_info->reg_read = cail_reg_read; > atom_card_info->reg_write = cail_reg_write; > /* needed for iio ops */ > @@ -1005,7 +1005,7 @@ int radeon_atombios_init(struct radeon_device *rdev) > > mutex_init(&rdev->mode_info.atom_context->mutex); > mutex_init(&rdev->mode_info.atom_context->scratch_mutex); > - radeon_atom_initialize_bios_scratch_regs(rdev->ddev); > + radeon_atom_initialize_bios_scratch_regs(rdev_to_drm(rdev)); > atom_allocate_fb_scratch(rdev->mode_info.atom_context); > return 0; > } > @@ -1049,7 +1049,7 @@ void radeon_atombios_fini(struct radeon_device *rdev) > */ > int radeon_combios_init(struct radeon_device *rdev) > { > - radeon_combios_initialize_bios_scratch_regs(rdev->ddev); > + radeon_combios_initialize_bios_scratch_regs(rdev_to_drm(rdev)); > return 0; > } > > @@ -1847,7 +1847,7 @@ int radeon_gpu_reset(struct radeon_device *rdev) > > downgrade_write(&rdev->exclusive_lock); > > - drm_helper_resume_force_mode(rdev->ddev); > + drm_helper_resume_force_mode(rdev_to_drm(rdev)); > > /* set the power state here in case we are a PX system or headless */ > if ((rdev->pm.pm_method == PM_METHOD_DPM) && rdev->pm.dpm_enabled) > diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c > index 843383f7237f..829d44cf6759 100644 > --- a/drivers/gpu/drm/radeon/radeon_display.c > +++ b/drivers/gpu/drm/radeon/radeon_display.c > @@ -302,13 +302,13 @@ void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id) > if ((radeon_use_pflipirq == 2) && ASIC_IS_DCE4(rdev)) > return; > > - spin_lock_irqsave(&rdev->ddev->event_lock, flags); > + spin_lock_irqsave(&rdev_to_drm(rdev)->event_lock, flags); > if (radeon_crtc->flip_status != RADEON_FLIP_SUBMITTED) { > DRM_DEBUG_DRIVER("radeon_crtc->flip_status = %d != " > "RADEON_FLIP_SUBMITTED(%d)\n", > radeon_crtc->flip_status, > RADEON_FLIP_SUBMITTED); > - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); > + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); > return; > } > > @@ -334,7 +334,7 @@ void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id) > */ > if (update_pending && > (DRM_SCANOUTPOS_VALID & > - radeon_get_crtc_scanoutpos(rdev->ddev, crtc_id, > + radeon_get_crtc_scanoutpos(rdev_to_drm(rdev), crtc_id, > GET_DISTANCE_TO_VBLANKSTART, > &vpos, &hpos, NULL, NULL, > &rdev->mode_info.crtcs[crtc_id]->base.hwmode)) && > @@ -347,7 +347,7 @@ void radeon_crtc_handle_vblank(struct radeon_device *rdev, int crtc_id) > */ > update_pending = 0; > } > - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); > + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); > if (!update_pending) > radeon_crtc_handle_flip(rdev, crtc_id); > } > @@ -370,14 +370,14 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id) > if (radeon_crtc == NULL) > return; > > - spin_lock_irqsave(&rdev->ddev->event_lock, flags); > + spin_lock_irqsave(&rdev_to_drm(rdev)->event_lock, flags); > work = radeon_crtc->flip_work; > if (radeon_crtc->flip_status != RADEON_FLIP_SUBMITTED) { > DRM_DEBUG_DRIVER("radeon_crtc->flip_status = %d != " > "RADEON_FLIP_SUBMITTED(%d)\n", > radeon_crtc->flip_status, > RADEON_FLIP_SUBMITTED); > - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); > + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); > return; > } > > @@ -389,7 +389,7 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id) > if (work->event) > drm_crtc_send_vblank_event(&radeon_crtc->base, work->event); > > - spin_unlock_irqrestore(&rdev->ddev->event_lock, flags); > + spin_unlock_irqrestore(&rdev_to_drm(rdev)->event_lock, flags); > > drm_crtc_vblank_put(&radeon_crtc->base); > radeon_irq_kms_pflip_irq_put(rdev, work->crtc_id); > @@ -408,7 +408,7 @@ static void radeon_flip_work_func(struct work_struct *__work) > struct radeon_flip_work *work = > container_of(__work, struct radeon_flip_work, flip_work); > struct radeon_device *rdev = work->rdev; > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[work->crtc_id]; > > struct drm_crtc *crtc = &radeon_crtc->base; > @@ -1401,7 +1401,7 @@ static int radeon_modeset_create_props(struct radeon_device *rdev) > > if (rdev->is_atom_bios) { > rdev->mode_info.coherent_mode_property = > - drm_property_create_range(rdev->ddev, 0 , "coherent", 0, 1); > + drm_property_create_range(rdev_to_drm(rdev), 0, "coherent", 0, 1); > if (!rdev->mode_info.coherent_mode_property) > return -ENOMEM; > } > @@ -1409,57 +1409,57 @@ static int radeon_modeset_create_props(struct radeon_device *rdev) > if (!ASIC_IS_AVIVO(rdev)) { > sz = ARRAY_SIZE(radeon_tmds_pll_enum_list); > rdev->mode_info.tmds_pll_property = > - drm_property_create_enum(rdev->ddev, 0, > + drm_property_create_enum(rdev_to_drm(rdev), 0, > "tmds_pll", > radeon_tmds_pll_enum_list, sz); > } > > rdev->mode_info.load_detect_property = > - drm_property_create_range(rdev->ddev, 0, "load detection", 0, 1); > + drm_property_create_range(rdev_to_drm(rdev), 0, "load detection", 0, 1); > if (!rdev->mode_info.load_detect_property) > return -ENOMEM; > > - drm_mode_create_scaling_mode_property(rdev->ddev); > + drm_mode_create_scaling_mode_property(rdev_to_drm(rdev)); > > sz = ARRAY_SIZE(radeon_tv_std_enum_list); > rdev->mode_info.tv_std_property = > - drm_property_create_enum(rdev->ddev, 0, > + drm_property_create_enum(rdev_to_drm(rdev), 0, > "tv standard", > radeon_tv_std_enum_list, sz); > > sz = ARRAY_SIZE(radeon_underscan_enum_list); > rdev->mode_info.underscan_property = > - drm_property_create_enum(rdev->ddev, 0, > + drm_property_create_enum(rdev_to_drm(rdev), 0, > "underscan", > radeon_underscan_enum_list, sz); > > rdev->mode_info.underscan_hborder_property = > - drm_property_create_range(rdev->ddev, 0, > + drm_property_create_range(rdev_to_drm(rdev), 0, > "underscan hborder", 0, 128); > if (!rdev->mode_info.underscan_hborder_property) > return -ENOMEM; > > rdev->mode_info.underscan_vborder_property = > - drm_property_create_range(rdev->ddev, 0, > + drm_property_create_range(rdev_to_drm(rdev), 0, > "underscan vborder", 0, 128); > if (!rdev->mode_info.underscan_vborder_property) > return -ENOMEM; > > sz = ARRAY_SIZE(radeon_audio_enum_list); > rdev->mode_info.audio_property = > - drm_property_create_enum(rdev->ddev, 0, > + drm_property_create_enum(rdev_to_drm(rdev), 0, > "audio", > radeon_audio_enum_list, sz); > > sz = ARRAY_SIZE(radeon_dither_enum_list); > rdev->mode_info.dither_property = > - drm_property_create_enum(rdev->ddev, 0, > + drm_property_create_enum(rdev_to_drm(rdev), 0, > "dither", > radeon_dither_enum_list, sz); > > sz = ARRAY_SIZE(radeon_output_csc_enum_list); > rdev->mode_info.output_csc_property = > - drm_property_create_enum(rdev->ddev, 0, > + drm_property_create_enum(rdev_to_drm(rdev), 0, > "output_csc", > radeon_output_csc_enum_list, sz); > > @@ -1578,29 +1578,29 @@ int radeon_modeset_init(struct radeon_device *rdev) > int i; > int ret; > > - drm_mode_config_init(rdev->ddev); > + drm_mode_config_init(rdev_to_drm(rdev)); > rdev->mode_info.mode_config_initialized = true; > > - rdev->ddev->mode_config.funcs = &radeon_mode_funcs; > + rdev_to_drm(rdev)->mode_config.funcs = &radeon_mode_funcs; > > if (radeon_use_pflipirq == 2 && rdev->family >= CHIP_R600) > - rdev->ddev->mode_config.async_page_flip = true; > + rdev_to_drm(rdev)->mode_config.async_page_flip = true; > > if (ASIC_IS_DCE5(rdev)) { > - rdev->ddev->mode_config.max_width = 16384; > - rdev->ddev->mode_config.max_height = 16384; > + rdev_to_drm(rdev)->mode_config.max_width = 16384; > + rdev_to_drm(rdev)->mode_config.max_height = 16384; > } else if (ASIC_IS_AVIVO(rdev)) { > - rdev->ddev->mode_config.max_width = 8192; > - rdev->ddev->mode_config.max_height = 8192; > + rdev_to_drm(rdev)->mode_config.max_width = 8192; > + rdev_to_drm(rdev)->mode_config.max_height = 8192; > } else { > - rdev->ddev->mode_config.max_width = 4096; > - rdev->ddev->mode_config.max_height = 4096; > + rdev_to_drm(rdev)->mode_config.max_width = 4096; > + rdev_to_drm(rdev)->mode_config.max_height = 4096; > } > > - rdev->ddev->mode_config.preferred_depth = 24; > - rdev->ddev->mode_config.prefer_shadow = 1; > + rdev_to_drm(rdev)->mode_config.preferred_depth = 24; > + rdev_to_drm(rdev)->mode_config.prefer_shadow = 1; > > - rdev->ddev->mode_config.fb_modifiers_not_supported = true; > + rdev_to_drm(rdev)->mode_config.fb_modifiers_not_supported = true; > > ret = radeon_modeset_create_props(rdev); > if (ret) { > @@ -1618,11 +1618,11 @@ int radeon_modeset_init(struct radeon_device *rdev) > > /* allocate crtcs */ > for (i = 0; i < rdev->num_crtc; i++) { > - radeon_crtc_init(rdev->ddev, i); > + radeon_crtc_init(rdev_to_drm(rdev), i); > } > > /* okay we should have all the bios connectors */ > - ret = radeon_setup_enc_conn(rdev->ddev); > + ret = radeon_setup_enc_conn(rdev_to_drm(rdev)); > if (!ret) { > return ret; > } > @@ -1639,7 +1639,7 @@ int radeon_modeset_init(struct radeon_device *rdev) > /* setup afmt */ > radeon_afmt_init(rdev); > > - drm_kms_helper_poll_init(rdev->ddev); > + drm_kms_helper_poll_init(rdev_to_drm(rdev)); > > /* do pm late init */ > ret = radeon_pm_late_init(rdev); > @@ -1650,11 +1650,11 @@ int radeon_modeset_init(struct radeon_device *rdev) > void radeon_modeset_fini(struct radeon_device *rdev) > { > if (rdev->mode_info.mode_config_initialized) { > - drm_kms_helper_poll_fini(rdev->ddev); > + drm_kms_helper_poll_fini(rdev_to_drm(rdev)); > radeon_hpd_fini(rdev); > - drm_helper_force_disable_all(rdev->ddev); > + drm_helper_force_disable_all(rdev_to_drm(rdev)); > radeon_afmt_fini(rdev); > - drm_mode_config_cleanup(rdev->ddev); > + drm_mode_config_cleanup(rdev_to_drm(rdev)); > rdev->mode_info.mode_config_initialized = false; > } > > diff --git a/drivers/gpu/drm/radeon/radeon_fbdev.c b/drivers/gpu/drm/radeon/radeon_fbdev.c > index 02bf25759059..fb70de29545c 100644 > --- a/drivers/gpu/drm/radeon/radeon_fbdev.c > +++ b/drivers/gpu/drm/radeon/radeon_fbdev.c > @@ -67,7 +67,7 @@ static int radeon_fbdev_create_pinned_object(struct drm_fb_helper *fb_helper, > int height = mode_cmd->height; > u32 cpp; > > - info = drm_get_format_info(rdev->ddev, mode_cmd); > + info = drm_get_format_info(rdev_to_drm(rdev), mode_cmd); > cpp = info->cpp[0]; > > /* need to align pitch with crtc limits */ > @@ -148,15 +148,15 @@ static int radeon_fbdev_fb_open(struct fb_info *info, int user) > struct radeon_device *rdev = fb_helper->dev->dev_private; > int ret; > > - ret = pm_runtime_get_sync(rdev->ddev->dev); > + ret = pm_runtime_get_sync(rdev_to_drm(rdev)->dev); > if (ret < 0 && ret != -EACCES) > goto err_pm_runtime_mark_last_busy; > > return 0; > > err_pm_runtime_mark_last_busy: > - pm_runtime_mark_last_busy(rdev->ddev->dev); > - pm_runtime_put_autosuspend(rdev->ddev->dev); > + pm_runtime_mark_last_busy(rdev_to_drm(rdev)->dev); > + pm_runtime_put_autosuspend(rdev_to_drm(rdev)->dev); > return ret; > } > > @@ -165,8 +165,8 @@ static int radeon_fbdev_fb_release(struct fb_info *info, int user) > struct drm_fb_helper *fb_helper = info->par; > struct radeon_device *rdev = fb_helper->dev->dev_private; > > - pm_runtime_mark_last_busy(rdev->ddev->dev); > - pm_runtime_put_autosuspend(rdev->ddev->dev); > + pm_runtime_mark_last_busy(rdev_to_drm(rdev)->dev); > + pm_runtime_put_autosuspend(rdev_to_drm(rdev)->dev); > > return 0; > } > @@ -236,7 +236,7 @@ static int radeon_fbdev_fb_helper_fb_probe(struct drm_fb_helper *fb_helper, > ret = -ENOMEM; > goto err_radeon_fbdev_destroy_pinned_object; > } > - ret = radeon_framebuffer_init(rdev->ddev, fb, &mode_cmd, gobj); > + ret = radeon_framebuffer_init(rdev_to_drm(rdev), fb, &mode_cmd, gobj); > if (ret) { > DRM_ERROR("failed to initialize framebuffer %d\n", ret); > goto err_kfree; > @@ -374,12 +374,12 @@ void radeon_fbdev_setup(struct radeon_device *rdev) > fb_helper = kzalloc(sizeof(*fb_helper), GFP_KERNEL); > if (!fb_helper) > return; > - drm_fb_helper_prepare(rdev->ddev, fb_helper, bpp_sel, &radeon_fbdev_fb_helper_funcs); > + drm_fb_helper_prepare(rdev_to_drm(rdev), fb_helper, bpp_sel, &radeon_fbdev_fb_helper_funcs); > > - ret = drm_client_init(rdev->ddev, &fb_helper->client, "radeon-fbdev", > + ret = drm_client_init(rdev_to_drm(rdev), &fb_helper->client, "radeon-fbdev", > &radeon_fbdev_client_funcs); > if (ret) { > - drm_err(rdev->ddev, "Failed to register client: %d\n", ret); > + drm_err(rdev_to_drm(rdev), "Failed to register client: %d\n", ret); > goto err_drm_client_init; > } > > @@ -394,13 +394,13 @@ void radeon_fbdev_setup(struct radeon_device *rdev) > > void radeon_fbdev_set_suspend(struct radeon_device *rdev, int state) > { > - if (rdev->ddev->fb_helper) > - drm_fb_helper_set_suspend(rdev->ddev->fb_helper, state); > + if (rdev_to_drm(rdev)->fb_helper) > + drm_fb_helper_set_suspend(rdev_to_drm(rdev)->fb_helper, state); > } > > bool radeon_fbdev_robj_is_fb(struct radeon_device *rdev, struct radeon_bo *robj) > { > - struct drm_fb_helper *fb_helper = rdev->ddev->fb_helper; > + struct drm_fb_helper *fb_helper = rdev_to_drm(rdev)->fb_helper; > struct drm_gem_object *gobj; > > if (!fb_helper) > diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c > index 4fb780d96f32..daff61586be5 100644 > --- a/drivers/gpu/drm/radeon/radeon_fence.c > +++ b/drivers/gpu/drm/radeon/radeon_fence.c > @@ -150,7 +150,7 @@ int radeon_fence_emit(struct radeon_device *rdev, > rdev->fence_context + ring, > seq); > radeon_fence_ring_emit(rdev, ring, *fence); > - trace_radeon_fence_emit(rdev->ddev, ring, (*fence)->seq); > + trace_radeon_fence_emit(rdev_to_drm(rdev), ring, (*fence)->seq); > radeon_fence_schedule_check(rdev, ring); > return 0; > } > @@ -489,7 +489,7 @@ static long radeon_fence_wait_seq_timeout(struct radeon_device *rdev, > if (!target_seq[i]) > continue; > > - trace_radeon_fence_wait_begin(rdev->ddev, i, target_seq[i]); > + trace_radeon_fence_wait_begin(rdev_to_drm(rdev), i, target_seq[i]); > radeon_irq_kms_sw_irq_get(rdev, i); > } > > @@ -511,7 +511,7 @@ static long radeon_fence_wait_seq_timeout(struct radeon_device *rdev, > continue; > > radeon_irq_kms_sw_irq_put(rdev, i); > - trace_radeon_fence_wait_end(rdev->ddev, i, target_seq[i]); > + trace_radeon_fence_wait_end(rdev_to_drm(rdev), i, target_seq[i]); > } > > return r; > @@ -995,7 +995,7 @@ DEFINE_DEBUGFS_ATTRIBUTE(radeon_debugfs_gpu_reset_fops, > void radeon_debugfs_fence_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("radeon_gpu_reset", 0444, root, rdev, > &radeon_debugfs_gpu_reset_fops); > diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c > index 2ef201a072f1..9dd4ff09d562 100644 > --- a/drivers/gpu/drm/radeon/radeon_gem.c > +++ b/drivers/gpu/drm/radeon/radeon_gem.c > @@ -899,7 +899,7 @@ DEFINE_SHOW_ATTRIBUTE(radeon_debugfs_gem_info); > void radeon_gem_debugfs_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("radeon_gem_info", 0444, root, rdev, > &radeon_debugfs_gem_info_fops); > diff --git a/drivers/gpu/drm/radeon/radeon_i2c.c b/drivers/gpu/drm/radeon/radeon_i2c.c > index 3d174390a8af..1f16619ed06e 100644 > --- a/drivers/gpu/drm/radeon/radeon_i2c.c > +++ b/drivers/gpu/drm/radeon/radeon_i2c.c > @@ -1011,7 +1011,7 @@ void radeon_i2c_add(struct radeon_device *rdev, > struct radeon_i2c_bus_rec *rec, > const char *name) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > int i; > > for (i = 0; i < RADEON_MAX_I2C_BUS; i++) { > diff --git a/drivers/gpu/drm/radeon/radeon_ib.c b/drivers/gpu/drm/radeon/radeon_ib.c > index 63d914f3414d..1aa41cc3f991 100644 > --- a/drivers/gpu/drm/radeon/radeon_ib.c > +++ b/drivers/gpu/drm/radeon/radeon_ib.c > @@ -309,7 +309,7 @@ DEFINE_SHOW_ATTRIBUTE(radeon_debugfs_sa_info); > static void radeon_debugfs_sa_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("radeon_sa_info", 0444, root, rdev, > &radeon_debugfs_sa_info_fops); > diff --git a/drivers/gpu/drm/radeon/radeon_irq_kms.c b/drivers/gpu/drm/radeon/radeon_irq_kms.c > index c4dda908666c..9961251b44ba 100644 > --- a/drivers/gpu/drm/radeon/radeon_irq_kms.c > +++ b/drivers/gpu/drm/radeon/radeon_irq_kms.c > @@ -80,7 +80,7 @@ static void radeon_hotplug_work_func(struct work_struct *work) > { > struct radeon_device *rdev = container_of(work, struct radeon_device, > hotplug_work.work); > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_mode_config *mode_config = &dev->mode_config; > struct drm_connector *connector; > > @@ -101,7 +101,7 @@ static void radeon_dp_work_func(struct work_struct *work) > { > struct radeon_device *rdev = container_of(work, struct radeon_device, > dp_work); > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_mode_config *mode_config = &dev->mode_config; > struct drm_connector *connector; > > @@ -197,7 +197,7 @@ static void radeon_driver_irq_uninstall_kms(struct drm_device *dev) > > static int radeon_irq_install(struct radeon_device *rdev, int irq) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > int ret; > > if (irq == IRQ_NOTCONNECTED) > @@ -218,7 +218,7 @@ static int radeon_irq_install(struct radeon_device *rdev, int irq) > > static void radeon_irq_uninstall(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct pci_dev *pdev = to_pci_dev(dev->dev); > > radeon_driver_irq_uninstall_kms(dev); > @@ -322,9 +322,9 @@ int radeon_irq_kms_init(struct radeon_device *rdev) > spin_lock_init(&rdev->irq.lock); > > /* Disable vblank irqs aggressively for power-saving */ > - rdev->ddev->vblank_disable_immediate = true; > + rdev_to_drm(rdev)->vblank_disable_immediate = true; > > - r = drm_vblank_init(rdev->ddev, rdev->num_crtc); > + r = drm_vblank_init(rdev_to_drm(rdev), rdev->num_crtc); > if (r) { > return r; > } > diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c > index a955f8a2f7fe..450ff7daa46c 100644 > --- a/drivers/gpu/drm/radeon/radeon_object.c > +++ b/drivers/gpu/drm/radeon/radeon_object.c > @@ -150,7 +150,7 @@ int radeon_bo_create(struct radeon_device *rdev, > bo = kzalloc(sizeof(struct radeon_bo), GFP_KERNEL); > if (bo == NULL) > return -ENOMEM; > - drm_gem_private_object_init(rdev->ddev, &bo->tbo.base, size); > + drm_gem_private_object_init(rdev_to_drm(rdev), &bo->tbo.base, size); > bo->rdev = rdev; > bo->surface_reg = -1; > INIT_LIST_HEAD(&bo->list); > diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c > index 2d9d9f46f243..b4fb7e70320b 100644 > --- a/drivers/gpu/drm/radeon/radeon_pm.c > +++ b/drivers/gpu/drm/radeon/radeon_pm.c > @@ -282,7 +282,7 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) > > if (rdev->irq.installed) { > i = 0; > - drm_for_each_crtc(crtc, rdev->ddev) { > + drm_for_each_crtc(crtc, rdev_to_drm(rdev)) { > if (rdev->pm.active_crtcs & (1 << i)) { > /* This can fail if a modeset is in progress */ > if (drm_crtc_vblank_get(crtc) == 0) > @@ -299,7 +299,7 @@ static void radeon_pm_set_clocks(struct radeon_device *rdev) > > if (rdev->irq.installed) { > i = 0; > - drm_for_each_crtc(crtc, rdev->ddev) { > + drm_for_each_crtc(crtc, rdev_to_drm(rdev)) { > if (rdev->pm.req_vblank & (1 << i)) { > rdev->pm.req_vblank &= ~(1 << i); > drm_crtc_vblank_put(crtc); > @@ -671,7 +671,7 @@ static ssize_t radeon_hwmon_show_temp(struct device *dev, > char *buf) > { > struct radeon_device *rdev = dev_get_drvdata(dev); > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > int temp; > > /* Can't get temperature when the card is off */ > @@ -715,7 +715,7 @@ static ssize_t radeon_hwmon_show_sclk(struct device *dev, > struct device_attribute *attr, char *buf) > { > struct radeon_device *rdev = dev_get_drvdata(dev); > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > u32 sclk = 0; > > /* Can't get clock frequency when the card is off */ > @@ -740,7 +740,7 @@ static ssize_t radeon_hwmon_show_vddc(struct device *dev, > struct device_attribute *attr, char *buf) > { > struct radeon_device *rdev = dev_get_drvdata(dev); > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > u16 vddc = 0; > > /* Can't get vddc when the card is off */ > @@ -1692,7 +1692,7 @@ void radeon_pm_fini(struct radeon_device *rdev) > > static void radeon_pm_compute_clocks_old(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > > @@ -1765,7 +1765,7 @@ static void radeon_pm_compute_clocks_old(struct radeon_device *rdev) > > static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > struct radeon_connector *radeon_connector; > @@ -1826,7 +1826,7 @@ static bool radeon_pm_in_vbl(struct radeon_device *rdev) > */ > for (crtc = 0; (crtc < rdev->num_crtc) && in_vbl; crtc++) { > if (rdev->pm.active_crtcs & (1 << crtc)) { > - vbl_status = radeon_get_crtc_scanoutpos(rdev->ddev, > + vbl_status = radeon_get_crtc_scanoutpos(rdev_to_drm(rdev), > crtc, > USE_REAL_VBLANKSTART, > &vpos, &hpos, NULL, NULL, > @@ -1918,7 +1918,7 @@ static void radeon_dynpm_idle_work_handler(struct work_struct *work) > static int radeon_debugfs_pm_info_show(struct seq_file *m, void *unused) > { > struct radeon_device *rdev = m->private; > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > > if ((rdev->flags & RADEON_IS_PX) && > (ddev->switch_power_state != DRM_SWITCH_POWER_ON)) { > @@ -1955,7 +1955,7 @@ DEFINE_SHOW_ATTRIBUTE(radeon_debugfs_pm_info); > static void radeon_debugfs_pm_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("radeon_pm_info", 0444, root, rdev, > &radeon_debugfs_pm_info_fops); > diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c > index 8d1d458286a8..581ae20c46e4 100644 > --- a/drivers/gpu/drm/radeon/radeon_ring.c > +++ b/drivers/gpu/drm/radeon/radeon_ring.c > @@ -550,7 +550,7 @@ static void radeon_debugfs_ring_init(struct radeon_device *rdev, struct radeon_r > { > #if defined(CONFIG_DEBUG_FS) > const char *ring_name = radeon_debugfs_ring_idx_to_name(ring->idx); > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > if (ring_name) > debugfs_create_file(ring_name, 0444, root, ring, > diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c > index 5c65b6dfb99a..69d0c12fa419 100644 > --- a/drivers/gpu/drm/radeon/radeon_ttm.c > +++ b/drivers/gpu/drm/radeon/radeon_ttm.c > @@ -682,8 +682,8 @@ int radeon_ttm_init(struct radeon_device *rdev) > > /* No others user of address space so set it to 0 */ > r = ttm_device_init(&rdev->mman.bdev, &radeon_bo_driver, rdev->dev, > - rdev->ddev->anon_inode->i_mapping, > - rdev->ddev->vma_offset_manager, > + rdev_to_drm(rdev)->anon_inode->i_mapping, > + rdev_to_drm(rdev)->vma_offset_manager, > rdev->need_swiotlb, > dma_addressing_limited(&rdev->pdev->dev)); > if (r) { > @@ -890,7 +890,7 @@ static const struct file_operations radeon_ttm_gtt_fops = { > static void radeon_ttm_debugfs_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct drm_minor *minor = rdev->ddev->primary; > + struct drm_minor *minor = rdev_to_drm(rdev)->primary; > struct dentry *root = minor->debugfs_root; > > debugfs_create_file("radeon_vram", 0444, root, rdev, > diff --git a/drivers/gpu/drm/radeon/rs400.c b/drivers/gpu/drm/radeon/rs400.c > index d4d1501e6576..d6c18fd740ec 100644 > --- a/drivers/gpu/drm/radeon/rs400.c > +++ b/drivers/gpu/drm/radeon/rs400.c > @@ -379,7 +379,7 @@ DEFINE_SHOW_ATTRIBUTE(rs400_debugfs_gart_info); > static void rs400_debugfs_pcie_gart_info_init(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("rs400_gart_info", 0444, root, rdev, > &rs400_debugfs_gart_info_fops); > @@ -474,7 +474,7 @@ int rs400_resume(struct radeon_device *rdev) > RREG32(R_0007C0_CP_STAT)); > } > /* post */ > - radeon_combios_asic_init(rdev->ddev); > + radeon_combios_asic_init(rdev_to_drm(rdev)); > /* Resume clock after posting */ > r300_clock_startup(rdev); > /* Initialize surface registers */ > @@ -552,7 +552,7 @@ int rs400_init(struct radeon_device *rdev) > return -EINVAL; > > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize memory controller */ > rs400_mc_init(rdev); > /* Fence driver */ > diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c > index 5c162778899b..88c8e91ea651 100644 > --- a/drivers/gpu/drm/radeon/rs600.c > +++ b/drivers/gpu/drm/radeon/rs600.c > @@ -321,7 +321,7 @@ void rs600_pm_misc(struct radeon_device *rdev) > > void rs600_pm_prepare(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 tmp; > @@ -339,7 +339,7 @@ void rs600_pm_prepare(struct radeon_device *rdev) > > void rs600_pm_finish(struct radeon_device *rdev) > { > - struct drm_device *ddev = rdev->ddev; > + struct drm_device *ddev = rdev_to_drm(rdev); > struct drm_crtc *crtc; > struct radeon_crtc *radeon_crtc; > u32 tmp; > @@ -408,7 +408,7 @@ void rs600_hpd_set_polarity(struct radeon_device *rdev, > > void rs600_hpd_init(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned enable = 0; > > @@ -435,7 +435,7 @@ void rs600_hpd_init(struct radeon_device *rdev) > > void rs600_hpd_fini(struct radeon_device *rdev) > { > - struct drm_device *dev = rdev->ddev; > + struct drm_device *dev = rdev_to_drm(rdev); > struct drm_connector *connector; > unsigned disable = 0; > > @@ -797,7 +797,7 @@ int rs600_irq_process(struct radeon_device *rdev) > /* Vertical blank interrupts */ > if (G_007EDC_LB_D1_VBLANK_INTERRUPT(rdev->irq.stat_regs.r500.disp_int)) { > if (rdev->irq.crtc_vblank_int[0]) { > - drm_handle_vblank(rdev->ddev, 0); > + drm_handle_vblank(rdev_to_drm(rdev), 0); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -806,7 +806,7 @@ int rs600_irq_process(struct radeon_device *rdev) > } > if (G_007EDC_LB_D2_VBLANK_INTERRUPT(rdev->irq.stat_regs.r500.disp_int)) { > if (rdev->irq.crtc_vblank_int[1]) { > - drm_handle_vblank(rdev->ddev, 1); > + drm_handle_vblank(rdev_to_drm(rdev), 1); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -1133,7 +1133,7 @@ int rs600_init(struct radeon_device *rdev) > return -EINVAL; > > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize memory controller */ > rs600_mc_init(rdev); > r100_debugfs_rbbm_init(rdev); > diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c > index 14fb0819b8c1..016eb4992803 100644 > --- a/drivers/gpu/drm/radeon/rs690.c > +++ b/drivers/gpu/drm/radeon/rs690.c > @@ -845,7 +845,7 @@ int rs690_init(struct radeon_device *rdev) > return -EINVAL; > > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize memory controller */ > rs690_mc_init(rdev); > rv515_debugfs(rdev); > diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c > index bbc6ccabf788..1b4dfb645585 100644 > --- a/drivers/gpu/drm/radeon/rv515.c > +++ b/drivers/gpu/drm/radeon/rv515.c > @@ -255,7 +255,7 @@ DEFINE_SHOW_ATTRIBUTE(rv515_debugfs_ga_info); > void rv515_debugfs(struct radeon_device *rdev) > { > #if defined(CONFIG_DEBUG_FS) > - struct dentry *root = rdev->ddev->primary->debugfs_root; > + struct dentry *root = rdev_to_drm(rdev)->primary->debugfs_root; > > debugfs_create_file("rv515_pipes_info", 0444, root, rdev, > &rv515_debugfs_pipes_info_fops); > @@ -636,7 +636,7 @@ int rv515_init(struct radeon_device *rdev) > if (radeon_boot_test_post_card(rdev) == false) > return -EINVAL; > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* initialize AGP */ > if (rdev->flags & RADEON_IS_AGP) { > r = radeon_agp_init(rdev); > diff --git a/drivers/gpu/drm/radeon/rv770.c b/drivers/gpu/drm/radeon/rv770.c > index 9ce12fa3c356..7d4b0bf59109 100644 > --- a/drivers/gpu/drm/radeon/rv770.c > +++ b/drivers/gpu/drm/radeon/rv770.c > @@ -1935,7 +1935,7 @@ int rv770_init(struct radeon_device *rdev) > /* Initialize surface registers */ > radeon_surface_init(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > /* Fence driver */ > radeon_fence_driver_init(rdev); > /* initialize AGP */ > diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c > index 15759c8ca5b7..6c95575ce109 100644 > --- a/drivers/gpu/drm/radeon/si.c > +++ b/drivers/gpu/drm/radeon/si.c > @@ -6277,7 +6277,7 @@ int si_irq_process(struct radeon_device *rdev) > event_name = "vblank"; > > if (rdev->irq.crtc_vblank_int[crtc_idx]) { > - drm_handle_vblank(rdev->ddev, crtc_idx); > + drm_handle_vblank(rdev_to_drm(rdev), crtc_idx); > rdev->pm.vblank_sync = true; > wake_up(&rdev->irq.vblank_queue); > } > @@ -6839,7 +6839,7 @@ int si_init(struct radeon_device *rdev) > /* Initialize surface registers */ > radeon_surface_init(rdev); > /* Initialize clocks */ > - radeon_get_clock_info(rdev->ddev); > + radeon_get_clock_info(rdev_to_drm(rdev)); > > /* Fence driver */ > radeon_fence_driver_init(rdev); -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v3 6/6] drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok ` (4 preceding siblings ...) 2024-06-30 16:59 ` [PATCH v3 5/6] drm/radeon: change rdev->ddev to rdev_to_drm(rdev) Wu Hoi Pok @ 2024-06-30 16:59 ` Wu Hoi Pok 2024-07-03 8:47 ` Thomas Zimmermann 2024-07-03 8:52 ` [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Thomas Zimmermann 6 siblings, 1 reply; 29+ messages in thread From: Wu Hoi Pok @ 2024-06-30 16:59 UTC (permalink / raw) Cc: Thomas Zimmermann, Wu Hoi Pok, Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel "drm_dev_alloc" is deprecated, in order to use the newer "devm_drm_dev_alloc", the "drm_device" is stored inside "radeon_device", by changing "rdev_to_drm(rdev)" other functions still gain access to the member "drm_device". Also, "devm_drm_dev_alloc" is now allocating "radeon_device", allocation inside "radeon_driver_load_kms" has to be removed. In "radeon_device_init", it originally assigned "rdev->dev" etc. However it is already done right after "devm_drm_dev_alloc" as you can see down below. It is better remove them. Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> --- drivers/gpu/drm/radeon/radeon.h | 4 ++-- drivers/gpu/drm/radeon/radeon_device.c | 3 --- drivers/gpu/drm/radeon/radeon_drv.c | 12 +++++++++--- drivers/gpu/drm/radeon/radeon_kms.c | 8 +------- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index ae35c102a487..fd8a4513025f 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -2297,7 +2297,7 @@ typedef void (*radeon_wreg_t)(struct radeon_device*, uint32_t, uint32_t); struct radeon_device { struct device *dev; - struct drm_device *ddev; + struct drm_device ddev; struct pci_dev *pdev; #ifdef __alpha__ struct pci_controller *hose; @@ -2478,7 +2478,7 @@ void cik_mm_wdoorbell(struct radeon_device *rdev, u32 index, u32 v); static inline struct drm_device *rdev_to_drm(struct radeon_device *rdev) { - return rdev->ddev; + return &rdev->ddev; } /* diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c index 32851632643d..554b236c2328 100644 --- a/drivers/gpu/drm/radeon/radeon_device.c +++ b/drivers/gpu/drm/radeon/radeon_device.c @@ -1285,9 +1285,6 @@ int radeon_device_init(struct radeon_device *rdev, bool runtime = false; rdev->shutdown = false; - rdev->dev = &pdev->dev; - rdev->ddev = ddev; - rdev->pdev = pdev; rdev->flags = flags; rdev->family = flags & RADEON_FAMILY_MASK; rdev->is_atom_bios = false; diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c index 7b8aa8406751..f36aa71c57c7 100644 --- a/drivers/gpu/drm/radeon/radeon_drv.c +++ b/drivers/gpu/drm/radeon/radeon_drv.c @@ -260,6 +260,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, { unsigned long flags = 0; struct drm_device *ddev; + struct radeon_device *rdev; int ret; if (!ent) @@ -300,9 +301,14 @@ static int radeon_pci_probe(struct pci_dev *pdev, if (ret) return ret; - ddev = drm_dev_alloc(&kms_driver, &pdev->dev); - if (IS_ERR(ddev)) - return PTR_ERR(ddev); + rdev = devm_drm_dev_alloc(&pdev->dev, &kms_driver, typeof(*rdev), ddev); + if (IS_ERR(rdev)) + return PTR_ERR(rdev); + + rdev->dev = &pdev->dev; + rdev->pdev = pdev; + ddev = rdev_to_drm(rdev); + ddev->dev_private = rdev; ret = pci_enable_device(pdev); if (ret) diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c index a16590c6247f..645e33bf7947 100644 --- a/drivers/gpu/drm/radeon/radeon_kms.c +++ b/drivers/gpu/drm/radeon/radeon_kms.c @@ -104,15 +104,9 @@ void radeon_driver_unload_kms(struct drm_device *dev) int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags) { struct pci_dev *pdev = to_pci_dev(dev->dev); - struct radeon_device *rdev; + struct radeon_device *rdev = dev->dev_private; int r, acpi_status; - rdev = kzalloc(sizeof(struct radeon_device), GFP_KERNEL); - if (rdev == NULL) { - return -ENOMEM; - } - dev->dev_private = (void *)rdev; - #ifdef __alpha__ rdev->hose = pdev->sysdata; #endif -- 2.45.2 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v3 6/6] drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc 2024-06-30 16:59 ` [PATCH v3 6/6] drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc Wu Hoi Pok @ 2024-07-03 8:47 ` Thomas Zimmermann 2024-07-08 20:04 ` Alex Deucher 0 siblings, 1 reply; 29+ messages in thread From: Thomas Zimmermann @ 2024-07-03 8:47 UTC (permalink / raw) To: Wu Hoi Pok Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > "drm_dev_alloc" is deprecated, in order to use the newer "devm_drm_dev_alloc", > the "drm_device" is stored inside "radeon_device", by changing "rdev_to_drm(rdev)" > other functions still gain access to the member "drm_device". Also, "devm_drm_dev_alloc" > is now allocating "radeon_device", allocation inside "radeon_driver_load_kms" has to be > removed. > > In "radeon_device_init", it originally assigned "rdev->dev" etc. However it is already > done right after "devm_drm_dev_alloc" as you can see down below. It is better remove them. > > Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Tested-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > drivers/gpu/drm/radeon/radeon.h | 4 ++-- > drivers/gpu/drm/radeon/radeon_device.c | 3 --- > drivers/gpu/drm/radeon/radeon_drv.c | 12 +++++++++--- > drivers/gpu/drm/radeon/radeon_kms.c | 8 +------- > 4 files changed, 12 insertions(+), 15 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h > index ae35c102a487..fd8a4513025f 100644 > --- a/drivers/gpu/drm/radeon/radeon.h > +++ b/drivers/gpu/drm/radeon/radeon.h > @@ -2297,7 +2297,7 @@ typedef void (*radeon_wreg_t)(struct radeon_device*, uint32_t, uint32_t); > > struct radeon_device { > struct device *dev; > - struct drm_device *ddev; > + struct drm_device ddev; > struct pci_dev *pdev; > #ifdef __alpha__ > struct pci_controller *hose; > @@ -2478,7 +2478,7 @@ void cik_mm_wdoorbell(struct radeon_device *rdev, u32 index, u32 v); > > static inline struct drm_device *rdev_to_drm(struct radeon_device *rdev) > { > - return rdev->ddev; > + return &rdev->ddev; > } > > /* > diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c > index 32851632643d..554b236c2328 100644 > --- a/drivers/gpu/drm/radeon/radeon_device.c > +++ b/drivers/gpu/drm/radeon/radeon_device.c > @@ -1285,9 +1285,6 @@ int radeon_device_init(struct radeon_device *rdev, > bool runtime = false; > > rdev->shutdown = false; > - rdev->dev = &pdev->dev; > - rdev->ddev = ddev; > - rdev->pdev = pdev; > rdev->flags = flags; > rdev->family = flags & RADEON_FAMILY_MASK; > rdev->is_atom_bios = false; > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > index 7b8aa8406751..f36aa71c57c7 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -260,6 +260,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, > { > unsigned long flags = 0; > struct drm_device *ddev; > + struct radeon_device *rdev; > int ret; > > if (!ent) > @@ -300,9 +301,14 @@ static int radeon_pci_probe(struct pci_dev *pdev, > if (ret) > return ret; > > - ddev = drm_dev_alloc(&kms_driver, &pdev->dev); > - if (IS_ERR(ddev)) > - return PTR_ERR(ddev); > + rdev = devm_drm_dev_alloc(&pdev->dev, &kms_driver, typeof(*rdev), ddev); > + if (IS_ERR(rdev)) > + return PTR_ERR(rdev); > + > + rdev->dev = &pdev->dev; > + rdev->pdev = pdev; > + ddev = rdev_to_drm(rdev); > + ddev->dev_private = rdev; > > ret = pci_enable_device(pdev); > if (ret) > diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c > index a16590c6247f..645e33bf7947 100644 > --- a/drivers/gpu/drm/radeon/radeon_kms.c > +++ b/drivers/gpu/drm/radeon/radeon_kms.c > @@ -104,15 +104,9 @@ void radeon_driver_unload_kms(struct drm_device *dev) > int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags) > { > struct pci_dev *pdev = to_pci_dev(dev->dev); > - struct radeon_device *rdev; > + struct radeon_device *rdev = dev->dev_private; > int r, acpi_status; > > - rdev = kzalloc(sizeof(struct radeon_device), GFP_KERNEL); > - if (rdev == NULL) { > - return -ENOMEM; > - } > - dev->dev_private = (void *)rdev; > - > #ifdef __alpha__ > rdev->hose = pdev->sysdata; > #endif -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v3 6/6] drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc 2024-07-03 8:47 ` Thomas Zimmermann @ 2024-07-08 20:04 ` Alex Deucher 0 siblings, 0 replies; 29+ messages in thread From: Alex Deucher @ 2024-07-08 20:04 UTC (permalink / raw) To: Thomas Zimmermann Cc: Wu Hoi Pok, Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Applied the series. Thanks! Alex On Wed, Jul 3, 2024 at 4:55 AM Thomas Zimmermann <tzimmermann@suse.de> wrote: > > > > Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > > "drm_dev_alloc" is deprecated, in order to use the newer "devm_drm_dev_alloc", > > the "drm_device" is stored inside "radeon_device", by changing "rdev_to_drm(rdev)" > > other functions still gain access to the member "drm_device". Also, "devm_drm_dev_alloc" > > is now allocating "radeon_device", allocation inside "radeon_driver_load_kms" has to be > > removed. > > > > In "radeon_device_init", it originally assigned "rdev->dev" etc. However it is already > > done right after "devm_drm_dev_alloc" as you can see down below. It is better remove them. > > > > Signed-off-by: Wu Hoi Pok <wuhoipok@gmail.com> > > Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> > Tested-by: Thomas Zimmermann <tzimmermann@suse.de> > > > > --- > > drivers/gpu/drm/radeon/radeon.h | 4 ++-- > > drivers/gpu/drm/radeon/radeon_device.c | 3 --- > > drivers/gpu/drm/radeon/radeon_drv.c | 12 +++++++++--- > > drivers/gpu/drm/radeon/radeon_kms.c | 8 +------- > > 4 files changed, 12 insertions(+), 15 deletions(-) > > > > diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h > > index ae35c102a487..fd8a4513025f 100644 > > --- a/drivers/gpu/drm/radeon/radeon.h > > +++ b/drivers/gpu/drm/radeon/radeon.h > > @@ -2297,7 +2297,7 @@ typedef void (*radeon_wreg_t)(struct radeon_device*, uint32_t, uint32_t); > > > > struct radeon_device { > > struct device *dev; > > - struct drm_device *ddev; > > + struct drm_device ddev; > > struct pci_dev *pdev; > > #ifdef __alpha__ > > struct pci_controller *hose; > > @@ -2478,7 +2478,7 @@ void cik_mm_wdoorbell(struct radeon_device *rdev, u32 index, u32 v); > > > > static inline struct drm_device *rdev_to_drm(struct radeon_device *rdev) > > { > > - return rdev->ddev; > > + return &rdev->ddev; > > } > > > > /* > > diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c > > index 32851632643d..554b236c2328 100644 > > --- a/drivers/gpu/drm/radeon/radeon_device.c > > +++ b/drivers/gpu/drm/radeon/radeon_device.c > > @@ -1285,9 +1285,6 @@ int radeon_device_init(struct radeon_device *rdev, > > bool runtime = false; > > > > rdev->shutdown = false; > > - rdev->dev = &pdev->dev; > > - rdev->ddev = ddev; > > - rdev->pdev = pdev; > > rdev->flags = flags; > > rdev->family = flags & RADEON_FAMILY_MASK; > > rdev->is_atom_bios = false; > > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > > index 7b8aa8406751..f36aa71c57c7 100644 > > --- a/drivers/gpu/drm/radeon/radeon_drv.c > > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > > @@ -260,6 +260,7 @@ static int radeon_pci_probe(struct pci_dev *pdev, > > { > > unsigned long flags = 0; > > struct drm_device *ddev; > > + struct radeon_device *rdev; > > int ret; > > > > if (!ent) > > @@ -300,9 +301,14 @@ static int radeon_pci_probe(struct pci_dev *pdev, > > if (ret) > > return ret; > > > > - ddev = drm_dev_alloc(&kms_driver, &pdev->dev); > > - if (IS_ERR(ddev)) > > - return PTR_ERR(ddev); > > + rdev = devm_drm_dev_alloc(&pdev->dev, &kms_driver, typeof(*rdev), ddev); > > + if (IS_ERR(rdev)) > > + return PTR_ERR(rdev); > > + > > + rdev->dev = &pdev->dev; > > + rdev->pdev = pdev; > > + ddev = rdev_to_drm(rdev); > > + ddev->dev_private = rdev; > > > > ret = pci_enable_device(pdev); > > if (ret) > > diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c > > index a16590c6247f..645e33bf7947 100644 > > --- a/drivers/gpu/drm/radeon/radeon_kms.c > > +++ b/drivers/gpu/drm/radeon/radeon_kms.c > > @@ -104,15 +104,9 @@ void radeon_driver_unload_kms(struct drm_device *dev) > > int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags) > > { > > struct pci_dev *pdev = to_pci_dev(dev->dev); > > - struct radeon_device *rdev; > > + struct radeon_device *rdev = dev->dev_private; > > int r, acpi_status; > > > > - rdev = kzalloc(sizeof(struct radeon_device), GFP_KERNEL); > > - if (rdev == NULL) { > > - return -ENOMEM; > > - } > > - dev->dev_private = (void *)rdev; > > - > > #ifdef __alpha__ > > rdev->hose = pdev->sysdata; > > #endif > > -- > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Frankenstrasse 146, 90461 Nuernberg, Germany > GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman > HRB 36809 (AG Nuernberg) > ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok ` (5 preceding siblings ...) 2024-06-30 16:59 ` [PATCH v3 6/6] drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc Wu Hoi Pok @ 2024-07-03 8:52 ` Thomas Zimmermann 2024-07-04 4:58 ` Hoi Pok Wu 6 siblings, 1 reply; 29+ messages in thread From: Thomas Zimmermann @ 2024-07-03 8:52 UTC (permalink / raw) To: Wu Hoi Pok Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Hi Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > .load and drm_dev_alloc are deprecated. These patch series aims to > remove them. > > v3: Both v1 and v2 sucks. v3 improves greatly on readability. Very nice, thank you. I tested the patches with Radeon hardware and did not find issues. AFAICT this can be merged as-is. I think it should go into the amd trees. Maybe Alex or Christian can pick it up. Thanks for sticking with it. Best regards Thomas > > Wu Hoi Pok (6): > drm/radeon: change variable name "dev" to "ddev" for consistency > drm/radeon: remove load callback from kms_driver > drm/radeon: use variable flags as parameter > drm/radeon: add helper rdev_to_drm(rdev) > drm/radeon: change rdev->ddev to rdev_to_drm(rdev) > drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc > > drivers/gpu/drm/radeon/atombios_encoders.c | 2 +- > drivers/gpu/drm/radeon/cik.c | 14 ++-- > drivers/gpu/drm/radeon/dce6_afmt.c | 2 +- > drivers/gpu/drm/radeon/evergreen.c | 12 ++-- > drivers/gpu/drm/radeon/ni.c | 2 +- > drivers/gpu/drm/radeon/r100.c | 24 +++---- > drivers/gpu/drm/radeon/r300.c | 6 +- > drivers/gpu/drm/radeon/r420.c | 6 +- > drivers/gpu/drm/radeon/r520.c | 2 +- > drivers/gpu/drm/radeon/r600.c | 12 ++-- > drivers/gpu/drm/radeon/r600_cs.c | 2 +- > drivers/gpu/drm/radeon/r600_dpm.c | 4 +- > drivers/gpu/drm/radeon/r600_hdmi.c | 2 +- > drivers/gpu/drm/radeon/radeon.h | 7 +- > drivers/gpu/drm/radeon/radeon_acpi.c | 10 +-- > drivers/gpu/drm/radeon/radeon_agp.c | 2 +- > drivers/gpu/drm/radeon/radeon_atombios.c | 2 +- > drivers/gpu/drm/radeon/radeon_audio.c | 4 +- > drivers/gpu/drm/radeon/radeon_combios.c | 12 ++-- > drivers/gpu/drm/radeon/radeon_device.c | 13 ++-- > drivers/gpu/drm/radeon/radeon_display.c | 74 +++++++++++----------- > drivers/gpu/drm/radeon/radeon_drv.c | 27 +++++--- > drivers/gpu/drm/radeon/radeon_fbdev.c | 26 ++++---- > drivers/gpu/drm/radeon/radeon_fence.c | 8 +-- > drivers/gpu/drm/radeon/radeon_gem.c | 2 +- > drivers/gpu/drm/radeon/radeon_i2c.c | 2 +- > drivers/gpu/drm/radeon/radeon_ib.c | 2 +- > drivers/gpu/drm/radeon/radeon_irq_kms.c | 12 ++-- > drivers/gpu/drm/radeon/radeon_kms.c | 8 +-- > drivers/gpu/drm/radeon/radeon_object.c | 2 +- > drivers/gpu/drm/radeon/radeon_pm.c | 20 +++--- > drivers/gpu/drm/radeon/radeon_ring.c | 2 +- > drivers/gpu/drm/radeon/radeon_ttm.c | 6 +- > drivers/gpu/drm/radeon/rs400.c | 6 +- > drivers/gpu/drm/radeon/rs600.c | 14 ++-- > drivers/gpu/drm/radeon/rs690.c | 2 +- > drivers/gpu/drm/radeon/rv515.c | 4 +- > drivers/gpu/drm/radeon/rv770.c | 2 +- > drivers/gpu/drm/radeon/si.c | 4 +- > 39 files changed, 184 insertions(+), 179 deletions(-) > -- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg) ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc 2024-07-03 8:52 ` [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Thomas Zimmermann @ 2024-07-04 4:58 ` Hoi Pok Wu 2024-07-04 13:02 ` Christian König 0 siblings, 1 reply; 29+ messages in thread From: Hoi Pok Wu @ 2024-07-04 4:58 UTC (permalink / raw) To: Thomas Zimmermann Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Thanks a lot for your help Thomas. On Wed, Jul 3, 2024 at 4:52 AM Thomas Zimmermann <tzimmermann@suse.de> wrote: > > Hi > > Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: > > .load and drm_dev_alloc are deprecated. These patch series aims to > > remove them. > > > > v3: Both v1 and v2 sucks. v3 improves greatly on readability. > > Very nice, thank you. I tested the patches with Radeon hardware and did > not find issues. AFAICT this can be merged as-is. I think it should go > into the amd trees. Maybe Alex or Christian can pick it up. > > Thanks for sticking with it. > > Best regards > Thomas > > > > > Wu Hoi Pok (6): > > drm/radeon: change variable name "dev" to "ddev" for consistency > > drm/radeon: remove load callback from kms_driver > > drm/radeon: use variable flags as parameter > > drm/radeon: add helper rdev_to_drm(rdev) > > drm/radeon: change rdev->ddev to rdev_to_drm(rdev) > > drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc > > > > drivers/gpu/drm/radeon/atombios_encoders.c | 2 +- > > drivers/gpu/drm/radeon/cik.c | 14 ++-- > > drivers/gpu/drm/radeon/dce6_afmt.c | 2 +- > > drivers/gpu/drm/radeon/evergreen.c | 12 ++-- > > drivers/gpu/drm/radeon/ni.c | 2 +- > > drivers/gpu/drm/radeon/r100.c | 24 +++---- > > drivers/gpu/drm/radeon/r300.c | 6 +- > > drivers/gpu/drm/radeon/r420.c | 6 +- > > drivers/gpu/drm/radeon/r520.c | 2 +- > > drivers/gpu/drm/radeon/r600.c | 12 ++-- > > drivers/gpu/drm/radeon/r600_cs.c | 2 +- > > drivers/gpu/drm/radeon/r600_dpm.c | 4 +- > > drivers/gpu/drm/radeon/r600_hdmi.c | 2 +- > > drivers/gpu/drm/radeon/radeon.h | 7 +- > > drivers/gpu/drm/radeon/radeon_acpi.c | 10 +-- > > drivers/gpu/drm/radeon/radeon_agp.c | 2 +- > > drivers/gpu/drm/radeon/radeon_atombios.c | 2 +- > > drivers/gpu/drm/radeon/radeon_audio.c | 4 +- > > drivers/gpu/drm/radeon/radeon_combios.c | 12 ++-- > > drivers/gpu/drm/radeon/radeon_device.c | 13 ++-- > > drivers/gpu/drm/radeon/radeon_display.c | 74 +++++++++++----------- > > drivers/gpu/drm/radeon/radeon_drv.c | 27 +++++--- > > drivers/gpu/drm/radeon/radeon_fbdev.c | 26 ++++---- > > drivers/gpu/drm/radeon/radeon_fence.c | 8 +-- > > drivers/gpu/drm/radeon/radeon_gem.c | 2 +- > > drivers/gpu/drm/radeon/radeon_i2c.c | 2 +- > > drivers/gpu/drm/radeon/radeon_ib.c | 2 +- > > drivers/gpu/drm/radeon/radeon_irq_kms.c | 12 ++-- > > drivers/gpu/drm/radeon/radeon_kms.c | 8 +-- > > drivers/gpu/drm/radeon/radeon_object.c | 2 +- > > drivers/gpu/drm/radeon/radeon_pm.c | 20 +++--- > > drivers/gpu/drm/radeon/radeon_ring.c | 2 +- > > drivers/gpu/drm/radeon/radeon_ttm.c | 6 +- > > drivers/gpu/drm/radeon/rs400.c | 6 +- > > drivers/gpu/drm/radeon/rs600.c | 14 ++-- > > drivers/gpu/drm/radeon/rs690.c | 2 +- > > drivers/gpu/drm/radeon/rv515.c | 4 +- > > drivers/gpu/drm/radeon/rv770.c | 2 +- > > drivers/gpu/drm/radeon/si.c | 4 +- > > 39 files changed, 184 insertions(+), 179 deletions(-) > > > > -- > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Frankenstrasse 146, 90461 Nuernberg, Germany > GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman > HRB 36809 (AG Nuernberg) > ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc 2024-07-04 4:58 ` Hoi Pok Wu @ 2024-07-04 13:02 ` Christian König 0 siblings, 0 replies; 29+ messages in thread From: Christian König @ 2024-07-04 13:02 UTC (permalink / raw) To: Hoi Pok Wu, Thomas Zimmermann Cc: Alex Deucher, Christian König, Pan, Xinhui, David Airlie, Daniel Vetter, amd-gfx, dri-devel, linux-kernel Am 04.07.24 um 06:58 schrieb Hoi Pok Wu: > Thanks a lot for your help Thomas. > > On Wed, Jul 3, 2024 at 4:52 AM Thomas Zimmermann <tzimmermann@suse.de> wrote: >> Hi >> >> Am 30.06.24 um 18:59 schrieb Wu Hoi Pok: >>> .load and drm_dev_alloc are deprecated. These patch series aims to >>> remove them. >>> >>> v3: Both v1 and v2 sucks. v3 improves greatly on readability. >> Very nice, thank you. I tested the patches with Radeon hardware and did >> not find issues. AFAICT this can be merged as-is. I think it should go >> into the amd trees. Maybe Alex or Christian can pick it up. >> >> Thanks for sticking with it. Nice work guys. Skimming over it it looks ok to me, but maybe Alex has some more notes. Regards, Christian. >> >> Best regards >> Thomas >> >>> Wu Hoi Pok (6): >>> drm/radeon: change variable name "dev" to "ddev" for consistency >>> drm/radeon: remove load callback from kms_driver >>> drm/radeon: use variable flags as parameter >>> drm/radeon: add helper rdev_to_drm(rdev) >>> drm/radeon: change rdev->ddev to rdev_to_drm(rdev) >>> drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc >>> >>> drivers/gpu/drm/radeon/atombios_encoders.c | 2 +- >>> drivers/gpu/drm/radeon/cik.c | 14 ++-- >>> drivers/gpu/drm/radeon/dce6_afmt.c | 2 +- >>> drivers/gpu/drm/radeon/evergreen.c | 12 ++-- >>> drivers/gpu/drm/radeon/ni.c | 2 +- >>> drivers/gpu/drm/radeon/r100.c | 24 +++---- >>> drivers/gpu/drm/radeon/r300.c | 6 +- >>> drivers/gpu/drm/radeon/r420.c | 6 +- >>> drivers/gpu/drm/radeon/r520.c | 2 +- >>> drivers/gpu/drm/radeon/r600.c | 12 ++-- >>> drivers/gpu/drm/radeon/r600_cs.c | 2 +- >>> drivers/gpu/drm/radeon/r600_dpm.c | 4 +- >>> drivers/gpu/drm/radeon/r600_hdmi.c | 2 +- >>> drivers/gpu/drm/radeon/radeon.h | 7 +- >>> drivers/gpu/drm/radeon/radeon_acpi.c | 10 +-- >>> drivers/gpu/drm/radeon/radeon_agp.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_atombios.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_audio.c | 4 +- >>> drivers/gpu/drm/radeon/radeon_combios.c | 12 ++-- >>> drivers/gpu/drm/radeon/radeon_device.c | 13 ++-- >>> drivers/gpu/drm/radeon/radeon_display.c | 74 +++++++++++----------- >>> drivers/gpu/drm/radeon/radeon_drv.c | 27 +++++--- >>> drivers/gpu/drm/radeon/radeon_fbdev.c | 26 ++++---- >>> drivers/gpu/drm/radeon/radeon_fence.c | 8 +-- >>> drivers/gpu/drm/radeon/radeon_gem.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_i2c.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_ib.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_irq_kms.c | 12 ++-- >>> drivers/gpu/drm/radeon/radeon_kms.c | 8 +-- >>> drivers/gpu/drm/radeon/radeon_object.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_pm.c | 20 +++--- >>> drivers/gpu/drm/radeon/radeon_ring.c | 2 +- >>> drivers/gpu/drm/radeon/radeon_ttm.c | 6 +- >>> drivers/gpu/drm/radeon/rs400.c | 6 +- >>> drivers/gpu/drm/radeon/rs600.c | 14 ++-- >>> drivers/gpu/drm/radeon/rs690.c | 2 +- >>> drivers/gpu/drm/radeon/rv515.c | 4 +- >>> drivers/gpu/drm/radeon/rv770.c | 2 +- >>> drivers/gpu/drm/radeon/si.c | 4 +- >>> 39 files changed, 184 insertions(+), 179 deletions(-) >>> >> -- >> -- >> Thomas Zimmermann >> Graphics Driver Developer >> SUSE Software Solutions Germany GmbH >> Frankenstrasse 146, 90461 Nuernberg, Germany >> GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman >> HRB 36809 (AG Nuernberg) >> ^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2024-10-07 12:44 UTC | newest] Thread overview: 29+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-30 16:59 [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Wu Hoi Pok 2024-06-30 16:59 ` [PATCH v3 1/6] drm/radeon: change variable name "dev" to "ddev" for consistency Wu Hoi Pok 2024-07-03 8:42 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 2/6] drm/radeon: remove load callback from kms_driver Wu Hoi Pok 2024-07-03 8:43 ` Thomas Zimmermann 2024-09-19 16:56 ` Arthur Marsh 2024-09-24 2:08 ` radeon ARUBA NULL pointer dereference Arthur Marsh 2024-09-24 12:20 ` Thomas Zimmermann 2024-09-24 12:42 ` Thomas Zimmermann 2024-09-24 14:22 ` Alex Deucher 2024-09-24 19:30 ` Ewan Milne 2024-09-25 18:13 ` Ewan Milne 2024-09-25 0:22 ` NULL pointer dereference after ib test on ring 7 succeeded Arthur Marsh 2024-09-25 8:02 ` Thomas Zimmermann 2024-09-30 15:25 ` NULL pointer dereference with kernel 6.12.0-rc1 and ARUBA GPU Arthur Marsh 2024-09-30 17:54 ` Christian König 2024-10-07 12:44 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 3/6] drm/radeon: use variable flags as parameter Wu Hoi Pok 2024-07-03 8:44 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 4/6] drm/radeon: add helper rdev_to_drm(rdev) Wu Hoi Pok 2024-07-03 8:44 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 5/6] drm/radeon: change rdev->ddev to rdev_to_drm(rdev) Wu Hoi Pok 2024-07-03 8:46 ` Thomas Zimmermann 2024-06-30 16:59 ` [PATCH v3 6/6] drm/radeon: change drm_dev_alloc to devm_drm_dev_alloc Wu Hoi Pok 2024-07-03 8:47 ` Thomas Zimmermann 2024-07-08 20:04 ` Alex Deucher 2024-07-03 8:52 ` [PATCH v3 0/6] drm/radeon: remove load callback & drm_dev_alloc Thomas Zimmermann 2024-07-04 4:58 ` Hoi Pok Wu 2024-07-04 13:02 ` Christian König
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox