From nobody Sun Feb 8 12:40:00 2026 Received: from mail-io1-f50.google.com (mail-io1-f50.google.com [209.85.166.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F41A15E215 for ; Thu, 11 Apr 2024 15:35:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849736; cv=none; b=j2vsuhEVwSBwX9Zml9srm6UdvK6awZvIACGToaXCw2PIPL4BjByB57WC/gsVIP9KGxfKDM6C2sLZgLreNCDFmBj3wZq4LlvdZnruVGi67jq0Lwu72gZPFZ4SAzPY5LlZJ5FDxlr48z8N9weJPSP0ZF1KCQT7/oGiKTTTF5H02EU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712849736; c=relaxed/simple; bh=5xe9jRMxDoCB0HZYWN+nEJ6OLqj9Atl3s8UCsRCpkSg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P8FsLv0vuDi8Bx+wgVjAdl0ImRW02GgEXmUpXte97YxtykGahkGCFuGqxQGLwRmi5mC1Pyd31TEMI8v1wvUqDrSXRJdLnGU7+NUxuklmAHaTNYe12mSmrmACQlbv30eFRvCPKAeqLkPf+QIZQlgwdjiS76hjeTc0XUoJ3/idqCw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk; spf=pass smtp.mailfrom=kernel.dk; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b=W+0bx4ec; arc=none smtp.client-ip=209.85.166.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.dk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kernel.dk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel-dk.20230601.gappssmtp.com header.i=@kernel-dk.20230601.gappssmtp.com header.b="W+0bx4ec" Received: by mail-io1-f50.google.com with SMTP id ca18e2360f4ac-7d6112ba6baso58053039f.1 for ; Thu, 11 Apr 2024 08:35:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1712849734; x=1713454534; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=onVXsekqILXYLFJqWP9FkN2dHXUc/kieAaTnFHuLlLA=; b=W+0bx4ecEAQFOGGM+aSM9pYvtoUwTZc3AQlU4Z7wwoQ1E/cVIGagqvmVUvGROxq4xd GRhIccEuMH3EnECUpkBWGX3RnhJrQOwkJuFjlNOCufFJlXxK5eWgwNlb0XR3EbpglM6U 6XR8pFyB3FIjiWfSu0FhvvAGzOnC44VAk1hsubxSdItabXLKAaw6q1tq7+VjsHizU2nI Ye59Nf/TC+PU3KMU1h7sO/B5/o0uQlPWtQj1Wb4B9FixHbDtLmRaW+5A+vdkSlbl9hUa h7C/anIYnAdFiVw7cDefNw+maao2H06CypCr9UDx6Hw7+hJ8E1/kSErt5f5/5kKr+uMI WXzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712849734; x=1713454534; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=onVXsekqILXYLFJqWP9FkN2dHXUc/kieAaTnFHuLlLA=; b=PZT7xBWxrMRJv6U5KY+5LccIicR0XTq8RNIFnrgrELxjrJagitTU3kmHR/sSlxwwdJ 2SkHlJ7GNDHrqDzYffbpKCR8YK6Jkqt5kK5l3gQM/5ZF4h0OpxHjMXmLBcZ3TK8uAJ37 Cwk7kcBNkp3b0Rz3+ZX7vqxwwYGsBc2HfYu63OlCj3B0bGElD+L0GDyk1yFJ7a1fYbVa e07hv9UgY/754J8k9kFEHaf65UFwnPBcbV38PC/wJ3nQuEQHHaN4SJZ39IJxJg0DQDzw 2gWNtono7M1thtunVHXvpRS3OWkYuyi/xcBKbvKyqwCmm4TQDq4p4QDY2lTcKdczJl4P uufA== X-Gm-Message-State: AOJu0Yz2+gmYmHyvf7ISyxWAhtDJIjj3bhTDmxnLoiWeR6QpJrLjOjVG fSDIV5wqfHRO5Qb06b0OEB0pmUQlz2eiZwk2kG3CNhtNgBRrmwg5ZADUJEboHssCILTFRJI7tqb Q X-Google-Smtp-Source: AGHT+IGmButBnNJfkfgBXvfJ3qnEJ1rm2MMsS0tuokexDUrQ/pjV+Zi8bhmeft6bKxq1A3aqsge35Q== X-Received: by 2002:a6b:cd08:0:b0:7d5:fe3e:90ff with SMTP id d8-20020a6bcd08000000b007d5fe3e90ffmr203572iog.0.1712849734093; Thu, 11 Apr 2024 08:35:34 -0700 (PDT) Received: from localhost.localdomain ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id jc25-20020a056638891900b0047f14b7f6c0sm457056jab.5.2024.04.11.08.35.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Apr 2024 08:35:32 -0700 (PDT) From: Jens Axboe To: linux-kernel@vger.kernel.org Cc: Jens Axboe Subject: [PATCH 140/437] drm: msm: convert to read/write iterators Date: Thu, 11 Apr 2024 09:14:40 -0600 Message-ID: <20240411153126.16201-141-axboe@kernel.dk> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240411153126.16201-1-axboe@kernel.dk> References: <20240411153126.16201-1-axboe@kernel.dk> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Signed-off-by: Jens Axboe --- drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 20 +++++++++---------- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 20 +++++++++---------- drivers/gpu/drm/msm/dp/dp_debug.c | 15 +++++++------- drivers/gpu/drm/msm/msm_debugfs.c | 4 ++-- drivers/gpu/drm/msm/msm_perf.c | 12 +++++------ drivers/gpu/drm/msm/msm_rd.c | 12 +++++------ 6 files changed, 41 insertions(+), 42 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c b/drivers/gpu/dr= m/msm/disp/dpu1/dpu_core_perf.c index ef871239adb2..c8971ba26cd4 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c @@ -398,14 +398,15 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc, =20 #ifdef CONFIG_DEBUG_FS =20 -static ssize_t _dpu_core_perf_mode_write(struct file *file, - const char __user *user_buf, size_t count, loff_t *ppos) +static ssize_t _dpu_core_perf_mode_write(struct kiocb *iocb, + struct iov_iter *from) { - struct dpu_core_perf *perf =3D file->private_data; + struct dpu_core_perf *perf =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); u32 perf_mode =3D 0; int ret; =20 - ret =3D kstrtouint_from_user(user_buf, count, 0, &perf_mode); + ret =3D kstrtouint_from_iter(from, count, 0, &perf_mode); if (ret) return ret; =20 @@ -426,10 +427,9 @@ static ssize_t _dpu_core_perf_mode_write(struct file *= file, return count; } =20 -static ssize_t _dpu_core_perf_mode_read(struct file *file, - char __user *buff, size_t count, loff_t *ppos) +static ssize_t _dpu_core_perf_mode_read(struct kiocb *iocb, struct iov_ite= r *to) { - struct dpu_core_perf *perf =3D file->private_data; + struct dpu_core_perf *perf =3D iocb->ki_filp->private_data; int len; char buf[128]; =20 @@ -437,13 +437,13 @@ static ssize_t _dpu_core_perf_mode_read(struct file *= file, "mode %d\n", perf->perf_tune.mode); =20 - return simple_read_from_buffer(buff, count, ppos, buf, len); + return simple_copy_to_iter(buf, &iocb->ki_pos, len, to); } =20 static const struct file_operations dpu_core_perf_mode_fops =3D { .open =3D simple_open, - .read =3D _dpu_core_perf_mode_read, - .write =3D _dpu_core_perf_mode_write, + .read_iter =3D _dpu_core_perf_mode_read, + .write_iter =3D _dpu_core_perf_mode_write, }; =20 int dpu_core_perf_debugfs_init(struct dpu_kms *dpu_kms, struct dentry *par= ent) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/= disp/dpu1/dpu_kms.c index a1f5d7c4ab91..0c1484439229 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -105,16 +105,15 @@ static int dpu_debugfs_safe_stats_show(struct seq_fil= e *s, void *v) } DEFINE_SHOW_ATTRIBUTE(dpu_debugfs_safe_stats); =20 -static ssize_t _dpu_plane_danger_read(struct file *file, - char __user *buff, size_t count, loff_t *ppos) +static ssize_t _dpu_plane_danger_read(struct kiocb *iocb, struct iov_iter = *to) { - struct dpu_kms *kms =3D file->private_data; + struct dpu_kms *kms =3D iocb->ki_filp->private_data; int len; char buf[40]; =20 len =3D scnprintf(buf, sizeof(buf), "%d\n", !kms->has_danger_ctrl); =20 - return simple_read_from_buffer(buff, count, ppos, buf, len); + return simple_copy_to_iter(buf, &iocb->ki_pos, len, to); } =20 static void _dpu_plane_set_danger_state(struct dpu_kms *kms, bool enable) @@ -140,14 +139,15 @@ static void _dpu_plane_set_danger_state(struct dpu_km= s *kms, bool enable) } } =20 -static ssize_t _dpu_plane_danger_write(struct file *file, - const char __user *user_buf, size_t count, loff_t *ppos) +static ssize_t _dpu_plane_danger_write(struct kiocb *iocb, + struct iov_iter *from) { - struct dpu_kms *kms =3D file->private_data; + struct dpu_kms *kms =3D iocb->ki_filp->private_data; + size_t count =3D iov_iter_count(from); int disable_panic; int ret; =20 - ret =3D kstrtouint_from_user(user_buf, count, 0, &disable_panic); + ret =3D kstrtouint_from_iter(from, count, 0, &disable_panic); if (ret) return ret; =20 @@ -168,8 +168,8 @@ static ssize_t _dpu_plane_danger_write(struct file *fil= e, =20 static const struct file_operations dpu_plane_danger_enable =3D { .open =3D simple_open, - .read =3D _dpu_plane_danger_read, - .write =3D _dpu_plane_danger_write, + .read_iter =3D _dpu_plane_danger_read, + .write_iter =3D _dpu_plane_danger_write, }; =20 static void dpu_debugfs_danger_init(struct dpu_kms *dpu_kms, diff --git a/drivers/gpu/drm/msm/dp/dp_debug.c b/drivers/gpu/drm/msm/dp/dp_= debug.c index eca5a02f9003..7589f40309ff 100644 --- a/drivers/gpu/drm/msm/dp/dp_debug.c +++ b/drivers/gpu/drm/msm/dp/dp_debug.c @@ -123,23 +123,22 @@ static int dp_test_type_show(struct seq_file *m, void= *data) } DEFINE_SHOW_ATTRIBUTE(dp_test_type); =20 -static ssize_t dp_test_active_write(struct file *file, - const char __user *ubuf, - size_t len, loff_t *offp) +static ssize_t dp_test_active_write(struct kiocb *iocb, struct iov_iter *f= rom) { char *input_buffer; int status =3D 0; const struct dp_debug_private *debug; const struct drm_connector *connector; + size_t len =3D iov_iter_count(from); int val =3D 0; =20 - debug =3D ((struct seq_file *)file->private_data)->private; + debug =3D ((struct seq_file *)iocb->ki_filp->private_data)->private; connector =3D debug->connector; =20 if (len =3D=3D 0) return 0; =20 - input_buffer =3D memdup_user_nul(ubuf, len); + input_buffer =3D iterdup_nul(from, len); if (IS_ERR(input_buffer)) return PTR_ERR(input_buffer); =20 @@ -162,7 +161,7 @@ static ssize_t dp_test_active_write(struct file *file, } kfree(input_buffer); =20 - *offp +=3D len; + iocb->ki_pos +=3D len; return len; } =20 @@ -193,10 +192,10 @@ static int dp_test_active_open(struct inode *inode, static const struct file_operations test_active_fops =3D { .owner =3D THIS_MODULE, .open =3D dp_test_active_open, - .read =3D seq_read, + .read_iter =3D seq_read_iter, .llseek =3D seq_lseek, .release =3D single_release, - .write =3D dp_test_active_write + .write_iter =3D dp_test_active_write, }; =20 static void dp_debug_init(struct dp_debug *dp_debug, struct dentry *root, = bool is_edp) diff --git a/drivers/gpu/drm/msm/msm_debugfs.c b/drivers/gpu/drm/msm/msm_de= bugfs.c index 4494f6d1c7cb..237bb6dace46 100644 --- a/drivers/gpu/drm/msm/msm_debugfs.c +++ b/drivers/gpu/drm/msm/msm_debugfs.c @@ -112,7 +112,7 @@ static int msm_gpu_open(struct inode *inode, struct fil= e *file) static const struct file_operations msm_gpu_fops =3D { .owner =3D THIS_MODULE, .open =3D msm_gpu_open, - .read =3D seq_read, + .read_iter =3D seq_read_iter, .llseek =3D seq_lseek, .release =3D msm_gpu_release, }; @@ -175,7 +175,7 @@ static int msm_kms_open(struct inode *inode, struct fil= e *file) static const struct file_operations msm_kms_fops =3D { .owner =3D THIS_MODULE, .open =3D msm_kms_open, - .read =3D seq_read, + .read_iter =3D seq_read_iter, .llseek =3D seq_lseek, .release =3D msm_kms_release, }; diff --git a/drivers/gpu/drm/msm/msm_perf.c b/drivers/gpu/drm/msm/msm_perf.c index 3d3da79fec2a..494d714ce6a2 100644 --- a/drivers/gpu/drm/msm/msm_perf.c +++ b/drivers/gpu/drm/msm/msm_perf.c @@ -117,10 +117,10 @@ static int refill_buf(struct msm_perf_state *perf) return 0; } =20 -static ssize_t perf_read(struct file *file, char __user *buf, - size_t sz, loff_t *ppos) +static ssize_t perf_read(struct kiocb *iocb, struct iov_iter *to) { - struct msm_perf_state *perf =3D file->private_data; + struct msm_perf_state *perf =3D iocb->ki_filp->private_data; + size_t sz =3D iov_iter_count(to); int n =3D 0, ret =3D 0; =20 mutex_lock(&perf->read_lock); @@ -132,13 +132,13 @@ static ssize_t perf_read(struct file *file, char __us= er *buf, } =20 n =3D min((int)sz, perf->buftot - perf->bufpos); - if (copy_to_user(buf, &perf->buf[perf->bufpos], n)) { + if (!copy_to_iter_full(&perf->buf[perf->bufpos], n, to)) { ret =3D -EFAULT; goto out; } =20 perf->bufpos +=3D n; - *ppos +=3D n; + iocb->ki_pos +=3D n; =20 out: mutex_unlock(&perf->read_lock); @@ -191,7 +191,7 @@ static int perf_release(struct inode *inode, struct fil= e *file) static const struct file_operations perf_debugfs_fops =3D { .owner =3D THIS_MODULE, .open =3D perf_open, - .read =3D perf_read, + .read_iter =3D perf_read, .llseek =3D no_llseek, .release =3D perf_release, }; diff --git a/drivers/gpu/drm/msm/msm_rd.c b/drivers/gpu/drm/msm/msm_rd.c index ca44fd291c5b..d5f65377ba65 100644 --- a/drivers/gpu/drm/msm/msm_rd.c +++ b/drivers/gpu/drm/msm/msm_rd.c @@ -130,12 +130,12 @@ static void rd_write_section(struct msm_rd_state *rd, rd_write(rd, buf, sz); } =20 -static ssize_t rd_read(struct file *file, char __user *buf, - size_t sz, loff_t *ppos) +static ssize_t rd_read(struct kiocb *iocb, struct iov_iter *to) { - struct msm_rd_state *rd =3D file->private_data; + struct msm_rd_state *rd =3D iocb->ki_filp->private_data; struct circ_buf *fifo =3D &rd->fifo; const char *fptr =3D &fifo->buf[fifo->tail]; + size_t sz =3D iov_iter_count(to); int n =3D 0, ret =3D 0; =20 mutex_lock(&rd->read_lock); @@ -150,13 +150,13 @@ static ssize_t rd_read(struct file *file, char __user= *buf, * once. */ n =3D min_t(int, sz, circ_count_to_end(&rd->fifo)); - if (copy_to_user(buf, fptr, n)) { + if (!copy_to_iter_full(fptr, n, to)) { ret =3D -EFAULT; goto out; } =20 smp_store_release(&fifo->tail, (fifo->tail + n) & (BUF_SZ - 1)); - *ppos +=3D n; + iocb->ki_pos +=3D n; =20 wake_up_all(&rd->fifo_event); =20 @@ -226,7 +226,7 @@ static int rd_release(struct inode *inode, struct file = *file) static const struct file_operations rd_debugfs_fops =3D { .owner =3D THIS_MODULE, .open =3D rd_open, - .read =3D rd_read, + .read_iter =3D rd_read, .llseek =3D no_llseek, .release =3D rd_release, }; --=20 2.43.0