[PATCH] drm/amdgpu: move UVD/VCE and VCN structure out from union

Alex Deucher alexdeucher at gmail.com
Tue Nov 21 16:22:08 UTC 2017


On Tue, Nov 21, 2017 at 11:13 AM, Leo Liu <leo.liu at amd.com> wrote:
> Wth the current upstream Mesa, kernel will spin error and break when
> starting display manger at least on my Polaris10 card.
>
> This is because the query info from VCN enc from Mesa, and
> "adev->vcn.num_enc_rings" is not zero because of the union.

For some reason the patch doesn't seem to have come through properly
on the mailing list.

Acked-by: Alex Deucher <alexander.deucher at amd.com>

>
> [ 9066.794232] BUG: unable to handle kernel paging request at
> ffff99b6400001ec
> [ 9066.794293] IP: amdgpu_info_ioctl+0xee2/0x1070 [amdgpu]
> [ 9066.794295] PGD 44229067 P4D 44229067 PUD 0
> [ 9066.794300] Oops: 0000 [#1] SMP
> [ 9066.794302] Modules linked in: fuse amdgpu(OE) mfd_core chash ttm k10temp
> i2c_piix4
> [ 9066.794310] CPU: 3 PID: 24999 Comm: Xorg Tainted: G           OE
> 4.14.0-rc3+ #4
> [ 9066.794311] Hardware name: Gigabyte Technology Co., Ltd.
> GA-880GMA-UD2H/GA-880GMA-UD2H, BIOS F5 09/30/2010
> [ 9066.794313] task: ffff99b62a930040 task.stack: ffffadf280c60000
> [ 9066.794339] RIP: 0010:amdgpu_info_ioctl+0xee2/0x1070 [amdgpu]
> [ 9066.794340] RSP: 0018:ffffadf280c63b70 EFLAGS: 00010217
> [ 9066.794342] RAX: 0000000000000000 RBX: ffffadf280c63db0 RCX:
> 0000000000063c59
> [ 9066.794344] RDX: ffff99b6400001ec RSI: 00000000ffffffff RDI:
> 00000000ffffffff
> [ 9066.794345] RBP: ffffadf280c63d28 R08: 000000000000e200 R09:
> 0000000000000001
> [ 9066.794346] R10: 0000000000000000 R11: 0000000000000000 R12:
> ffff99b61e7b0000
> [ 9066.794348] R13: ffffffffc0127730 R14: 0000000000000020 R15:
> 00007ffd852f0410
> [ 9066.794350] FS:  00007f0265507a00(0000) GS:ffff99b63fcc0000(0000)
> knlGS:0000000000000000
> [ 9066.794351] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 9066.794352] CR2: ffff99b6400001ec CR3: 000000013763d000 CR4:
> 00000000000006e0
> [ 9066.794354] Call Trace:
> [ 9066.794359]  ? kernel_text_address+0x69/0xc0
> [ 9066.794362]  ? rcu_read_lock_sched_held+0x1d/0x60
> [ 9066.794365]  ? module_assert_mutex_or_preempt+0x13/0x40
> [ 9066.794366]  ? __module_address+0x27/0xf0
> [ 9066.794391]  ? amdgpu_drm_ioctl+0x32/0x80 [amdgpu]
> [ 9066.794395]  ? entry_SYSCALL_64_fastpath+0x1f/0xbe
> [ 9066.794396]  ? __kernel_text_address+0xd/0x40
> [ 9066.794399]  ? unwind_get_return_address+0x1a/0x30
> [ 9066.794402]  ? __save_stack_trace+0x61/0xd0
> [ 9066.794404]  ? entry_SYSCALL_64_fastpath+0x1f/0xbe
> [ 9066.794430]  ? amdgpu_debugfs_firmware_info+0x290/0x290 [amdgpu]
> [ 9066.794433]  drm_ioctl_kernel+0x64/0xb0
> [ 9066.794435]  drm_ioctl+0x30a/0x3d0
> [ 9066.794461]  ? amdgpu_debugfs_firmware_info+0x290/0x290 [amdgpu]
> [ 9066.794464]  ? trace_hardirqs_on_caller+0x11f/0x190
> [ 9066.794466]  ? trace_hardirqs_on+0xd/0x10
> [ 9066.794492]  amdgpu_drm_ioctl+0x47/0x80 [amdgpu]
> [ 9066.794495]  do_vfs_ioctl+0x8e/0x640
> [ 9066.794497]  ? trace_hardirqs_on+0xd/0x10
> [ 9066.794500]  ? security_file_ioctl+0x3e/0x60
>
>
> On 11/21/2017 09:28 AM, Leo Liu wrote:
>
> With the enablement of VCN Dec and Enc from user space, User space queries
> kernel for the IP information, if HW has UVD/VCE, the info comes from these
> IP blocks, but this could end up mis-interpret for VCN when they are in the
> union, ther other way same when HW with VCN block.
>
> Signed-off-by: Leo Liu <leo.liu at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h | 20 ++++++++------------
>  1 file changed, 8 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index 750336dce0e9..86f91789de6d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -1590,18 +1590,14 @@ struct amdgpu_device {
>   /* sdma */
>   struct amdgpu_sdma sdma;
>
> - union {
> - struct {
> - /* uvd */
> - struct amdgpu_uvd uvd;
> -
> - /* vce */
> - struct amdgpu_vce vce;
> - };
> -
> - /* vcn */
> - struct amdgpu_vcn vcn;
> - };
> + /* uvd */
> + struct amdgpu_uvd uvd;
> +
> + /* vce */
> + struct amdgpu_vce vce;
> +
> + /* vcn */
> + struct amdgpu_vcn vcn;
>
>   /* firmwares */
>   struct amdgpu_firmware firmware;
>
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>


More information about the amd-gfx mailing list