From patchwork Sat Mar 17 15:28:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 887312 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="c2IP2BN1"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 403R8r6dlnz9sT1 for ; Sun, 18 Mar 2018 02:30:04 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752692AbeCQP3t (ORCPT ); Sat, 17 Mar 2018 11:29:49 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:44203 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752662AbeCQP2e (ORCPT ); Sat, 17 Mar 2018 11:28:34 -0400 Received: by mail-lf0-f68.google.com with SMTP id g203-v6so5033467lfg.11; Sat, 17 Mar 2018 08:28:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=Zag04GIuCD8rceL13jPvgnGk1DziElqYsz+jTted3y8=; b=c2IP2BN1ff+EI75Dlwb4rVsoTL37zxZ+sTCAFVqjGFnlpbblnYwkZ7jqebVMwaEhTm 967JO2xxb5hW/v7+Ggq1atSZFctVx8rkN4tHpyt8kt/4sdsTvl3ERp65VCH/T5r5cvOV lUUaNNnnqLrKZftYLHppNYFkj/VeRq/JqZfYqcHrvdM2Qitiv6UDVxuss7oMR7MVZlsy z505yArrImknJdIE4f+bosNq6DGAGowhEW0PWZIdd1KXYVKyteb7J35+L2Rjmc2bz4WW yhGnMp9w59gTYQIdhPRCJomZeg4032RG3Q/TgLFJQUN801JQdaxKPmM7Eq5pRq/k3tbP 1Gjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=Zag04GIuCD8rceL13jPvgnGk1DziElqYsz+jTted3y8=; b=o9iJoLi9b6AsK/UQ7lKh9XblPuX+qQa9Eq/r7hLkGgExbLECe+oD8a/94/Yn+k0Yb0 0gDheDJPFlTFAk5h6417rga5NJoCR1rtZw4DL4ka4vgSJektOu9M7VKYYtDDu1t5Wr+x MvBZZ2BcvY7xWh6TN1f0tr+tiYPZhBzR28vr6I+9X6e0kyHayq0kVYXFRAOQPCqBlNpw 1Oe/QhTqU9WCosbfLYJusPYczEqko5DTiImDjui6nWoXwuBRwXNm0OYFqIoG5JrbWBOS F7wkI9KLGoXAdCGDHBWyN9RKomFoXE/xQ2B4ylhtXFpUI+UgzT+Pn4Gxg8P/pRm5dtz1 1AJg== X-Gm-Message-State: AElRT7EAoIPtnrAxnx+MPyCSYEhUOMNQAivmbtFohR3hqhX38wopyJDS WC9A0fO4NHUZkFb1qTMdmDA= X-Google-Smtp-Source: AG47ELsxZog7nc+oj9l0zJwvEf6PsBxOwUQd4U+cpespNubF15J5foN2O4BWUqiCxQNTgw7WsmKcvQ== X-Received: by 10.46.144.208 with SMTP id o16mr3893594ljg.107.1521300512870; Sat, 17 Mar 2018 08:28:32 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-55-234.pppoe.spdop.ru. [109.252.55.234]) by smtp.gmail.com with ESMTPSA id a142-v6sm2388276lfb.11.2018.03.17.08.28.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Mar 2018 08:28:32 -0700 (PDT) From: Dmitry Osipenko To: Mauro Carvalho Chehab , Hans Verkuil Cc: Greg Kroah-Hartman , linux-media@vger.kernel.org, devel@driverdev.osuosl.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 1/5] media: staging: tegra-vde: Align bitstream size to 16K Date: Sat, 17 Mar 2018 18:28:11 +0300 Message-Id: <8b159c6ccf8ea2e052222ffc498cc9f782ac8d49.1521300358.git.digetx@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org I've noticed that decoding fails sometime if size of bitstream buffer isn't aligned to 16K, probably because HW fetches data from memory in a 16K granularity and if the last chunk of data isn't aligned, HW reads garbage data beyond the dmabuf and tries to parse it. Signed-off-by: Dmitry Osipenko --- drivers/staging/media/tegra-vde/tegra-vde.c | 40 ++++++++++++----------------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/drivers/staging/media/tegra-vde/tegra-vde.c b/drivers/staging/media/tegra-vde/tegra-vde.c index c47659e96089..c2ff2071b23c 100644 --- a/drivers/staging/media/tegra-vde/tegra-vde.c +++ b/drivers/staging/media/tegra-vde/tegra-vde.c @@ -440,7 +440,7 @@ static int tegra_vde_setup_hw_context(struct tegra_vde *vde, VDE_WR(value, vde->sxe + 0x4C); value = 0x03800000; - value |= min_t(size_t, bitstream_data_size, SZ_1M); + value |= bitstream_data_size & GENMASK(19, 15); VDE_WR(value, vde->sxe + 0x68); @@ -522,7 +522,8 @@ static void tegra_vde_detach_and_put_dmabuf(struct dma_buf_attachment *a, static int tegra_vde_attach_dmabuf(struct device *dev, int fd, unsigned long offset, - unsigned int min_size, + size_t min_size, + size_t align_size, struct dma_buf_attachment **a, dma_addr_t *addr, struct sg_table **s, @@ -540,9 +541,16 @@ static int tegra_vde_attach_dmabuf(struct device *dev, return PTR_ERR(dmabuf); } + if (dmabuf->size & (align_size - 1)) { + dev_err(dev, "Unaligned dmabuf 0x%zX, " + "should be aligned to 0x%zX\n", + dmabuf->size, align_size); + return -EINVAL; + } + if ((u64)offset + min_size > dmabuf->size) { dev_err(dev, "Too small dmabuf size %zu @0x%lX, " - "should be at least %d\n", + "should be at least %zu\n", dmabuf->size, offset, min_size); return -EINVAL; } @@ -596,7 +604,7 @@ static int tegra_vde_attach_dmabufs_to_frame(struct device *dev, int err; err = tegra_vde_attach_dmabuf(dev, src->y_fd, - src->y_offset, csize * 4, + src->y_offset, csize * 4, SZ_256, &frame->y_dmabuf_attachment, &frame->y_addr, &frame->y_sgt, @@ -605,7 +613,7 @@ static int tegra_vde_attach_dmabufs_to_frame(struct device *dev, return err; err = tegra_vde_attach_dmabuf(dev, src->cb_fd, - src->cb_offset, csize, + src->cb_offset, csize, SZ_256, &frame->cb_dmabuf_attachment, &frame->cb_addr, &frame->cb_sgt, @@ -614,7 +622,7 @@ static int tegra_vde_attach_dmabufs_to_frame(struct device *dev, goto err_release_y; err = tegra_vde_attach_dmabuf(dev, src->cr_fd, - src->cr_offset, csize, + src->cr_offset, csize, SZ_256, &frame->cr_dmabuf_attachment, &frame->cr_addr, &frame->cr_sgt, @@ -628,7 +636,7 @@ static int tegra_vde_attach_dmabufs_to_frame(struct device *dev, } err = tegra_vde_attach_dmabuf(dev, src->aux_fd, - src->aux_offset, csize, + src->aux_offset, csize, SZ_256, &frame->aux_dmabuf_attachment, &frame->aux_addr, &frame->aux_sgt, @@ -677,21 +685,6 @@ static int tegra_vde_validate_frame(struct device *dev, return -EINVAL; } - if (frame->y_offset & 0xFF) { - dev_err(dev, "Bad y_offset 0x%X\n", frame->y_offset); - return -EINVAL; - } - - if (frame->cb_offset & 0xFF) { - dev_err(dev, "Bad cb_offset 0x%X\n", frame->cb_offset); - return -EINVAL; - } - - if (frame->cr_offset & 0xFF) { - dev_err(dev, "Bad cr_offset 0x%X\n", frame->cr_offset); - return -EINVAL; - } - return 0; } @@ -792,7 +785,8 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde, return ret; ret = tegra_vde_attach_dmabuf(dev, ctx.bitstream_data_fd, - ctx.bitstream_data_offset, 0, + ctx.bitstream_data_offset, + SZ_16K, SZ_16K, &bitstream_data_dmabuf_attachment, &bitstream_data_addr, &bitstream_sgt, From patchwork Sat Mar 17 15:28:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 887308 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="u998PTCJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 403R7M6SKsz9sTG for ; Sun, 18 Mar 2018 02:28:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753450AbeCQP2q (ORCPT ); Sat, 17 Mar 2018 11:28:46 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:34444 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752930AbeCQP2f (ORCPT ); Sat, 17 Mar 2018 11:28:35 -0400 Received: by mail-lf0-f65.google.com with SMTP id l191-v6so19513896lfe.1; Sat, 17 Mar 2018 08:28:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=4aBEW7xtCIBGXlySGOVt+9c4i6EPAuNug1VeEKlKFqU=; b=u998PTCJfz0PDMBBPQfel3JJzotA5J8fMrFrg7AlmX9087V6WiU1nHCeHXEcP1C2Xi 4m5XxUCX+yB779Ko4ajl2p0fEi372lVmCeAsV10hCyUjAChpxPS7G7vj990Cwipews43 oGwkQlg7Ma33xAqPV484as44KH1Rh20iXjAvLvsmxPr+0ZilTQzrZrOtxbwo0n/uvfk+ IO85H0tSTEwff8yLldLP22WA4wYdaHwTM5icQEB5JDLvExKSpKqDE79gRJKNzaiRVlMu OEE/O4rIyYA2FHkWlL1XlxfviHVKawGrwOgy7W59nKrw7OM/F1zi8nVi7qVpAwpNbOHm VdkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=4aBEW7xtCIBGXlySGOVt+9c4i6EPAuNug1VeEKlKFqU=; b=INySZmaybaDOUTQiS8rilwRBFNJMGbZUutJ9Vno5iQo/f0pRuZ3mGk35wc6520T2kl BWP68tx1wLOtDVOxLybFFTC+Jyr+07pgDH9qJL5Psay9RphSqZe/Q5M97ZWiwCTqNn7q 1joPxcws/uwWM+Sf1a3nJyLVND4UqQ5pnBvqho3UxahtG/UWGvBdxL6by/2+Jg60BwDe G24F2B0nspXkeOQYHPvrfBxLYQ4BkfvehlPiKixwcteAwHaPO8PqUNcwYVWnIYlywK6u GfpFJ7CAjEVpBEqGhceZgekpu+bsoxsrlcH8rkdlauePx6w6cXFPETFx0GPcb25v5apP mVFA== X-Gm-Message-State: AElRT7GXjyiXbg4OTIVJ6qisFpf4tFvNrGD+PFJXZxr7UpO+9OHy14Z0 lYBIcguV1ZirN8WFqZ+ZfXE= X-Google-Smtp-Source: AG47ELsglqxCLTDjalkRSP3ND7l9lu3J7fQ3g8s4QSJMrQp9N2LY/Fe2FO18eIeyasbEDdnG7AWUaQ== X-Received: by 10.46.122.15 with SMTP id v15mr4134462ljc.141.1521300514021; Sat, 17 Mar 2018 08:28:34 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-55-234.pppoe.spdop.ru. [109.252.55.234]) by smtp.gmail.com with ESMTPSA id a142-v6sm2388276lfb.11.2018.03.17.08.28.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Mar 2018 08:28:33 -0700 (PDT) From: Dmitry Osipenko To: Mauro Carvalho Chehab , Hans Verkuil Cc: Greg Kroah-Hartman , linux-media@vger.kernel.org, devel@driverdev.osuosl.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 2/5] media: staging: tegra-vde: Silence some of checkpatch warnings Date: Sat, 17 Mar 2018 18:28:12 +0300 Message-Id: <9ec5460f88ac716d84cc626aa9e8d0a3c2e6acf3.1521300358.git.digetx@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Make all strings single line to make them grep'able and add a comment to the memory barrier. Signed-off-by: Dmitry Osipenko --- drivers/staging/media/tegra-vde/tegra-vde.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/staging/media/tegra-vde/tegra-vde.c b/drivers/staging/media/tegra-vde/tegra-vde.c index c2ff2071b23c..14899c887d58 100644 --- a/drivers/staging/media/tegra-vde/tegra-vde.c +++ b/drivers/staging/media/tegra-vde/tegra-vde.c @@ -368,6 +368,11 @@ static int tegra_vde_setup_hw_context(struct tegra_vde *vde, tegra_vde_setup_iram_tables(vde, dpb_frames, ctx->dpb_frames_nb - 1, ctx->dpb_ref_frames_with_earlier_poc_nb); + + /* + * The IRAM mapping is write-combine, ensure that CPU buffers have + * been flushed at this point. + */ wmb(); VDE_WR(0x00000000, vde->bsev + 0x8C); @@ -542,15 +547,13 @@ static int tegra_vde_attach_dmabuf(struct device *dev, } if (dmabuf->size & (align_size - 1)) { - dev_err(dev, "Unaligned dmabuf 0x%zX, " - "should be aligned to 0x%zX\n", + dev_err(dev, "Unaligned dmabuf 0x%zX, should be aligned to 0x%zX\n", dmabuf->size, align_size); return -EINVAL; } if ((u64)offset + min_size > dmabuf->size) { - dev_err(dev, "Too small dmabuf size %zu @0x%lX, " - "should be at least %zu\n", + dev_err(dev, "Too small dmabuf size %zu @0x%lX, should be at least %zu\n", dmabuf->size, offset, min_size); return -EINVAL; } @@ -863,8 +866,7 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde, macroblocks_nb = readl_relaxed(vde->sxe + 0xC8) & 0x1FFF; read_bytes = bsev_ptr ? bsev_ptr - bitstream_data_addr : 0; - dev_err(dev, "Decoding failed: " - "read 0x%X bytes, %u macroblocks parsed\n", + dev_err(dev, "Decoding failed: read 0x%X bytes, %u macroblocks parsed\n", read_bytes, macroblocks_nb); ret = -EIO; From patchwork Sat Mar 17 15:28:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 887311 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="OSR2W6Ao"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 403R8M5hDyz9sT1 for ; Sun, 18 Mar 2018 02:29:39 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753494AbeCQP2p (ORCPT ); Sat, 17 Mar 2018 11:28:45 -0400 Received: from mail-lf0-f66.google.com ([209.85.215.66]:35149 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753450AbeCQP2h (ORCPT ); Sat, 17 Mar 2018 11:28:37 -0400 Received: by mail-lf0-f66.google.com with SMTP id t132-v6so19499001lfe.2; Sat, 17 Mar 2018 08:28:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=AkZNSAlYV93Ca06XITmDpu5IPSUfn+nNm5Os971vgjg=; b=OSR2W6Aoo7tW5HEY9//qiyEsEEvvUmi8GHj2JqL6IU0dphffUdozmyYxhCEffRCr07 9Dx15wCh6fKnYFELFAhcw//Zjdf9hW/pfPFZwQ0B5QqdP1cApYtmJ692AgK/ac/0OUY4 +knuZ6bnq6dG/dvCdMPIxdi3Pe9FzM00bbOn1P816dBaCq3Re+oM6ITQDKXzF/iJXF46 e8JhonucXGPT9R2HXfU3n0Q7ezmeaNW4rKgIUC03MSHbraIx8IcCZzVoRWTGfpx2KY6D xA2rq/io1xsxdyxFXvGPijlIXHqG74LODs+P3/EOvy3yWKSBCj6ki8tE9Ag29CjxY8+M ZOGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=AkZNSAlYV93Ca06XITmDpu5IPSUfn+nNm5Os971vgjg=; b=DpBnnDkLy+nmDX14CgSnTeE40IP5asllqjrbLwpwYEx1Qo2PDAuzAsm4/AzgKyHm3O GeLKgtAj+5CItONQxTDB5W5greaAFkNfqq51UKQ2rn4MEPzOzWHveEGmCsqUMBMQKyHo X/QI1MeBCx4meCEy1SEDnxI7gV0HZr05qOdq5Jf9Tsv8RS1xT0M5oXXudyh2gFFQJlaA ABPFjNMJ702nqEkAzcgsjxH7PdQpWNG6ePfeoUiwi8te21T0xrit0wPD2SrqkbFP6jHZ tmgY+tKpu7Ov8BiZcsGAID/NKx2O5+jvACWjbCtHiE/QpMK8yyR7jqHH617NCChspF8+ p82A== X-Gm-Message-State: AElRT7HR0jCeY36NWvwPMLN87UA84egZiiWgppQKqHfZD//8ZR3CgZSe tDhPtngntgOOWWE+J83GBf0= X-Google-Smtp-Source: AG47ELtmZvQsgAKo690LOGHc5BdTiusUKqiXXsgUIm/BBJudq0IaUEjhY5ODE77TB8ApUnW6xHTgMw== X-Received: by 10.46.14.10 with SMTP id 10mr4130887ljo.64.1521300515054; Sat, 17 Mar 2018 08:28:35 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-55-234.pppoe.spdop.ru. [109.252.55.234]) by smtp.gmail.com with ESMTPSA id a142-v6sm2388276lfb.11.2018.03.17.08.28.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Mar 2018 08:28:34 -0700 (PDT) From: Dmitry Osipenko To: Mauro Carvalho Chehab , Hans Verkuil Cc: Greg Kroah-Hartman , linux-media@vger.kernel.org, devel@driverdev.osuosl.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 3/5] media: staging: tegra-vde: Correct minimum size of U/V planes Date: Sat, 17 Mar 2018 18:28:13 +0300 Message-Id: <419bd84d9a3e098d5796a6ce74be25be5381f544.1521300358.git.digetx@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Stride of U/V planes must be aligned to 16 bytes (2 macroblocks). This needs to be taken into account, otherwise it is possible to get a silent memory corruption if dmabuf size is less than the size of decoded video frame. Signed-off-by: Dmitry Osipenko --- drivers/staging/media/tegra-vde/tegra-vde.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/staging/media/tegra-vde/tegra-vde.c b/drivers/staging/media/tegra-vde/tegra-vde.c index 14899c887d58..94b4db55cdb5 100644 --- a/drivers/staging/media/tegra-vde/tegra-vde.c +++ b/drivers/staging/media/tegra-vde/tegra-vde.c @@ -602,12 +602,12 @@ static int tegra_vde_attach_dmabufs_to_frame(struct device *dev, struct tegra_vde_h264_frame *src, enum dma_data_direction dma_dir, bool baseline_profile, - size_t csize) + size_t lsize, size_t csize) { int err; err = tegra_vde_attach_dmabuf(dev, src->y_fd, - src->y_offset, csize * 4, SZ_256, + src->y_offset, lsize, SZ_256, &frame->y_dmabuf_attachment, &frame->y_addr, &frame->y_sgt, @@ -773,9 +773,11 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde, enum dma_data_direction dma_dir; dma_addr_t bitstream_data_addr; dma_addr_t bsev_ptr; + size_t lsize, csize; size_t bitstream_data_size; unsigned int macroblocks_nb; unsigned int read_bytes; + unsigned int cstride; unsigned int i; long timeout; int ret, err; @@ -814,6 +816,10 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde, goto free_dpb_frames; } + cstride = ALIGN(ctx.pic_width_in_mbs * 8, 16); + csize = cstride * ctx.pic_height_in_mbs * 8; + lsize = macroblocks_nb * 256; + for (i = 0; i < ctx.dpb_frames_nb; i++) { ret = tegra_vde_validate_frame(dev, &frames[i]); if (ret) @@ -827,7 +833,7 @@ static int tegra_vde_ioctl_decode_h264(struct tegra_vde *vde, ret = tegra_vde_attach_dmabufs_to_frame(dev, &dpb_frames[i], &frames[i], dma_dir, ctx.baseline_profile, - macroblocks_nb * 64); + lsize, csize); if (ret) goto release_dpb_frames; } From patchwork Sat Mar 17 15:28:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 887309 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="giXz0m7K"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 403R7V30x6z9sT1 for ; Sun, 18 Mar 2018 02:28:54 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753558AbeCQP2v (ORCPT ); Sat, 17 Mar 2018 11:28:51 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:38294 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752077AbeCQP2h (ORCPT ); Sat, 17 Mar 2018 11:28:37 -0400 Received: by mail-lf0-f68.google.com with SMTP id y2-v6so17369928lfc.5; Sat, 17 Mar 2018 08:28:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=JplHqWFz5Y+W6B/s/EtiGrIqwyu2SWnvnD56WUvvoJI=; b=giXz0m7KYOb1FLiDtvGkSqc9B3k4hRa2Mhval+7kvXQjz9mFyFrEg9908rD+PSSx2R 2JHEhQy/kbajUf6hWBnlKsl0ZQx34aJloUiaHIoGErYteFrrdIUFddj9YuzH/ckxHc46 VnubocJ9kYOzmiU6IZ0/iDROP8VCBzc9YyZ3GUTMDHNMU3x6tqWatdbbtREF5D3uUhQd yJ4qX6Z8FcERJ6/+ZvAfc06VAxhJ/qTWBqttFCQ23JZgObcwnoDMbhwKze2QP1O8YBtm jlTMor7V7W1o9Kp0f//4h78GrfCtXN9VXha3O3yDYfF4hcN7lLJF/pLgHIuR2YEvfPVr qoRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=JplHqWFz5Y+W6B/s/EtiGrIqwyu2SWnvnD56WUvvoJI=; b=Fp10PwriLVCkm1yGUiQThLEJyGsNyTeiIsszedSJQayE31hcRPfaVhlkmOwHLu/cuE m3APzrYrn0+z9ucVVJA2nkLsKus7E2sIeaQog2FRPkbmaP0Yxn9YN1NN7454nq2z/LRh eWsjx34Iy/9JF0t14aU7M9MtpSFlbAb0AOqtiE6t9+tQgUOlxQprD1rfQodH0dkoqd9Y eVnKdMxhY3aZ3cOgvg3cLt5CqTyAdV78mHAlHYANxqi8dpT0bmlHWsR65RevheKaGBLb 1jL3c8QyJtTjGItClRuD/HbCF23fgP4du7+03kGooDOuv1K+NzbO/k5oe+fmdMI7aZmE Clew== X-Gm-Message-State: AElRT7Gjltoyy7F0bcSTJ9qApN7TtG9KB9OZf+bG29C74xSluD2I5wgU rcG7u4lFkLdM2dP9vHgD8Zo= X-Google-Smtp-Source: AG47ELuI5m8c5kVydq39/kj4wxCZENU3x+eEKaw4n7E8pVNJ1ykdMbjy1UNIl37r40XTR6LY9uTOsQ== X-Received: by 10.46.124.8 with SMTP id x8mr3839760ljc.121.1521300516036; Sat, 17 Mar 2018 08:28:36 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-55-234.pppoe.spdop.ru. [109.252.55.234]) by smtp.gmail.com with ESMTPSA id a142-v6sm2388276lfb.11.2018.03.17.08.28.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Mar 2018 08:28:35 -0700 (PDT) From: Dmitry Osipenko To: Mauro Carvalho Chehab , Hans Verkuil Cc: Greg Kroah-Hartman , linux-media@vger.kernel.org, devel@driverdev.osuosl.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 4/5] media: staging: tegra-vde: Do not handle spurious interrupts Date: Sat, 17 Mar 2018 18:28:14 +0300 Message-Id: <8d1b583bde182ab79a18f43df83f87affda6b174.1521300358.git.digetx@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Do not handle interrupts if we haven't asked for them, potentially that could happen if HW wasn't programmed properly. Signed-off-by: Dmitry Osipenko --- drivers/staging/media/tegra-vde/tegra-vde.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/staging/media/tegra-vde/tegra-vde.c b/drivers/staging/media/tegra-vde/tegra-vde.c index 94b4db55cdb5..9e542c6288f1 100644 --- a/drivers/staging/media/tegra-vde/tegra-vde.c +++ b/drivers/staging/media/tegra-vde/tegra-vde.c @@ -935,6 +935,9 @@ static irqreturn_t tegra_vde_isr(int irq, void *data) { struct tegra_vde *vde = data; + if (completion_done(&vde->decode_completion)) + return IRQ_NONE; + tegra_vde_set_bits(vde, 0, vde->frameid + 0x208); complete(&vde->decode_completion); From patchwork Sat Mar 17 15:28:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 887310 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="W9hKxQK7"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 403R8956tfz9sT1 for ; Sun, 18 Mar 2018 02:29:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753530AbeCQP2r (ORCPT ); Sat, 17 Mar 2018 11:28:47 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:34449 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753464AbeCQP2j (ORCPT ); Sat, 17 Mar 2018 11:28:39 -0400 Received: by mail-lf0-f67.google.com with SMTP id l191-v6so19514003lfe.1; Sat, 17 Mar 2018 08:28:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=ALWzzZiBI5MG4y5fDcpGfEBhw/vuOKQvNXEBCv/+hfc=; b=W9hKxQK7UgyDAaQDy3uwJpyGKxn8x7nMHH/hLZsNPxyYWvPeu6wywpcChGxO8YKeUP iJh47j7/4PZ9L6nSOl/WB6oDtgd/7pCxtl4EZru+EgC4jd6hLUY4BVQCWIzOjrph6ZoO wumTOlI+nR1UQ4VO3LFPBvy4vXwgS8mMHP6cFcj6+QYTu/WYHRa9WbMp1bHLvpCXyEgT nETM5wK3vRhV7hbmJNHY+JI7v5aty/XwLNQR+Buq/vAHLAlRd3PeTdMUj/Ih1atcBx8K aAD0PyDeOIXbfJsgOHTTLDSEXBOd7wz2OsEEGs8xfOQiqMOPVw7dXsLNEUwdbmJE4xc7 tD3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=ALWzzZiBI5MG4y5fDcpGfEBhw/vuOKQvNXEBCv/+hfc=; b=tyEg9tG4IX9e7pUpavQ2xKFEPYeSIyfd5zTJy96CZigV/x+MFEs6Y8pGvj2dAkgffX OayD166Y6As/sU5TDbQFkpqx/F+LB2+AidFkRdrV+WCvugO6SD2rGMzQabLyOkqVjXFB erK7mNJl/vQqtVjDczdnbYtdaNXX5tBBtpZT1AI4vY2RQ8Il3ryhop2yOB/HID1iERgM 7Gkz+p8yC3MtlyBsk1moIWaET3ZBrBDkXV+mD2SuBogMtI24uMBF/oLVRuwRu/YkOdMK eiU+CdeKeYiDJzzM98wERICOjfcCAXFkPbglqLYxHWhgMJCe0eARQOabJuFWwNrmsa3O RhEA== X-Gm-Message-State: AElRT7HuOA+qMlXB7fzizcCvtblYYSGpvPd4wVKkFjnANtdyVJN07k9a RAg3WUiTb0eLRY0BY1WMRo4= X-Google-Smtp-Source: AG47ELvrdYNipB7n1f3GgRpkPeD6qdsGItr6nq27pWMyjpX1Dra2aZrF4t97vShvkiEGu1+gfUy4Eg== X-Received: by 10.46.18.70 with SMTP id t67mr3820328lje.137.1521300516989; Sat, 17 Mar 2018 08:28:36 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-55-234.pppoe.spdop.ru. [109.252.55.234]) by smtp.gmail.com with ESMTPSA id a142-v6sm2388276lfb.11.2018.03.17.08.28.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 17 Mar 2018 08:28:36 -0700 (PDT) From: Dmitry Osipenko To: Mauro Carvalho Chehab , Hans Verkuil Cc: Greg Kroah-Hartman , linux-media@vger.kernel.org, devel@driverdev.osuosl.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 5/5] media: staging: tegra-vde: Correct included header Date: Sat, 17 Mar 2018 18:28:15 +0300 Message-Id: <7654606b88a5b6d74762ad9a4fe96266009dedac.1521300358.git.digetx@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: References: In-Reply-To: References: Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org This is Open Firmware driver, hence 'of_device.h' should be included instead of 'platform_device.h'. Right now OF headers happen to be included indirectly and this may break in the future, so let's correct the header. Signed-off-by: Dmitry Osipenko --- drivers/staging/media/tegra-vde/tegra-vde.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/media/tegra-vde/tegra-vde.c b/drivers/staging/media/tegra-vde/tegra-vde.c index 9e542c6288f1..90177a59b97c 100644 --- a/drivers/staging/media/tegra-vde/tegra-vde.c +++ b/drivers/staging/media/tegra-vde/tegra-vde.c @@ -16,7 +16,7 @@ #include #include #include -#include +#include #include #include #include