From patchwork Thu Apr 10 01:08:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jackson.lee" X-Patchwork-Id: 880763 Received: from SLXP216CU001.outbound.protection.outlook.com (mail-koreacentralazon11021134.outbound.protection.outlook.com [40.107.42.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E69EE13B58D; Thu, 10 Apr 2025 01:08:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.42.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247319; cv=fail; b=JPw20OogWCCYmcYMdi0EmWFLFgINsiD55sF/Sxjx8U40w5l3eA0jGJNpE3MC07O2F1gasKnHDLI7qtWEXl5xX1LnJNF97OHw/AssUkmBCORsS+TneBmg2o9qRYSf5G5JHWeT+rSNjJdsNhS7t6rWg/lAV0M2YWksUz+Qkj6gnCM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247319; c=relaxed/simple; bh=YDtb6hA3MkXwhkAWMKx8x2lVe+YNO3jEo3ipHfMtjmg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=gW68TLCP9jI63fCIXd9ko16TeaohGlLgiYYTsbVKeWNwPXk2fQdaj29UmKdnivcJQkg7H4GY/ehjiJj3CdWs5jLtNZuoBIeoS/wIfghYh57Un1LMSlIfu0p1ur+n2RpRYjSUDZNdOooGJudi18JuymJ13uGTzqPwIcJDBweiBIU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com; spf=fail smtp.mailfrom=chipsnmedia.com; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b=TMbHFNJM; arc=fail smtp.client-ip=40.107.42.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b="TMbHFNJM" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Kj73qlIbJSQ3WySnnnr347qEdDsk+YfPMSMRK7a6LiOZk/Xo0umVBLw1dilQHmi0KAxozY+RdpLXbR/ZOcS63+SzXJtIKBK8S/UNKdD6DL9HraD7YBlP7sEdXgHIFofyK2+65kgIC4BgxuNoEpORMTDLasLt43vJozWqgiI7EFneAKWf9pfiAs6fpAtm5LgsY1mbufyzvs7k/KsuVLvJaNPErj2yohhDvGcJXezeKu3VPwXG+dJg2ssXENPDtZ72+TyquRqQiEVS1g5G9O8b3bCPADmCbRqeCIZSpoVgcV9LPKvB2RIeWnjlh0zp+n0PATjJGEHWasahu0i18lMWTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=EVzA4eS89mDZTmuHVNKAWpZdSLSEAjHSO4ywkKF5RC0=; b=hdY8aav63hyYy+m4NrP0yf3T2y7cySJGMRG0ahaoBpI9O9R3B3kb+AxQE2etEWcW8wHCmBNLL+iEUccmWPyDbV6YUJtBd5WvRugKNAf+HLnrr5YvV/z0uH0xQQMjNS5Iqf34wD3xih7w4Lq2yat19Xyrc2iL+coXA7cR00z72NiZ68TX7dJrI0vuoJVro4N7+lykgq7tucLEG+/hun1YGbMcTTT70Brqg5hJ9ah30YV+pX7yo+KTDo5hkekXSD/p19qg6pUbeoVWBEgbzd94OBQzEN7h2uRlbJw73NqCxRswizD1iIpjNl1Foc8sIqsCowy1A2TwHnq62rjMGnxLBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=chipsnmedia.com; dmarc=pass action=none header.from=chipsnmedia.com; dkim=pass header.d=chipsnmedia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chipsnmedia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EVzA4eS89mDZTmuHVNKAWpZdSLSEAjHSO4ywkKF5RC0=; b=TMbHFNJMsqJJ0LZKkeI4kxDSLWbXVf0L0ICSUv0ifwqAZ3IHsAJ3NDDdAlkIlyV99NDq/IPbisQFIkOSoEoijwT47CQKZjkICyuR4FfumGXHhvYoDcbzWc9qBZMDm3EMFNHQ8FTqaHIHPFz9/fpBS493bBKAypHXRIbfc1c1Dz4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=chipsnmedia.com; Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) by SL2P216MB1403.KORP216.PROD.OUTLOOK.COM (2603:1096:101:32::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.34; Thu, 10 Apr 2025 01:08:31 +0000 Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386]) by PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386%7]) with mapi id 15.20.8632.021; Thu, 10 Apr 2025 01:08:31 +0000 From: "Jackson.lee" To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, sebastian.fricke@collabora.com, nicolas.dufresne@collabora.com, bob.beckett@collabora.com, dafna.hirschfeld@collabora.com Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, jackson.lee@chipsnmedia.com, lafley.kim@chipsnmedia.com, b-brnich@ti.com, hverkuil@xs4all.nl, nas.chung@chipsnmedia.com Subject: [PATCH v1 2/7] media: chips-media: wave5: Improve performance of decoder Date: Thu, 10 Apr 2025 10:08:16 +0900 Message-Id: <20250410010821.52-3-jackson.lee@chipsnmedia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250410010821.52-1-jackson.lee@chipsnmedia.com> References: <20250410010821.52-1-jackson.lee@chipsnmedia.com> X-ClientProxiedBy: SL2P216CA0151.KORP216.PROD.OUTLOOK.COM (2603:1096:101:35::6) To PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PS2P216MB1297:EE_|SL2P216MB1403:EE_ X-MS-Office365-Filtering-Correlation-Id: edfd94b9-df44-4c81-2e58-08dd77cc35c2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|7416014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: r3VNEji/EidI3E+91BGiMKSZhH82AEidp//dCtOGhM1uXGFjOqWAe0YSkiAI5n+YsqrFAE3zEndpskYkeLVOLOjJMAJY6dmv0e8sGJ+XxwwgQkofrNTng1NHymR/zgD6QMVUSbkTk+Gyun40QDyDHeY4HcBsM625QjTU6ybExU/zkQ6xI5hM+SZ/YG1QDYDJ+o/Ucd13FCXLdnWtudcdknIguZej82Q8CfCh0XZ5Bquu+FoL1rNE5LWCd81OgCVwgd8dwWtnujPVKGIEV7UCjUYBa3i2uibddEhBldQ9QbVIEuGTmAFztNF/5E4T+ACfmUYbKbUVSlb0PEoPLQnPXX6OfQwB2hFFR7xRwbQsOSvOXeivRZnLmah+ok09V7d7p4bpNuLjCI+2m4EuCmuiu7mP+XMWlmM2MUWJF6LQ2qe/v/lvKbj7YHbKheMhXWzqLdN++GN4fRVBpi4v0rOfV9Kq/hMU3PyprMhi+YWLrZ8Kixu5FAOqAh5mx0NLb5De4GxQgx2QeBqlFkuRmR0qaVvNpScxLu+m3RFe72XvL6lLAiC5cLUmclQZD527GXJu5sACFFXSUxgOZdEb6+2L/UFtFRmKBlljNv9YZ/S4ufwpHuwOzJWS+xiUqh7dLz9OjW1ERvBUCKizUuel5jj9OOBzNDggPvwMcVrZpNmQUS+FNoU6HfHdWvJdTIdDFGyoE8+ZkVlLbQNnFJ3bG6/jiPy6x0tPODMqUpJFgsuPsncB8Eg/0IixYEymXg6G+erosI4O2PgrMuFbB2QMuPBUX1za0Y7/4RglzmZYSK6/wJ+U8U66TmuAoWQiogYz0lmpyBM7/0vC+fEDXg8ZCa0GY0a8045y7G/YDbzsKny/0wflBtWsUkj+XRcftUjXssnBN7Lzt0JGpaUnx0ZvlpMvhBriz9XZLnJIc9Y/yrOB8oRxpK+Igs2/ijDzJDC0vJB+Ng/uw8c1ijKEjqo6Xjo1AB7pgTLN4HtNFjFvOENHaHLJk0FHJfU2INGRXPhrcXKo1UstENo73FuXX70GLKR+Hmy7QxPI1iV9cXorjUyjyKoCsCIG7/mqgbWMu7Kh9kIWtdUh+rxWq4d+CPkIQOrLP6125aFVFkYFVcHDuBb87+z8vGurDQxwg9cIhQf1rmPZMEPGYoKbvmz2P9CvVD3KQhwWKR8bt2K7ziMbxdNqxxLQEecl3cJ5vvQYxFoYWLnnNX8WX5OwBffoi3C/qipq+cJMPEDKNO7Ed/SZSHkZKCDRwz7KLlwhdBTt8qVl0aJFbYMqJBXJo1i8SaUtQiZufyL4RmUc4L8gmyKVjOQv+SkOsAT5CKyMimQb6dJmuO2S5ax0qvyVzahlxavIS42tLoh+3Bt+2nFhG7conecbnuPlfPDxjmpEH6Sh1Z2YxJ4MfOWcOpQIq+7K3wq8eEDCVkHBBtW9kkuPuRgvthoKA70LvaRl6DEmY+JODUbwZtlGV8exjqHIIgh3a6rmPDlMXw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PS2P216MB1297.KORP216.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(7416014)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gXMtorRcMCJs+adLpmidgpPwBaWFC9h9LDjOrhwT9o9BKOZYTbrAC5ffxxWS8bv+sT9y7+BTx3N1jnUlg9TdiL0wPJ5bm2glwo8HdP52M0ou7hQ2437HHxyEHO16t8rJnX45c6huSxkxtKu26iObsHm7AOafdiILm2QMC97UTzmSZMP2VIFUeuuPm88/tiKOtuIUIUW2CbBs/MQma5Z+tu7kGnDMqrZzgZxAJ8Z+kOSex5GJfWl1NyPHNnAExZkYdJMYd1r3oNVg0pQs4VL2TtM8Vq0cOFAgr955Ym8JOFNpR7aJAQG4LJqLNVtX8RRKBCcUpklvUdE0/7jmjSTnaexVX0ceJZNUgO++xUNy0hFLLK+VN16Xw2+WphSI/pvLV6l+g5hMWWF3GNmom/XoFgbK6NYF2i+KlTXz/OtUS9J1JqZ49e078UJ6p3Vbv3T4XsetUWVz8p2BdKsWOsWy70dpfz/bhRAyxsWcJH+Ke8/0E4fcwgLAtQi2PaZFdvv5xo2RGVatN0uzB8cK9JS8k7Q5qzHTXgVTJUrk7cx0O2jv2If813wspFiWnxLvAWlcaSfSL8rFv40QUxjZX5Z5nFhNxgDdNZCFbBDJkFJimYGqhhZr+rdAc0T/AwBtid1hfLKFBRcypsWco+0Cva2rTKnsCmIW3zlu+zzgmBNddz2mUxpgA/kNxjZhqSM0cnKz67m5eXSRo4G4rDwBlJ0n6fUx8/JJoThBIYrKFNyF3UcIp/4B4YiKzzIgx+yr386xRnGHmkDUCahmAFu3RfpaLoGvoqDG7aJosORJr7SnvdlnWCy5E0FzLqdGXCm46jQ4s55neupYNe3HJ7ZwIUrzdmDnxURkmDDiR1/nGFlxFqyQ3bnm0bpLz4Q9M0J2oFEnE6AbKGzaqFhSy8IRMKkF/MbGnpfGhafV0MK733qzL+WnD+p73BHTb6zRuvmz6BtKuC6IZxzxiP5dMwCweZOAhRKnfGVl9mZjlpcEJIw2aFZUnv9wZmKiRapXK/wIXC32IOL12e4GdO05++5Fuo2kD6a6OlwFp45Is2blk1OUUbIYk4/9EWyf6v5jflUAQiZs/fyyoPh8RYb7rFtH7mTFdTK6Uh3/J2cdM4kMuuCZ2Q8EbYrhplqVuI2n8x+/Hi8C8BCJD+diQBJWbIP6uFLejipsmjIAo6nsX/wmEqHGSmPt6kXIplfHHA7bsIIN0Gn3lOHsXmEKblddOucUJg3gFm9ytGtc9uZs3q8FMXVpMSc0EwPrm3huOFPpIrzYH0FgldO7tI4ZmNGcwDmDi9nddywLFrabQzGZPEVq+vxStJvlrppkGfDPudHDyRWcZJQCMMJQsnEBQ9SQML1GMYHw2nfGMlxYzFUauowOBypUr4lt9UBiKdihDMLe8rTlTBRIRUYPW1iteXS2skkmfVZ2ie/lncecb8GyBTulj0tOj+isFKGnNf0l0bolafR51frzAOVbEqQPmBF2EKwbH0jvjR0/DS/I/1WHK3J4jrGr2IWz29OlIeq0Kqs992G9kAihJbO+bmi6U6Fh/r4PfntP/dAJu3wLLWO4DvLALJGz2o40pu4mpcTxpQLCvJXMlbbtN4Dpyr209hi7x15pk2bwYg== X-OriginatorOrg: chipsnmedia.com X-MS-Exchange-CrossTenant-Network-Message-Id: edfd94b9-df44-4c81-2e58-08dd77cc35c2 X-MS-Exchange-CrossTenant-AuthSource: PS2P216MB1297.KORP216.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2025 01:08:31.7133 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4d70c8e9-142b-4389-b7f2-fa8a3c68c467 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: TokDn1sKlNiA+aH0ccmOE+36QX8BH52/dlzJg9gxWtmBwShwgccOnMbtW1OrAHgiACQZXwu/Q3YeODN96F4sspX6pOE3jPdLmb31xWG2WLg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SL2P216MB1403 From: Jackson Lee The current decoding method was to wait until each frame was decoded after feeding a bitstream. As a result, performance was low and Wave5 could not achieve max pixel processing rate. Update driver to use an asynchronous approach for decoding and feeding a bitstream in order to achieve full capabilities of the device. WAVE5 supports command-queueing to maximize performance by pipelining internal commands and by hiding wait cycle taken to receive a command from Host processor. Instead of waiting for each command to be executed before sending the next command, Host processor just places all the commands in the command-queue and goes on doing other things while the commands in the queue are processed by VPU. While Host processor handles its own tasks, it can receive VPU interrupt request (IRQ). In this case, host processor can simply exit interrupt service routine (ISR) without accessing to host interface to read the result of the command reported by VPU. After host processor completed its tasks, host processor can read the command result when host processor needs the reports and does response processing. To archive this goal, the device_run() calls v4l2_m2m_job_finish so that next command can be sent to VPU continuously, if there is any result, then irq is triggered and gets decoded frames and returns them to upper layer. Theses processes work independently each other without waiting a decoded frame. Signed-off-by: Jackson Lee Signed-off-by: Nas Chung --- .../chips-media/wave5/wave5-vpu-dec.c | 82 +++++++++++-------- .../platform/chips-media/wave5/wave5-vpuapi.c | 2 + .../platform/chips-media/wave5/wave5-vpuapi.h | 3 + 3 files changed, 55 insertions(+), 32 deletions(-) diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c index 32de43de1870..192556b91aaa 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c @@ -347,7 +347,6 @@ static void wave5_vpu_dec_finish_decode(struct vpu_instance *inst) struct vb2_v4l2_buffer *dec_buf = NULL; struct vb2_v4l2_buffer *disp_buf = NULL; struct vb2_queue *dst_vq = v4l2_m2m_get_dst_vq(m2m_ctx); - struct queue_status_info q_status; dev_dbg(inst->dev->dev, "%s: Fetch output info from firmware.", __func__); @@ -441,20 +440,6 @@ static void wave5_vpu_dec_finish_decode(struct vpu_instance *inst) } spin_unlock_irqrestore(&inst->state_spinlock, flags); } - - /* - * During a resolution change and while draining, the firmware may flush - * the reorder queue regardless of having a matching decoding operation - * pending. Only terminate the job if there are no more IRQ coming. - */ - wave5_vpu_dec_give_command(inst, DEC_GET_QUEUE_STATUS, &q_status); - if (q_status.report_queue_count == 0 && - (q_status.instance_queue_count == 0 || dec_info.sequence_changed)) { - dev_dbg(inst->dev->dev, "%s: finishing job.\n", __func__); - pm_runtime_mark_last_busy(inst->dev->dev); - pm_runtime_put_autosuspend(inst->dev->dev); - v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx); - } } static int wave5_vpu_dec_querycap(struct file *file, void *fh, struct v4l2_capability *cap) @@ -1146,8 +1131,8 @@ static int write_to_ringbuffer(struct vpu_instance *inst, void *buffer, size_t b static int fill_ringbuffer(struct vpu_instance *inst) { struct v4l2_m2m_ctx *m2m_ctx = inst->v4l2_fh.m2m_ctx; - struct v4l2_m2m_buffer *buf, *n; - int ret; + struct vpu_src_buffer *vpu_buf; + int ret = 0; if (m2m_ctx->last_src_buf) { struct vpu_src_buffer *vpu_buf = wave5_to_vpu_src_buf(m2m_ctx->last_src_buf); @@ -1158,9 +1143,8 @@ static int fill_ringbuffer(struct vpu_instance *inst) } } - v4l2_m2m_for_each_src_buf_safe(m2m_ctx, buf, n) { - struct vb2_v4l2_buffer *vbuf = &buf->vb; - struct vpu_src_buffer *vpu_buf = wave5_to_vpu_src_buf(vbuf); + list_for_each_entry(vpu_buf, &inst->avail_src_bufs, list) { + struct vb2_v4l2_buffer *vbuf = &vpu_buf->v4l2_m2m_buf.vb; struct vpu_buf *ring_buffer = &inst->bitstream_vbuf; size_t src_size = vb2_get_plane_payload(&vbuf->vb2_buf, 0); void *src_buf = vb2_plane_vaddr(&vbuf->vb2_buf, 0); @@ -1220,9 +1204,13 @@ static int fill_ringbuffer(struct vpu_instance *inst) dev_dbg(inst->dev->dev, "last src buffer written to the ring buffer\n"); break; } + + inst->queuing_num++; + list_del_init(&vpu_buf->list); + break; } - return 0; + return ret; } static void wave5_vpu_dec_buf_queue_src(struct vb2_buffer *vb) @@ -1236,6 +1224,11 @@ static void wave5_vpu_dec_buf_queue_src(struct vb2_buffer *vb) vbuf->sequence = inst->queued_src_buf_num++; v4l2_m2m_buf_queue(m2m_ctx, vbuf); + + INIT_LIST_HEAD(&vpu_buf->list); + mutex_lock(&inst->feed_lock); + list_add_tail(&vpu_buf->list, &inst->avail_src_bufs); + mutex_unlock(&inst->feed_lock); } static void wave5_vpu_dec_buf_queue_dst(struct vb2_buffer *vb) @@ -1385,6 +1378,13 @@ static int streamoff_output(struct vb2_queue *q) dma_addr_t new_rd_ptr; struct dec_output_info dec_info; unsigned int i; + struct vpu_src_buffer *vpu_buf, *tmp; + + inst->retry = false; + inst->queuing_num = 0; + + list_for_each_entry_safe(vpu_buf, tmp, &inst->avail_src_bufs, list) + list_del_init(&vpu_buf->list); for (i = 0; i < v4l2_m2m_num_dst_bufs_ready(m2m_ctx); i++) { ret = wave5_vpu_dec_set_disp_flag(inst, i); @@ -1580,10 +1580,19 @@ static void wave5_vpu_dec_device_run(void *priv) dev_dbg(inst->dev->dev, "%s: Fill the ring buffer with new bitstream data", __func__); pm_runtime_resume_and_get(inst->dev->dev); - ret = fill_ringbuffer(inst); - if (ret) { - dev_warn(inst->dev->dev, "Filling ring buffer failed\n"); - goto finish_job_and_return; + if (!inst->retry) { + mutex_lock(&inst->feed_lock); + ret = fill_ringbuffer(inst); + mutex_unlock(&inst->feed_lock); + if (ret < 0) { + dev_warn(inst->dev->dev, "Filling ring buffer failed\n"); + goto finish_job_and_return; + } else if (!inst->eos && + inst->queuing_num == 0 && + inst->state == VPU_INST_STATE_PIC_RUN) { + dev_dbg(inst->dev->dev, "%s: no bitstream for feeding, so skip ", __func__); + goto finish_job_and_return; + } } switch (inst->state) { @@ -1639,7 +1648,7 @@ static void wave5_vpu_dec_device_run(void *priv) } if (q_status.instance_queue_count) { - dev_dbg(inst->dev->dev, "%s: leave with active job", __func__); + v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx); return; } @@ -1650,14 +1659,21 @@ static void wave5_vpu_dec_device_run(void *priv) dev_err(inst->dev->dev, "Frame decoding on m2m context (%p), fail: %d (result: %d)\n", m2m_ctx, ret, fail_res); - break; + goto finish_job_and_return; + } + + if (fail_res == WAVE5_SYSERR_QUEUEING_FAIL) { + inst->retry = true; + } else { + inst->retry = false; + if (!inst->eos) + inst->queuing_num--; } - /* Return so that we leave this job active */ - dev_dbg(inst->dev->dev, "%s: leave with active job", __func__); - return; - default: - WARN(1, "Execution of a job in state %s illegal.\n", state_to_str(inst->state)); break; + default: + if (!v4l2_m2m_has_stopped(m2m_ctx)) + WARN(1, "Execution of a job in state %s illegal.\n", + state_to_str(inst->state)); } finish_job_and_return: @@ -1755,6 +1771,8 @@ static int wave5_vpu_open_dec(struct file *filp) inst->ops = &wave5_vpu_dec_inst_ops; spin_lock_init(&inst->state_spinlock); + mutex_init(&inst->feed_lock); + INIT_LIST_HEAD(&inst->avail_src_bufs); inst->codec_info = kzalloc(sizeof(*inst->codec_info), GFP_KERNEL); if (!inst->codec_info) diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpuapi.c b/drivers/media/platform/chips-media/wave5/wave5-vpuapi.c index e5e879a13e8b..68d86625538f 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpuapi.c +++ b/drivers/media/platform/chips-media/wave5/wave5-vpuapi.c @@ -255,6 +255,8 @@ int wave5_vpu_dec_close(struct vpu_instance *inst, u32 *fail_res) if (inst_count == 1) pm_runtime_dont_use_autosuspend(vpu_dev->dev); + mutex_destroy(&inst->feed_lock); + unlock_and_return: mutex_unlock(&vpu_dev->hw_lock); pm_runtime_put_sync(inst->dev->dev); diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h b/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h index f3c1ad6fb3be..fd0aef0bac4e 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h +++ b/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h @@ -818,6 +818,9 @@ struct vpu_instance { bool cbcr_interleave; bool nv21; bool eos; + bool retry; /* retry to feed bitstream if failure reason is WAVE5_SYSERR_QUEUEING_FAIL*/ + int queuing_num; /* check if there is input buffer or not */ + struct mutex feed_lock; /* lock for feeding bitstream buffers */ struct vpu_buf bitstream_vbuf; dma_addr_t last_rd_ptr; size_t remaining_consumed_bytes; From patchwork Thu Apr 10 01:08:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jackson.lee" X-Patchwork-Id: 880762 Received: from SLXP216CU001.outbound.protection.outlook.com (mail-koreacentralazon11021134.outbound.protection.outlook.com [40.107.42.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23B5918A6A7; Thu, 10 Apr 2025 01:08:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.42.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247321; cv=fail; b=l4kOnaBSEiybzM5J5H6qU41b1i/S/9t9Rn5uiz+XjBPeI3dCFGv50vzdtxk9yhleHR+2GAbuhj4Ge47S6adKPmJpz3tRLxuUhXh10yFAyOYnBfn9jaV0H+mOdpo/9yPuCwjqyXiNyQTgzvLQa6hILYuVIyu7mwalGTMR0S+sFa0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247321; c=relaxed/simple; bh=Qxc9dI/DEyTfUyhPwkX1MrMuk3yJEUtQBbD2rxSmLuE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=ZrNdKBdBvX2Pw1e2SqUjf6fQawMExL2scapgx49paKz6XO0C6j7bdg4V6RwuZqm8tJGiiF3bEZjbZmwk5D+ppqIiLx16AU/cg6HWDXHOqy1rmePCroBDEeyJBXbLcFIH2xCxS+tefOT9oUL+xOmQTfzwWPcC7h4oCyuJ146E4Qk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com; spf=fail smtp.mailfrom=chipsnmedia.com; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b=iDV1O5XL; arc=fail smtp.client-ip=40.107.42.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b="iDV1O5XL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z06wIFS1inon/ElC6aZxiQuNQ73ULr/cXiQSCKmi5UHIuIwJ7QRbsRKqaa4iP8xaWMPJVgmgsBKlUr/AopX6QJUtVWKMHFvuIY4SaC+TowjAv+OQPFAas7bpiFmrRMpQEQuqC2DLQemh0FF1sj25bAVY37cHSPTfZj51xU7B7sG5p4l14RQ1tva1ESIDnU8Y84Qta1L+53E1bSOC6uapwJ49NZ2CuyqP0NP4uo3cNyNz0EiBDHWZgwexXlPQIQ+NG78kgW1inlrDmI11Q8+Hfv+tApKhUoMfK9IP5UD+/RZWH55ePWE+Q8K74klP8hRpiBOoESN4jm/aaizxVs2FCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2bFaFlTMT54RK4We8EIMHVArqrJkHLC4pa/BqJdWrjo=; b=GlBdHpl1zlquDKhGFYle0EUq+NMsWD+BSAv2YYCYvjuYKDrbZpG2flF48PGc90PZE6a5ziARaOys3Q0dEKHKdkitX93y2k9bu184MKiMbLYl75xYZZQmSHq3etIp/p1UCR+FW+d1aI+/Ci4IHD+6XRLzolY8KE4i/MuQ2Vbejw5iELvPaedpvvaAHAFf7HlTsv6tgbengXwm0yNjF/IOtY9TK1kp8IJVm7G9otX9L8grX7/EZydqMzZ1LkX27vTxcFtXJ7F8mUorGRsDJGo+egwuuDiXtlFJz227cmnVgKOSaf5bRnZXlqMOQDRXSD6ZcQc5J3gixXGS6VrVelUDsg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=chipsnmedia.com; dmarc=pass action=none header.from=chipsnmedia.com; dkim=pass header.d=chipsnmedia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chipsnmedia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2bFaFlTMT54RK4We8EIMHVArqrJkHLC4pa/BqJdWrjo=; b=iDV1O5XL7r3AwCOnZz3PNlivUiSIq3sFM1C9eXcxoKU+9kFg6LvaCfH0diYawQPbv/8q+9ZDdXPftDlHo/qyw1KMwdTkMx1Az6i59Wi8jZgVtTGCb2Q3dPNj4y8hyr+Kn4va9g9Xl40xZYUdv1ZUDoO4lEmEHR412mdMZRMEliM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=chipsnmedia.com; Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) by SL2P216MB1403.KORP216.PROD.OUTLOOK.COM (2603:1096:101:32::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.34; Thu, 10 Apr 2025 01:08:32 +0000 Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386]) by PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386%7]) with mapi id 15.20.8632.021; Thu, 10 Apr 2025 01:08:32 +0000 From: "Jackson.lee" To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, sebastian.fricke@collabora.com, nicolas.dufresne@collabora.com, bob.beckett@collabora.com, dafna.hirschfeld@collabora.com Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, jackson.lee@chipsnmedia.com, lafley.kim@chipsnmedia.com, b-brnich@ti.com, hverkuil@xs4all.nl, nas.chung@chipsnmedia.com Subject: [PATCH v1 3/7] media: chips-media: wave5: Fix not to be closed Date: Thu, 10 Apr 2025 10:08:17 +0900 Message-Id: <20250410010821.52-4-jackson.lee@chipsnmedia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250410010821.52-1-jackson.lee@chipsnmedia.com> References: <20250410010821.52-1-jackson.lee@chipsnmedia.com> X-ClientProxiedBy: SL2P216CA0151.KORP216.PROD.OUTLOOK.COM (2603:1096:101:35::6) To PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PS2P216MB1297:EE_|SL2P216MB1403:EE_ X-MS-Office365-Filtering-Correlation-Id: 9202f667-e2c3-4b0b-7aff-08dd77cc3607 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|7416014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: uPe6tF0k4k2bbG7C6En3w3UejgEl2foBGKveOjX59F9WcID2MeBz8FpGeIPk2Tr64NIWrG/U6A2D/qP5GvKlZ4jG1VQz+UIVvF2/Y9wbEnHgw5Lc3cGjfqjF7CEAppcok7ywuL5HYUKjWrDYsa9dJM9u6V+5243rn3FGvrt73wNy/YEwiSYql2lfYWq5eNOHww8OP4bNpj12j7QrWiInBIpEw/lAQoN6cJYdqX+YUwBO+suBkZ752f80Ir/J9jDJFhHCjxjHumPjHbfAPspp4RYjEVmUVuteUBi9uOHnaUuuSXXD1d1AgIKxO3buWBg5MvAU6hsDZML4xKuh20KxHcLxgZo5/DtUc5Sn3x8uZjKdlXDIsE4f/a0li/TVwWbaifO+Ilhunqt0OsyEc7SGo/YNMnvWipB3S/WkptvdCj2xe/FjPZYNyDQBWweiUjUc8ACAWcs+GTWSrz1HDJvihRKKIyFOlfuQR5Jf1A95Qrb4de/uYQYoFRH4Os1agRS+i2ZsTErXnpWBbXAMWIZdqpGbqpWdUegZF4UK0rGMgWuqsPHt7VWiI/hybL2VIsjEu/kS8QeThnZTYUKGAU8g7kub15UiB6INoWnXqVd53uR0jUt4KaT+A7OXNuBBfnOrXXO9twnDaOZXyefHGmPgxOI1336CutOYAVjoHJIqb8oUiHXz0YJbB0rNj2GwvShqYU7iAm+cYphgEjIOMkbXHZq+9L3NZ8T7C7hQQOSaRQLJ4lrsiDB9a+h3q8SSzPfyB2uIYXLrPd/5BvfFCw2UDZXccmD9bp4VzWDsdebT3hg9wHUboV1sdgoCtcHR5bnW3Ip4tjOoEQDxAVoSPuTQ9qaoVsgjJbljzOyBmC6mzGdaG2BDL5yUHwub8nLYSOAJtyM+tJ6ZiPAkm/hWObsFwupomnTKPWFsZMwDbc2C31ugP26M58jv1RQ3kYOtpVykmwB2+qJtBiayWaiPmyRFY4Q+g38+eWLhytZnMQdEW9e0/JQbS5GwBhs64x3FLnbfZ802HpU9MFGhSMK/m4lryopYXv3tGdV3OU+rUJUGGLMYtK+EVQs8hCQn6T5KnNOlDEdA7SP3UGqlJ1n4yuzgF+dch0a5Ze9c+SRTijFJ0MFOEvDhAdql+50OYqFQgsAC8noSIvJl623sYgdN7BEi+SKpkdM6FgzF+rOPNK5YAzCk+cSO02SY/NOosHz9JvKQ/D5VrxMg1yFs/is6BWA+wO7wNvdExe7iacKmvM/SVes5UR+n8ebLZtjcHAjKULBVgmRwtYxKSF2ZMZW6OcgqgFwydeXov2MK+Och0sdpUZ1zINchoYpoRmsysk9+Dx9we4DiRaV8drG7eUYPW2EEhNmbKIOxdNXtiP+RHOvbgTudmTDk29kmi62G36hSuALJcON5pQruCpfZrUiVG7KFeq3bCN9fiQeQuoK5OZ08P6dJ9s/r2nj84TTN8/W2PgvQh3OPFwSlxflWXm60rGB6ug== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PS2P216MB1297.KORP216.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(7416014)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Xv3MjStSmeiIR80ZDSG0Fk8y+EPZRdwk0U/Z1QCI8aW7tAGvQEZ+MwjcAnJIe+E9Xfrf7PqXT65VuF9AnvvhS2vXWlGIAE9wTZ1PWIFQbRJ43IT3GSGj9doLoJTi2KFl7oTKcDaM1gqzQfT5GQL7JkELo6fyT5qq9Bhnu63e78MmRM8o5GBbdKcxtRrBVe2JOoVRa+nqS1g4pNNV5DIFZ/c/7M0UXd2UspHky/Tjx6LfCFNmlSdpIB8a83VUfeojCnpeaN8+FlnC+l1RRtV5S1kVREkWjoMCAzVngxsRo/jEId5jGF3jXZz1Y2/UEWhT7nucnyZope0TN+tHbKbo6fq3q65bzibpXWYlitlfrkC9X973roaSYJuPuTPIPKk1AMHtnM0YYoHGAZ6wOpoExCPvCLa7Vb10x348722m9zGUf9OjiEUUoBuKl3LiZHc2nCWBRchDzGq8tAh6gafvPSVF9XxblFY3LbCIwdflLMdUvghCH42enLmodqtd2ioQDAZ5W7APLFWxfLebB5tMe5hgC5FzmZiAtmXa31A6D0D36bPWFdusMYVK2pDgPkArrJSYlK1E1yw+oE73jeZ8WMoE/I3on1I+viOS2RJE28DCqc0j8hgrxdo9gtF5F49z9BSGT3luP9YQLY09/Z1kh3kpOW51j7Xr+Ha3ip0O+pMdRWQm0sdP2BuvM3bsJ1uYQ0g3ExKx899+sNGdNp6jxChabBeBX5mlOhRdPriy+AazH5+bPCVieRr1y0uuRFWta38XVvegmCw9SoQP7oe4mC+PRVb1EqVrEUhkK81AItnZPEO0KKPhuvzC2Iny1LaQf4idmWbozPGvrtVfAH85xtqXP9YkGpriOyHOgqQdWgyWAPAb79kv2jMqO35jdMKpmp5n9gi0xNWBAQuquBHxkhvmU5REwNLjWv6hwdxSOQatSrs6OxjqK2Bmkcew5t8Q5t86Wph00IEFWgEE1JVSHLBIyeU0glURwqSI3vqsoCQ7YcT2cRPadH+09DErrkDHLwsw2B3r/PkbUcrKZFr37ms92nDoZJm9dvfJRaD6EsdWJ8XZPYH5wZEc3BRcesZmTZ4A3uUSXjdrqt4g7jzUI3npr2nYY1CWWAPwEs6J6eqF6sD+zIr3V9pbSvQ3yhGUVP6CP/Z179wsHbeg+jo+fDQb7P26g1CURN3fNHytvm+wc0yslmf+NrPwUqRoUb3+J+oUZ1CECNHvfgU2TouhKheIk87o09vjesdKmAkxA5MpgTiNowa9HK4B7hN8Q5D3cTgbfMA9LrhFuJbHooJNQap+cdnKyLOZ7I9AUeD0k2mMjhkgdYysR4RS2Rdi22ukbauS0YU9BdxOYhN4JVAyADfg9lp7xCe6RxNXGnSR6Uz4GDG1sbXWjcYfP9JP/VIv4cC6smzVZAPRx6QR+NQgDvxx4SXXrAi+V4pbHaW78tMGQm3HtY24gUV/YHJJKIypaSQLPtke+t5zZowChAA2u65HJ8OGPhfuZ/cAOif2Uqh78Vj6aPgrFrN49LN+uXBhzb8X5ggTzZAIGfJiT3QHSBomroeVnLkEIc60Yfto0/X9XWd9xjSn+QhT4pHru3Ux99Drgcz7+7wMgC0kHFFZVg== X-OriginatorOrg: chipsnmedia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9202f667-e2c3-4b0b-7aff-08dd77cc3607 X-MS-Exchange-CrossTenant-AuthSource: PS2P216MB1297.KORP216.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2025 01:08:32.1439 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4d70c8e9-142b-4389-b7f2-fa8a3c68c467 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /sLlWqDyLVRFs7NTe2LdrLUC4IPSJOFCVTNEm3gGQOPm+n6nAe2HwctpfrCKsEphMGnmKq00EbbQzEAVrML/hNUyNpy/xCwrpIG9MuQ7ZAQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SL2P216MB1403 From: Jackson Lee The current code was to wait interrupt if queue or report queue is not 0, but since applying the performance patch, input and output is not any more synchronized. So even if queue count is not 0, an interrupt could not be triggered. Fixes: 15a4f7492acc ("media: chips-media: wave5: Improve performance of decoder") Signed-off-by: Jackson Lee Signed-off-by: Nas Chung --- drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 6 +++--- drivers/media/platform/chips-media/wave5/wave5-vpuconfig.h | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c index 192556b91aaa..e0f4b11ee464 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c @@ -1481,11 +1481,11 @@ static void wave5_vpu_dec_stop_streaming(struct vb2_queue *q) wave5_vpu_dec_give_command(inst, DEC_GET_QUEUE_STATUS, &q_status); - if (q_status.report_queue_count == 0) + if ((inst->state == VPU_INST_STATE_STOP || q_status.instance_queue_count == 0) && + q_status.report_queue_count == 0) break; - if (wave5_vpu_wait_interrupt(inst, VPU_DEC_TIMEOUT) < 0) - break; + wave5_vpu_wait_interrupt(inst, VPU_DEC_STOP_TIMEOUT); if (wave5_vpu_dec_get_output_info(inst, &dec_output_info)) dev_dbg(inst->dev->dev, "there is no output info\n"); diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpuconfig.h b/drivers/media/platform/chips-media/wave5/wave5-vpuconfig.h index 1ea9f5f31499..4ebd48d5550e 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpuconfig.h +++ b/drivers/media/platform/chips-media/wave5/wave5-vpuconfig.h @@ -59,6 +59,7 @@ // application specific configuration #define VPU_ENC_TIMEOUT 60000 #define VPU_DEC_TIMEOUT 60000 +#define VPU_DEC_STOP_TIMEOUT 10 // for WAVE encoder #define USE_SRC_PRP_AXI 0 From patchwork Thu Apr 10 01:08:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jackson.lee" X-Patchwork-Id: 880764 Received: from SLXP216CU001.outbound.protection.outlook.com (mail-koreacentralazon11021134.outbound.protection.outlook.com [40.107.42.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81D6E60B8A; Thu, 10 Apr 2025 01:08:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.42.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247317; cv=fail; b=l/GX57KckLiBP747o4v87ULX5GcWZvjYQhnpKR8H+On14zihDr5eJ3EayxK+4YH3VHZ6pTZj4C61f8eEaURgn+AafNYl9JPlrvkW+2ZKjvev4X40s+AGBCYc7ToMouGBecJ/cHmRMcV2zowOFi8cgMlx8xq2jgUD99cSURvqBco= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247317; c=relaxed/simple; bh=Ik9WKF13N07blOblz661ZgD6mKBNeoY/0oMx6ZlcT70=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=iMgxcHg/9tUsDGDgpoEwSH2KYw5UTl3IQyEQFX/Ya/8jsO8xL/gsGW3+n5xZfvmmgocNTMrEbhMbtUiPOr3nS8/tCIdLx+s9BoHfCVKcR4owd2lgQ67Y1yr895fPpiYYSd+rqqIYvsYJjcaLLR92j1jCCknDIeP7HusrLu7htzM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com; spf=fail smtp.mailfrom=chipsnmedia.com; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b=jazyJDni; arc=fail smtp.client-ip=40.107.42.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b="jazyJDni" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gLlw4L4y6qoR2cpwbtn3BcqOx9vqQZNVNDGuCAQGyBSCt0Wmdd1JvSUQxKxJiXm6FpFWc6CTe6T9h4ixTnv9w6Qy5TKrJbk73sWOP5K18bpW/FrNP+lEd0wvICEewg5PXVAkkihBOx11kz5uKaJrrBoaoZOH7na0pzVZuVXnALLdG+Onld49rFJvRWouEtX/6sYcO53Sf5PSCxhNxAhg3slPhA/PlJGysjfDlS1H4kfuLwTLd2ptdGBX6HS9TQ/z8jr3otxBESnQ4RBbe9SOOMzQK1jLLTzpCXC5qHnm2W9YpEa+t2weIuqmLPOnrepbr2UT+MjRt2uU/nDIL2xuaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/cmghElbMgWV0U/7xBb5cJpCTSBslUZ7KGLFXsxFmi8=; b=C6xPC6F2dod0tepHb1KL+et1TswrV3iRn+zwjZzquVZAKzW7j6sh3VqHOOF9l6VZiOHGBg9DNXMlVZfnBmFPrru6gxhLI6BMlr2StQAI8xDj177u9vZRHd7zVL10r3shGheJpyVZBCvGMmpCzLmxhP0Qwa934u4wWuQ76UdvCCXdWqMeC1Q6ejmJVW8E5Kg5yuM1GJCoKz74PucMl/xs6d9jVF7JxWwyME/IB0k+Peqt59PmVrwHfOou5gecmZL67/btY5lRgqS5LJtZ2VLgoF86U6YKk5gBaJzOrFrb8rRCvYVwONUAekcZGP8lngUpu5gMi4JdIPii//4kGUVsQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=chipsnmedia.com; dmarc=pass action=none header.from=chipsnmedia.com; dkim=pass header.d=chipsnmedia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chipsnmedia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/cmghElbMgWV0U/7xBb5cJpCTSBslUZ7KGLFXsxFmi8=; b=jazyJDnizbu+ciPaW/agIsiXiKoViykSWIGG47RgCtGfEyzWtJlgdnyNQ4yh1Syt5uPzm3x8eUPGviZmp0dU+vCnb9sT+9fkIAlmhCBeMQLPNFSXPm9ZcI9gv2dbZ0487d9CGRPK1MnhnR1NTwj+RBj00qevfHHr+sD8lDLBA30= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=chipsnmedia.com; Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) by SL2P216MB1403.KORP216.PROD.OUTLOOK.COM (2603:1096:101:32::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.34; Thu, 10 Apr 2025 01:08:32 +0000 Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386]) by PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386%7]) with mapi id 15.20.8632.021; Thu, 10 Apr 2025 01:08:32 +0000 From: "Jackson.lee" To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, sebastian.fricke@collabora.com, nicolas.dufresne@collabora.com, bob.beckett@collabora.com, dafna.hirschfeld@collabora.com Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, jackson.lee@chipsnmedia.com, lafley.kim@chipsnmedia.com, b-brnich@ti.com, hverkuil@xs4all.nl, nas.chung@chipsnmedia.com Subject: [PATCH v1 4/7] media: chips-media: wave5: Use spinlock whenever state is changed Date: Thu, 10 Apr 2025 10:08:18 +0900 Message-Id: <20250410010821.52-5-jackson.lee@chipsnmedia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250410010821.52-1-jackson.lee@chipsnmedia.com> References: <20250410010821.52-1-jackson.lee@chipsnmedia.com> X-ClientProxiedBy: SL2P216CA0151.KORP216.PROD.OUTLOOK.COM (2603:1096:101:35::6) To PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PS2P216MB1297:EE_|SL2P216MB1403:EE_ X-MS-Office365-Filtering-Correlation-Id: 04a26e81-a4d4-4a19-c5ce-08dd77cc364c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|7416014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 7XYKRDWsR/mvF/Mgc4nkPEnfOU1afMMF8LD04Y9zEl2qW7wXd6hzdCqAGNgpGGdHVNZ1JSiO4QDAerQ9WkSjo84NscOzMMxlevSANikiilmRFjLcu+YlgCyZd65e4KLWS66AxxX/dAT61IwSk1mDrCtZWl8rMtoUJDM/QFLAf9+IqXUlp4bCxoPmPhPo+lVwU8jlZrKxpJIF31wuCPLzP8QoSLcL/P3cP2pNq8P93MmN1GtHgsOAIu1UpiIDh1rn3J6ItNfrAsxCoy3G5t05GSTyRjFDBxpRRJiSv2EXkh3haMjwY9IQ4kd/58hb7hMUhfhO6jegJOCcIYmTACx79uJ1VjvEGCbtw31GcZkb7OySuL23eAR+LsjYtH+5xrec7JXPcgO9gv8vI+AoKTTzs32Mm8xY/ajmir+pFSp1waYU2Hrk98/Kkky+7v3a2GhJ60ejDleFhdkZ371/WS+3qDM3u7wZ3l2Dfgg/EzbCSdTWNnkOVdnV238nDnKkd9nCKVad1zw4iitxwzMA7W5VxnXTuDrxTCEK2ucdlc56F3PwAKuEwI4UoTRQutM8Iz1Rz5hJRJGKtu19O5xwk1FFDy3+kRUFzQlq4OJB7UbhLpj7piEE0dFVb2EenJ553P8JwUyd7URXCyM5tF7kArSvMsnS6heMRCslg5bQJgugBeD88amidf7zRyOYNYPWSkvw2QcxtzxKwKGclGrou7wdsBryrsldSuJRq60AFSDe2LrCpz2inP/mup/XmXdizB1Qx5j8yTByNs5uQpEXkj4wC22+ML9DC48YUjCveoXxzp/Z2lGW6cT3+FjlN8Jj2MyPzL6rgSr+lXVChFape0DR5LSm5Y8Cpw7E8yN5KhelU0KEMri/3IlC49bom6QWOcd7RU4kkgr5dB8zaZ0bHcKmI0AtkaKVYdG4OyBsKf4PMDHAqUqiAO2+RKV1/s6xcbUSv/gf6aZTTwLH/1uHtmCqAKx8hnUWggl+1KFfZ7ufsQWh1WV7ZK+GXwBRFqDwsBTgprflcNIbTrX232iDefQN4DySG1xzHDoRzINQm50NM1MsGNnI67KyHu+4ifIkM6740bbu3GdqcXZ2KzkPF1HfZo5SK7eIJk8baqYOcTgnk8UoBcXSwqZNMWLNIm2WZvRLwliaWY+5k5YVNm0vVDFA/mUDlBK4zYbY2NI7f3SC5bjMYePhOVPJahkcSrUraic0HsNioA7vM71imPTCQTOf4Mx0Tv0Cw9YHaqMLpN8ff04nruR4c9B3TAUVOzqd+6zKdkRvO4HJnU25YiH4DZX9A/g5tOLHuZunFeakVWnIZKdf+kbvhzomgq3jOaUnT7nSkcGtTCE+PzhHL0OY0lQhnonMdcGFDZwScS+kD7SJQvcmLeUvJq9BydIh65B29KHCE8DiDbD7G6mHy3a8SY2MCTamPI+/ZEA4oVJ72BhMnBfYjNlLGDrpYqvsoHUnpyttg79CV3tn5QWWtBFSq6Ilnw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PS2P216MB1297.KORP216.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(7416014)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zmqJoXpIPUojHwT6S03IiolF3mGyudZ+KWzpugVCS5SEnmTt+cvt7O9YWpzJ9q+ym2Rgsv41H9vfZG0OS+NRQsR3LTs2IAdWhGgDDv67zIVXAzKpPxkYw8o8Cu88FgFT8g1x0Zwgd41wJVpuXKVtpaWFkUPXqusjVvhrFPBYgX7wId7KqIinEwd0Zx20sIr6boXLdBLHUM9ztueqcnzmav+y+crv5RlqBtn97qhZw7wV2SQpqUnsbGcH2o4mpWZWCvGaFU2V/Pi6rTFzCWkO7j6T0HQUrXF+PncNpY+2QQcKPDgxy16oVAVhX+M7IVEHvCtQG3/ac1KTCIcnFMHw3kCfUXglxfOsrtFmrGWkrOhbNKci8KQRm/rNICtqvmQHnBUEXaEMXNiVgKscjNOFoYcfpyS7V0spSKzuZ38M0XqC5DXRD2h1BzQe0ugOGFT3u/UNvve0ybUw4ZXtwylpk6TvTrpG0HaxAgn3on3v6/BRuM4qwoQ1pBPRvBLNVKBjwG4u0muo6HskF61mR+hRrpGkRSSjUKp5//+whcMC9s+XK5zkWIels61kbB8YOlKZlZEC/ov6RxBdUKunLmDjdh3lA4/aZMsk8QiCRCp4bikbEz2vcKsgZhE1hBHFomRUZfzDFNTGQ9npWOTDzI4e0iAwROZHYi2M+66BD8HG0TSx5xf8jhnoXX3bEOhEIsZpVS1LmJ8zziDCkYkr687X8ATfDn2j5wSG6cUwQpBEU34WEpex3ctzPgQ/8vHONv0EjC6KxZCurx4C6JZib/sD3vcZu+8wCwyTAMhmFKyAA+UbyH7RmAsuBahqiOJXAmNso+QdXjoRQSWIOrRNClm+vAAPXcTXv92kDfzPqkCIkudIHhJugooum9EiaAlxR+/TATZ4C1E/4vHXZcksMpe1CdOrVaIMAAZt37L2fnsqxKJLAM33BDjeFSpbpRfoOeA8dCn2W6orFWNvo9RVgVLa9hKjB0jaKz+7GxSeLsEIhWs1nG1MHgvHJ6LlUcxFHZ5XbgyYsjrTo4TdYxHMmRnc4PRk4Ncqrng8b21RA7yILcU3ynirdSjSTNmmSx/oAXSbxGv3xqAmaGtQCOBAAcZu+CEG8YU0QvJMwIkxtfcyhjInybD6MTt0bwgDc4drZTautRwSrthSin3V1eCeGpVKT/wf9cXhmVKzkD3000g3Kn3cezL+48fOaKlaHz/Svs+HnnKxjg+JHdoq+YY+z6vp6c7Bn5KNzOHXw9uatCZiS6+sQHHXCQpT+rO0lw+cST+lehoUjKjW6xQYeCTmOa/N8pZBvtjfSoh8HAp3JLMd5WjwN+ye7FpUpJJ/WY1/ZMH0puiuzdIKE5WLQqDBNrPHvDyicl/93raMT2I/nMuNqghBlH1wsnOZo8dpFJGXxHVITakaq+v46lRgWvGxLwOw3X5qdHhCZ0HFfN1rtClbfdjPJIRDO9rizyqECVrCndAknIXxnlQfxZbF3DGM2I2ab0f4H4wbTKHi/sJUmFNtVLy/FdXEyVmZqPsWZydZTnggv/5VqzLe3oV//ADWhUfLzCxjakEbYV+qHrDXVa8SDu7L2iZMi0Q2D9ZvjYt7WDdgBzMw6RJ9a0arhwsEX6WSrA== X-OriginatorOrg: chipsnmedia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 04a26e81-a4d4-4a19-c5ce-08dd77cc364c X-MS-Exchange-CrossTenant-AuthSource: PS2P216MB1297.KORP216.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2025 01:08:32.5934 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4d70c8e9-142b-4389-b7f2-fa8a3c68c467 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BfN9vVA7DF/OemGrnuGYawA3JeHEWguP0SZ4eZYRhu1iY9vSpEyPQgJqWLmmcacPWxJvdN8t81UMQ22SpE7lkJUtrfFabbdr44kLxXbLcRs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SL2P216MB1403 From: Jackson Lee The device_run and finish_decode is not any more synchronized, so lock was needed in the device_run whenever state was changed. Signed-off-by: Jackson Lee Signed-off-by: Nas Chung --- drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c index e0f4b11ee464..485320db9bdc 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c @@ -1577,6 +1577,7 @@ static void wave5_vpu_dec_device_run(void *priv) struct queue_status_info q_status; u32 fail_res = 0; int ret = 0; + unsigned long flags; dev_dbg(inst->dev->dev, "%s: Fill the ring buffer with new bitstream data", __func__); pm_runtime_resume_and_get(inst->dev->dev); @@ -1617,7 +1618,9 @@ static void wave5_vpu_dec_device_run(void *priv) } spin_unlock_irqrestore(&inst->state_spinlock, flags); } else { + spin_lock_irqsave(&inst->state_spinlock, flags); switch_state(inst, VPU_INST_STATE_INIT_SEQ); + spin_unlock_irqrestore(&inst->state_spinlock, flags); } break; @@ -1628,8 +1631,9 @@ static void wave5_vpu_dec_device_run(void *priv) * we had a chance to switch, which leads to an invalid state * change. */ + spin_lock_irqsave(&inst->state_spinlock, flags); switch_state(inst, VPU_INST_STATE_PIC_RUN); - + spin_unlock_irqrestore(&inst->state_spinlock, flags); /* * During DRC, the picture decoding remains pending, so just leave the job * active until this decode operation completes. @@ -1643,7 +1647,9 @@ static void wave5_vpu_dec_device_run(void *priv) ret = wave5_prepare_fb(inst); if (ret) { dev_warn(inst->dev->dev, "Framebuffer preparation, fail: %d\n", ret); + spin_lock_irqsave(&inst->state_spinlock, flags); switch_state(inst, VPU_INST_STATE_STOP); + spin_unlock_irqrestore(&inst->state_spinlock, flags); break; } From patchwork Thu Apr 10 01:08:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jackson.lee" X-Patchwork-Id: 880761 Received: from SLXP216CU001.outbound.protection.outlook.com (mail-koreacentralazon11021134.outbound.protection.outlook.com [40.107.42.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D656F1C8633; Thu, 10 Apr 2025 01:08:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.42.134 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247325; cv=fail; b=CbqZzoUsj8eIXyG4KJ/dn9LyrY1rkwSxUAd4rrwY15Q+qbPGnm3HNFfeQ8H+EN8QWl01oaSWYr6AJiekIZrlF/xpQBWa65VoWV50b03AzYL6d8hqoXuNHsbeH+w5wP+Q70KF28eAQxR5VrSKTE9Zno4XIJpPsmSMLEaXbXPuXG0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744247325; c=relaxed/simple; bh=xg/PA/9gRUsESu99tTSwUeXsaGFNFWmJRfwJNaKyy9Q=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=mlqNm6fK6wWZKUfURS3D5uJ0fgEjot87QxhDLk4vjzJe+wyYkfUhwIcJ9wREuGqpJbL9eVzkblCxa5hnqPqzaC0Ov7tSvkKseCyVuDq7ZVg4xbClYh1PygJ5FgCQxCeVtT7gwhlSx38JSj6gW4nu0eKJMRGzi4SANmWdEv8cRLU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com; spf=fail smtp.mailfrom=chipsnmedia.com; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b=I4esTL8+; arc=fail smtp.client-ip=40.107.42.134 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=chipsnmedia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chipsnmedia.com header.i=@chipsnmedia.com header.b="I4esTL8+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MNQ7O7dJSGLAdF+8wxVRyGoncEQHiKE5/YoilzjunW4nbyb19nboFK/slwD9u+/PdmYk0MY10sbHMA6O986ryTDtdz4cj4dKdjFWN4CEeIwnkhyJOYuyYYH7E8zEoX1DeM8f8ttMhRT4HzyA6+mEeiJcffXce6+Pfzg67StolFCC77wMLDmf+emr2VaABnIfzJfbjJGCYmymotkLWRTB6/iAQR3WoEyb94WM3D5vLQA4uYXQVgQ3Q1PXMjj59ylCtwRZ64A24XjTKkkEl7BpWrZ26Jf8/KWQ53O+xvG7VG/KzfcLHTAIhICtFOr4M/dCfUngp/ESMedqtZ/CdA51GQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0FT1C53ahmCMpbiN6CEJD58lrxkwXSk8IKWpcgRM+nM=; b=sGRtpXTpYeJmEe+ctvPfsV1X95wSWgj79rMwBZ3PUYXQm+epr7pJJveUJCA9tmAQ6FCJ24M+/bHTJ1/iuGaX4Rh13YzFM82N4DjWRT0d/Fb6R+j35d4c7H8oqg2c13btJ8Ge6XK3frj4FbkDMVKQgjc0ntVxH3Ibas9N2qsfxGHU7Me08IYtaUV4LBxDgA9X7hvtSzxQgtPMNFhv4s0FBD2aDV6ar7bLghBkz/F5+ndhNbq32nDFWNgaJZjFhKgyYgLBvMkjOFSqe9ovWTrmwimi70HCDIXeakU80TC0/uABuLBVf84urOmEJBSgHuXQPeih9LCuZ+Wj30S0fkN2qg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=chipsnmedia.com; dmarc=pass action=none header.from=chipsnmedia.com; dkim=pass header.d=chipsnmedia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chipsnmedia.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0FT1C53ahmCMpbiN6CEJD58lrxkwXSk8IKWpcgRM+nM=; b=I4esTL8+hx7nLq1Heb5jGEfuMOhTt7aTUSsJDT9nMlVpRn0MhYcU3agR8vQHB9wVemoL4QdWXFJ5H1E9HWcBbjZI2ftlNhPx03Nk0Xsqvr2g9y0J/nLGyA6STSN7FsktNrA2UHyF6JE9Y/xy6EXdFQ3Jm2GRmiyiMBQYuYPn5lY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=chipsnmedia.com; Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) by SL2P216MB1403.KORP216.PROD.OUTLOOK.COM (2603:1096:101:32::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.34; Thu, 10 Apr 2025 01:08:33 +0000 Received: from PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386]) by PS2P216MB1297.KORP216.PROD.OUTLOOK.COM ([fe80::d095:716:2d14:f386%7]) with mapi id 15.20.8632.021; Thu, 10 Apr 2025 01:08:33 +0000 From: "Jackson.lee" To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, sebastian.fricke@collabora.com, nicolas.dufresne@collabora.com, bob.beckett@collabora.com, dafna.hirschfeld@collabora.com Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, jackson.lee@chipsnmedia.com, lafley.kim@chipsnmedia.com, b-brnich@ti.com, hverkuil@xs4all.nl, nas.chung@chipsnmedia.com Subject: [PATCH v1 6/7] media: chips-media: wave5: Reduce high CPU load Date: Thu, 10 Apr 2025 10:08:20 +0900 Message-Id: <20250410010821.52-7-jackson.lee@chipsnmedia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250410010821.52-1-jackson.lee@chipsnmedia.com> References: <20250410010821.52-1-jackson.lee@chipsnmedia.com> X-ClientProxiedBy: SL2P216CA0151.KORP216.PROD.OUTLOOK.COM (2603:1096:101:35::6) To PS2P216MB1297.KORP216.PROD.OUTLOOK.COM (2603:1096:301:73::13) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PS2P216MB1297:EE_|SL2P216MB1403:EE_ X-MS-Office365-Filtering-Correlation-Id: d34d0939-3e35-4106-2050-08dd77cc36cf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|52116014|7416014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: FnXuwcqR4DXRAg/WS26Q8FVDiHHBva/fsM9eZoUBI3Q5d/LnSWMMymNVWC9sRbMNM6zf6wq3elnt82aBt1wuJrGFjsCgxlXMetcxFl0wS5Zo8wPECJbIMX9S44os5TumRPvpruyxn+IhtZX1HcMAr9NYYFtj1FD+EWDsLnk+j2JRLS6f91+vhyNUn4kgrLn73wfW3Vp4YFQ15HatlKFEVVwpCOqvs91trQOsFv2tDjlhiO74eT9ERQ1kgU0KJCL+di5IdCVj3uQl5cb7AluYTSxHv30Ixz6gYiyGr8GwAQ2nRN75nby548keNN1XBmIPlQNKtOuGJrpCoC3muQ+FWrcP6HBRrylNZrjzyC3AerguMERVwsl/f8CCCNvbbgp5oZQUp43OYx8P9ymGVWLdxZHeHbEHAav+dmFgtUUcPHrP9Z2NOFw8+ICztjyN9ek/WZNPpD1xpalJjgcyhGpIrDoChSxE4G0uJcb4CPGPJ75EEtFANBsW7mUhIzFgDtnxFq2JPOgjWxwh/4gd1xp6/kfs8gZjZzdgKyX577ZGaWgGYCi91s1E9qbtKfFiFAQNNL/FSKIN7nyvWIRr8/gQU5l16mO6im9C2RmcfScLyklMYd2Ll2bnkcWmmroOS5mwv1kvY/mwYPenDn0COylQpLxXJhOdOjK+akvLkGY90IHzOtdk4vmCPKqlHf3My0LYkRhY4K1Kuoyi1mP9FQVLh0jiQrT5iN7R320hqbj5MjtqKpqFO1DzQxHS9oInfuwqx31JROVAiUSVLZgqxkes2fDLa/6BPGNADT3gMBSMqHPOnOxHIq+os5WlZG7nr86a3esWjAr/gp82BgEXtdcYJIGcvxkhv2bAFD2BDc/tFxBdrPQYvGpPOsrBIkUNZLJ7bFes36n+UsUEzHezXL3l8Uw0AOcvA6XrJZbyLFlWaycrfcU/47OAE7lJzcsqXNlqq193Hv8t2Kpj6zznTTUl7A6Z0IumfPPejmSgCxCmJq0wrcciGNkjobC/vtUMExMNP6sZkLnxrVs3N46vckU5oJi6b101zc0nJ+iAW5sVacECTc1oSA4JJ14rO3r899ckocgyuRotv/TPFA3va0ZFCS3znqgFnAVBuUcAdIWTeVTuJ5e+e7gBPZSXP2jh4povNNGCCgiHmDmrQ16oN4x2LES7Cd0gI0jxGEV5TRlkBvvhLM+ED1RLow9mZJ1Y/+EH/OBGGz0XcyIQYX3CUxVCGJN/Obxu1f8vYU0Zt+XA106g+R9rlNbZHysTcOH4UOjwQV9okClMw4xj9USlADRTsfDzMPZVE6KijA2MakyQ4LvrW/RbQk0p2zkwjOWOR+fp+IDNKZS9fPKJEl3FV7jXfg7gRfOcVRbxeOY47DFxRVCrgLw4dKQtQo7/VrYr9mf94PP0ziaYUDUdqJFNC7ETspA3IvjhJr7zMJ3oo+hfDaUQVeH9uKgdiv5r4orxgO1Sdy8yMrk//mfA9Zfr6gHwvw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PS2P216MB1297.KORP216.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(52116014)(7416014)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: e7C/o6/nLLPjh3DJLxfQz/iqz0dD/muUrPxAZK0MyNexYaMx0bt/ygTB/l35mhjNWFOIib3Mof2rQA1Hk1imwj/d8OgSNttcFeQXw7nHRMj21rGhdd+l6qk0+UWTJEAb+PWrQxI2nlRVms5Mh+NzN1wyAk0Nqs+TW2SHD8MNSzwOcs7IsGgzrELg28p7cJOEx7jKVVss3J2Hk/JCz/e+xZShYAFFNb18SUHf4nvseCUC1kblg4mcacCmExGcX9J6kCpwK6+sapydVAkdCkIVSr3+dbVlmFRcAZK68cyujmJgewxB7Ywm3WqeS1+NxCYqhJLjICeib6Y6TKmU30hyqU3yJmhyBMwOu5HwwvwgD1+Qi2l70V2PxuDfgMkv3UuKeVlU/NfWo5EL9jKyvAZh63u3eKKO2QOKSaRjquwxwbmBbdL9LfU+kW8bokQ/Djyr7EP6F+rDUR7uwXV35O4u9JJCNRKGiLJFHG5P4A/KT+Km1+pOSuTk1hBAHAsBZNDw8jit7CXU4OVRqR0KqYWfqbx38W9zLVzz2BFBoONXjgvE82fqXIUJ92j1LOI8rfHIS4CPP5ryVVer4SkDrOpHUTlnUkGURfICFrg+bmKR8Xh2StxsIAzZNfH/BRjYqLy9XcNE+9anP+a8OHvm5510W6F9dOAgT1XKUdWz0IvE4rpWo33ZNei6/iRq0iqcK7qKQX2aytSzsTv5rj4fmFx5gphZNMX6LkyAgQdpid83osDZ+XuGBDq8rutMsTgYiXpsWnpZU06DKA2raK32Sa3rAWAdSLu5Ss9XPyljbgPQaTavD841MXdHNSOuTBLSLzHbnte05OI8OJvlDIoSiEttGSySbwy3sZRuilu4ep3LhJshI3TufTX4ciO7BrgvlKSKr+FwoCUbDjTPl/lqV7rBk3YJlfJBnMDZJgZ+qeS0MmxkB25X+vO4lxJ/12FcuIM5o+1b9nn70yi2ChWdyMT4z/6WLEZOfGzy+4rU2CINXaZjOQAB3f37YkRNQF/G5WvjQxcAof9YQeuYt/S2HnRjcv2dH/H2Ga5bi6EtHFkOwHZQiISPDQBA18Nmn8/3YDdrK3TD0ib9K6T6q5EivgCz+CCLtcqTBtzi2AKNMygnjpsAFCBa+W7i1nMZyZYcAgATpejszR7q8MFe4VuVtlNHmJGZVKLzEinHg/W4kGyyUZOnm3nRYv/LS8MAb7vYxf2pm+Dr2ZBGRcc9Bx+4C63toUYMVFHtcnqosRMWo2fW3xvV1ZKE7FXaGVK3VHCBINPFwKz6hI849Kp+GIG7E4iCXP57pu4UC/79OPMBKuE5Ajw7faKV8WLa6MQthHeeH0Z+boygvEvrR5Sd8vMwOIfCRt5xAQwhdpAu2Efttk/2pEnCqRJ6eIyszWPDgP8fpti94OqHWMFkWaWtZyJ/GXj9P/Jva4RrBpiZQjznDjwA9NbPavfZ+8n9LserdlGngd/03MLPjN15IWmzaDaQ34g4SJb/+vYOpsQlYuJPe0B/ZZPMuvs1jxpgE2gE0GIYv2LGlhJdrZ0okhiMg67H4ACW00XkcRyTOFEWBMiwJtGgwnVxlWa19cZximDAybgx85mSWb/KXnS6QNDIi5MPP52INw== X-OriginatorOrg: chipsnmedia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d34d0939-3e35-4106-2050-08dd77cc36cf X-MS-Exchange-CrossTenant-AuthSource: PS2P216MB1297.KORP216.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Apr 2025 01:08:33.4614 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4d70c8e9-142b-4389-b7f2-fa8a3c68c467 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8Ewq3Q4lKd8qgtMnXbeyOAWCfhpm2NGeaWb8wVeDzE14R1HX+n9EB0O97v2xIENbcF4803mLn8XbHviji5/eYqjB4dURZukbpc8pfdp7ArA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SL2P216MB1403 From: Jackson Lee Since applying changes for performance improvement of decoder, there was a problem related to high CPU load. CPU load was more than 4 times when comparing CPU load. The root cause was the device_run was called many times even if there was no bitstream which should be queued. Signed-off-by: Jackson Lee Signed-off-by: Nas Chung --- .../media/platform/chips-media/wave5/wave5-vpu-dec.c | 12 +++++++++--- .../media/platform/chips-media/wave5/wave5-vpuapi.h | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c index 485320db9bdc..58340fddcd04 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c @@ -1280,10 +1280,13 @@ static void wave5_vpu_dec_buf_queue(struct vb2_buffer *vb) __func__, vb->type, vb->index, vb2_plane_size(&vbuf->vb2_buf, 0), vb2_plane_size(&vbuf->vb2_buf, 1), vb2_plane_size(&vbuf->vb2_buf, 2)); - if (vb->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) + if (vb->type == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) { + if (inst->empty_queue) + inst->empty_queue = false; wave5_vpu_dec_buf_queue_src(vb); - else if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) + } else if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) { wave5_vpu_dec_buf_queue_dst(vb); + } } static int wave5_vpu_dec_allocate_ring_buffer(struct vpu_instance *inst) @@ -1474,6 +1477,7 @@ static void wave5_vpu_dec_stop_streaming(struct vb2_queue *q) dev_dbg(inst->dev->dev, "%s: type: %u\n", __func__, q->type); pm_runtime_resume_and_get(inst->dev->dev); + inst->empty_queue = false; while (check_cmd) { struct queue_status_info q_status; @@ -1592,6 +1596,7 @@ static void wave5_vpu_dec_device_run(void *priv) inst->queuing_num == 0 && inst->state == VPU_INST_STATE_PIC_RUN) { dev_dbg(inst->dev->dev, "%s: no bitstream for feeding, so skip ", __func__); + inst->empty_queue = true; goto finish_job_and_return; } } @@ -1737,7 +1742,8 @@ static int wave5_vpu_dec_job_ready(void *priv) "No capture buffer ready to decode!\n"); break; } else if (!wave5_is_draining_or_eos(inst) && - !v4l2_m2m_num_src_bufs_ready(m2m_ctx)) { + (!v4l2_m2m_num_src_bufs_ready(m2m_ctx) || + inst->empty_queue)) { dev_dbg(inst->dev->dev, "No bitstream data to decode!\n"); break; diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h b/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h index fd0aef0bac4e..f2596af08cdf 100644 --- a/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h +++ b/drivers/media/platform/chips-media/wave5/wave5-vpuapi.h @@ -821,6 +821,7 @@ struct vpu_instance { bool retry; /* retry to feed bitstream if failure reason is WAVE5_SYSERR_QUEUEING_FAIL*/ int queuing_num; /* check if there is input buffer or not */ struct mutex feed_lock; /* lock for feeding bitstream buffers */ + bool empty_queue; struct vpu_buf bitstream_vbuf; dma_addr_t last_rd_ptr; size_t remaining_consumed_bytes;