From nobody Tue Oct 7 02:15:46 2025 Received: from mx9.didiglobal.com (mx9.didiglobal.com [111.202.70.124]) by smtp.subspace.kernel.org (Postfix) with SMTP id BB2082EAB8D; Wed, 16 Jul 2025 09:36:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=111.202.70.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752658583; cv=none; b=pEQSNbGbGS2jnQaDfYEeWSpvkBCEsj3Dp79LcsVx4EzMU8WPOiN46rYK87FGK8uP6zy8isCV9HOLSdpRNAfDhy7RX4vxP6zIbdxlrGrsXCz9J2gZIw/EInMqsgBCveckXGmeq2dvcuWYKlkc3Plxk8C6rcFXd0XJYLjVOw3rL9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752658583; c=relaxed/simple; bh=G4rwVJYLKQqnce8QoPmaSGWeYFRMyGi7Hu7kmAMCExA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:Content-Type: MIME-Version; b=HT7b3epv9JS9GVryqqJ1ySdRDBu8CMsDyMHS0m1TEaGWecLAOtR5PJyC8FeceXxMORInwlhT0n3ka2Dt9sa8vmlRMMofjST2q5GW4Yejg7PHB/UTb3lItN5+S2VHVQE0Vz4QA0wU8HDgW3D4xDtc+E3Pkr4IDf6zHMMaMprLZjE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com; spf=pass smtp.mailfrom=didiglobal.com; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b=pinRda3o; arc=none smtp.client-ip=111.202.70.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b="pinRda3o" Received: from mail.didiglobal.com (unknown [10.79.64.20]) by mx9.didiglobal.com (MailData Gateway V2.8.8) with ESMTPS id D02EC18121AECF; Wed, 16 Jul 2025 17:35:52 +0800 (CST) Received: from BJ03-ACTMBX-07.didichuxing.com (10.79.71.34) by BJ01-ACTMBX-01.didichuxing.com (10.79.64.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Wed, 16 Jul 2025 17:36:03 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com (10.79.71.34) by BJ03-ACTMBX-07.didichuxing.com (10.79.71.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Wed, 16 Jul 2025 17:36:03 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com ([fe80::2e1a:dd47:6d25:287e]) by BJ03-ACTMBX-07.didichuxing.com ([fe80::2e1a:dd47:6d25:287e%7]) with mapi id 15.02.1748.010; Wed, 16 Jul 2025 17:36:03 +0800 X-MD-Sfrom: chentaotao@didiglobal.com X-MD-SrcIP: 10.79.64.20 From: =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= To: "tytso@mit.edu" , "hch@infradead.org" , "adilger.kernel@dilger.ca" , "willy@infradead.org" , "brauner@kernel.org" , "jani.nikula@linux.intel.com" , "rodrigo.vivi@intel.com" , "tursulin@ursulin.net" , "airlied@gmail.com" CC: "linux-fsdevel@vger.kernel.org" , "linux-ext4@vger.kernel.org" , "linux-block@vger.kernel.org" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "linux-mm@kvack.org" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "chentao325@qq.com" , "frank.li@vivo.com" , =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= Subject: [PATCH v6 1/5] drm/i915: Use kernel_write() in shmem object create Thread-Topic: [PATCH v6 1/5] drm/i915: Use kernel_write() in shmem object create Thread-Index: AQHb9jUL3N5ZE20a3kaRBvbcgwGzNQ== Date: Wed, 16 Jul 2025 09:36:03 +0000 Message-ID: <20250716093559.217344-2-chentaotao@didiglobal.com> In-Reply-To: <20250716093559.217344-1-chentaotao@didiglobal.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=didiglobal.com; s=2025; t=1752658558; bh=G4rwVJYLKQqnce8QoPmaSGWeYFRMyGi7Hu7kmAMCExA=; h=From:To:CC:Subject:Date:Message-ID:Content-Type; b=pinRda3o8oP5gwhYhmDu6fD7x4SNtZiVFE84ISrzkXEuSYGANSX9/72WzX/GQGYCq LScVqHvMJZn29M4wVjAj/qq9oye05KfyO2ap2YG+/HMCE3kCodXm5EjN9ZG2crnw4l Qng7qtjtz4lOvjlz7IA3mw3UVuhzwJ4/6z2Z1/XU= Content-Type: text/plain; charset="utf-8" From: Taotao Chen Replace the write_begin/write_end loop in i915_gem_object_create_shmem_from_data() with call to kernel_write(). This function initializes shmem-backed GEM objects. kernel_write() simplifies the code by removing manual folio handling. Part of a series refactoring address_space_operations write_begin and write_end callbacks to use struct kiocb for passing write context and flags. Signed-off-by: Taotao Chen --- drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 33 +++++++---------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i9= 15/gem/i915_gem_shmem.c index 19a3eb82dc6a..1e8f66ac48ca 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c @@ -637,9 +637,8 @@ i915_gem_object_create_shmem_from_data(struct drm_i915_= private *i915, { struct drm_i915_gem_object *obj; struct file *file; - const struct address_space_operations *aops; - loff_t pos; - int err; + loff_t pos =3D 0; + ssize_t err; =20 GEM_WARN_ON(IS_DGFX(i915)); obj =3D i915_gem_object_create_shmem(i915, round_up(size, PAGE_SIZE)); @@ -649,29 +648,15 @@ i915_gem_object_create_shmem_from_data(struct drm_i91= 5_private *i915, GEM_BUG_ON(obj->write_domain !=3D I915_GEM_DOMAIN_CPU); =20 file =3D obj->base.filp; - aops =3D file->f_mapping->a_ops; - pos =3D 0; - do { - unsigned int len =3D min_t(typeof(size), size, PAGE_SIZE); - struct folio *folio; - void *fsdata; - - err =3D aops->write_begin(file, file->f_mapping, pos, len, - &folio, &fsdata); - if (err < 0) - goto fail; + err =3D kernel_write(file, data, size, &pos); =20 - memcpy_to_folio(folio, offset_in_folio(folio, pos), data, len); + if (err < 0) + goto fail; =20 - err =3D aops->write_end(file, file->f_mapping, pos, len, len, - folio, fsdata); - if (err < 0) - goto fail; - - size -=3D len; - data +=3D len; - pos +=3D len; - } while (size); + if (err !=3D size) { + err =3D -EIO; + goto fail; + } =20 return obj; =20 --=20 2.34.1