Am 09.11.2017 um 15:37 schrieb Piotr Redlewski: > On Thu, Nov 09, 2017 at 09:42:57AM +0100, Christian König wrote: >> Am 09.11.2017 um 00:54 schrieb Alex Deucher: >>> On Wed, Nov 8, 2017 at 5:38 PM, Piotr Redlewski <predlewski at gmail.com> wrote: >>>> Hi, >>>> >>>> Following series implements UVD support for SI in amdgpu driver. Code is based >>>> on CIK's UVD support in amdgpu and SI's UVD support in radeon drivers. To work, >>>> it requires tahiti uvd firmware with added header - I've created simple script >>>> to produce exactly this, so if anyone is interested it can be found here: >>>> https://gist.github.com/anonymous/6d974a970340f7f64b6fcc4f95267e43 >>>> >>>> Code is based on amd-staging-drm-next branch in Alex's tree. After applying >>>> these patches, uvd boots up and seems to work ok. I've tested it with vdpauinfo >>>> and mpv. >>>> >>>> Some comments/issues for the patches: >>>> 1. To make uvd work, I had to bring back fb location programming. Using location >>>> programmed by vbios, vram location is not available for uvd mc (at least on my >>>> machine) due to too wide address. Starting address is 40-bit long for fb, but >>>> uvd mc supports only 32-bits (judging by comments in amdgpu code and actual code >>>> in radeon driver) >>> Something else must be going on. The vram location is irrelevant with >>> respect to the limitations of UVD. I think the limitations with UVD >>> are more to do with the location of the active buffers relative to >>> each other rather than the absolute location of some aperture in the >>> GPU's address space. CI has the same limitation as I recall so there >>> is probably a bug somewhere. Windows has used the fb location as set >>> by the vbios since evergreen, so it definitely should work. >>> >>>> 2. I don't know why, but I couldn't get the uvd to boot without setting uvd mc >>>> offsets before starting other engines. Because of that I set it in .sw_init >>>> function. In my opinion this should be fixed as it generally doesn't follow >>>> amdgpu driver architecture (hardware setup during software setup stage) and >>>> probably will break suspending and resume (I didn't test it). As I mentioned, >>>> I couldn't figure out why this is happening, so I count on help with finding fix >>>> for this. >> It's just that your initialization order is incorrect. >> >> Try to add the UVD block a bit earlier (before the PP lib block I think) in >> si_set_ip_blocks. > Unfortunately it looks that's not it. I've tried to move up the UVD block in > the blocks' list, and no matter where it is put it won't boot without > configuring UVD mc in the software init phase. Moreover, even with UVD mc > initialization in the software init, UVD won't boot when placed before gfx > block. I don't know whether this means anything. > > Any other ideas? Yeah, I see this won't work without further modifications. Need to discuss internally how we want to fix this. Going to leave you a note when I know more, Christian. > > Regards, > Piotr > >> Regards, >> Christian. >> >>>> 3. I found some redefinitions in include/asic_reg/uvd/uvd_4_0_sh_mask.h. I guess >>>> this file is generated, so fix should be made wherever it is generated from. For >>>> now I removed offending lines just to silence the compiler warnings. >>>> 4. I'm not sure whether I choose the right version for the uvd. Existing code in >>>> si.c suggested that it should be 3.1, however I went with the 4.0, because for >>>> this version there are available new style headers. >>> I think the regs are pretty much the same between 3.x and 4.x so it >>> should be fine. >>> >>> Alex >>> >>> >>>> Regards, >>>> Piotr >>>> >>>> Piotr Redlewski (7): >>>> drm/amdgpu: remove duplicated definitions of some of the SI registers >>>> drm/amdgpu/uvd4: fix some register's mask and shift definitions >>>> drm/amdgpu/gmc6: don't use vram location programmed by the vbios >>>> drm/amdgpu/uvd4: add early init stage functions for uvd 4.0 >>>> drm/amdgpu/uvd4: add sw init and fini stages' functions for uvd 4.0 >>>> drm/amdgpu/uvd4: add hardware specific functions for uvd 4.0 >>>> drm/amdgpu: enable UVD for SI >>>> >>>> drivers/gpu/drm/amd/amdgpu/Makefile | 3 +- >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 6 + >>>> drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 14 + >>>> drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 114 ++- >>>> drivers/gpu/drm/amd/amdgpu/dce_v6_0.h | 5 + >>>> drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 7 - >>>> drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 40 +- >>>> drivers/gpu/drm/amd/amdgpu/si.c | 256 ++++++- >>>> drivers/gpu/drm/amd/amdgpu/si_ih.c | 3 + >>>> drivers/gpu/drm/amd/amdgpu/sid.h | 52 +- >>>> drivers/gpu/drm/amd/amdgpu/uvd_v4_0.c | 810 +++++++++++++++++++++ >>>> drivers/gpu/drm/amd/amdgpu/uvd_v4_0.h | 29 + >>>> .../drm/amd/include/asic_reg/uvd/uvd_4_0_sh_mask.h | 2 - >>>> 13 files changed, 1273 insertions(+), 68 deletions(-) >>>> create mode 100644 drivers/gpu/drm/amd/amdgpu/uvd_v4_0.c >>>> create mode 100644 drivers/gpu/drm/amd/amdgpu/uvd_v4_0.h >>>> >>>> -- >>>> 2.15.0 >>>> >>>> _______________________________________________ >>>> amd-gfx mailing list >>>> amd-gfx at lists.freedesktop.org >>>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx >>> _______________________________________________ >>> amd-gfx mailing list >>> amd-gfx at lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx >> >> _______________________________________________ >> amd-gfx mailing list >> amd-gfx at lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/amd-gfx