lkml.org 
[lkml]   [2016]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 032/128] radeon: Fix VCE IB test on Big-Endian systems
    Date
    3.16.7-ckt23 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Oded Gabbay <oded.gabbay@gmail.com>

    commit 361c32d39087e7caa99e629c0d7fb00643cb2190 upstream.

    This patch makes the VCE IB test pass on Big-Endian systems. It converts
    to little-endian the contents of the VCE message.

    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [ luis: backported to 3.16: adjusted context ]
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    drivers/gpu/drm/radeon/radeon_vce.c | 68 ++++++++++++++++++-------------------
    1 file changed, 34 insertions(+), 34 deletions(-)

    diff --git a/drivers/gpu/drm/radeon/radeon_vce.c b/drivers/gpu/drm/radeon/radeon_vce.c
    index 252868f1bcda..1405251af5fb 100644
    --- a/drivers/gpu/drm/radeon/radeon_vce.c
    +++ b/drivers/gpu/drm/radeon/radeon_vce.c
    @@ -342,31 +342,31 @@ int radeon_vce_get_create_msg(struct radeon_device *rdev, int ring,

    /* stitch together an VCE create msg */
    ib.length_dw = 0;
    - ib.ptr[ib.length_dw++] = 0x0000000c; /* len */
    - ib.ptr[ib.length_dw++] = 0x00000001; /* session cmd */
    - ib.ptr[ib.length_dw++] = handle;
    -
    - ib.ptr[ib.length_dw++] = 0x00000030; /* len */
    - ib.ptr[ib.length_dw++] = 0x01000001; /* create cmd */
    - ib.ptr[ib.length_dw++] = 0x00000000;
    - ib.ptr[ib.length_dw++] = 0x00000042;
    - ib.ptr[ib.length_dw++] = 0x0000000a;
    - ib.ptr[ib.length_dw++] = 0x00000001;
    - ib.ptr[ib.length_dw++] = 0x00000080;
    - ib.ptr[ib.length_dw++] = 0x00000060;
    - ib.ptr[ib.length_dw++] = 0x00000100;
    - ib.ptr[ib.length_dw++] = 0x00000100;
    - ib.ptr[ib.length_dw++] = 0x0000000c;
    - ib.ptr[ib.length_dw++] = 0x00000000;
    -
    - ib.ptr[ib.length_dw++] = 0x00000014; /* len */
    - ib.ptr[ib.length_dw++] = 0x05000005; /* feedback buffer */
    - ib.ptr[ib.length_dw++] = upper_32_bits(dummy);
    - ib.ptr[ib.length_dw++] = dummy;
    - ib.ptr[ib.length_dw++] = 0x00000001;
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000c); /* len */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001); /* session cmd */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(handle);
    +
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000030); /* len */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x01000001); /* create cmd */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000000);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000042);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000a);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000080);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000060);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000100);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000100);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000c);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000000);
    +
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000014); /* len */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x05000005); /* feedback buffer */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(upper_32_bits(dummy));
    + ib.ptr[ib.length_dw++] = cpu_to_le32(dummy);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001);

    for (i = ib.length_dw; i < ib_size_dw; ++i)
    - ib.ptr[i] = 0x0;
    + ib.ptr[i] = cpu_to_le32(0x0);

    r = radeon_ib_schedule(rdev, &ib, NULL);
    if (r) {
    @@ -409,21 +409,21 @@ int radeon_vce_get_destroy_msg(struct radeon_device *rdev, int ring,

    /* stitch together an VCE destroy msg */
    ib.length_dw = 0;
    - ib.ptr[ib.length_dw++] = 0x0000000c; /* len */
    - ib.ptr[ib.length_dw++] = 0x00000001; /* session cmd */
    - ib.ptr[ib.length_dw++] = handle;
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x0000000c); /* len */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001); /* session cmd */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(handle);

    - ib.ptr[ib.length_dw++] = 0x00000014; /* len */
    - ib.ptr[ib.length_dw++] = 0x05000005; /* feedback buffer */
    - ib.ptr[ib.length_dw++] = upper_32_bits(dummy);
    - ib.ptr[ib.length_dw++] = dummy;
    - ib.ptr[ib.length_dw++] = 0x00000001;
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000014); /* len */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x05000005); /* feedback buffer */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(upper_32_bits(dummy));
    + ib.ptr[ib.length_dw++] = cpu_to_le32(dummy);
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000001);

    - ib.ptr[ib.length_dw++] = 0x00000008; /* len */
    - ib.ptr[ib.length_dw++] = 0x02000001; /* destroy cmd */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x00000008); /* len */
    + ib.ptr[ib.length_dw++] = cpu_to_le32(0x02000001); /* destroy cmd */

    for (i = ib.length_dw; i < ib_size_dw; ++i)
    - ib.ptr[i] = 0x0;
    + ib.ptr[i] = cpu_to_le32(0x0);

    r = radeon_ib_schedule(rdev, &ib, NULL);
    if (r) {
    \
     
     \ /
      Last update: 2016-01-25 00:21    [W:4.069 / U:1.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site