Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp1314816rdb; Wed, 20 Sep 2023 06:04:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEhdrlDx/y9GU7NV9GPkjGSlm8xCT2RmJvI6qzBmlEPhfwyhD714QgKXST1FAMzHczhTviI X-Received: by 2002:a17:902:8641:b0:1c0:cb4d:df7c with SMTP id y1-20020a170902864100b001c0cb4ddf7cmr1670840plt.1.1695215070250; Wed, 20 Sep 2023 06:04:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695215070; cv=none; d=google.com; s=arc-20160816; b=ObgzejOe7oXGGf+7jbArEnCAiNIOOCXqBh8CSZWBj1brmfcyTPbfT8wPyZwYsB+WXU 7wB7Van8GnwJW8NsWCWJ3IlM1AJ9sN+6V8Yd327uReyXsIRkAWFUJi7W9guQuPJeuKBE tUJ6a9GqprQVQrSQfp5JFtoY4fvl0kykwFaKBvnNAK/Dk52q1VBfKjiXKy/lamf/Ri0i 4dr9VqDaCqkthkZq4LCtma2stYLibHVY752AjwRTGrE4SrgWNcR12zEE1xfMeaXsJDDk Rg0BZHz7XhT6IgN4tsO7wGaFH1kkCIcqCh/anT13jgvM3V25Xzv8DeKbEJ0KYzDHYSDp 2NkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to :organization:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:dkim-signature; bh=9M6nsfi/sKoGmHlGYfQUQdJ+0de3UxVplNHH8ftMr8w=; fh=naorXVB/1i7yJD03x4IO9819ztGdyzLUS8hL/WL0Hbc=; b=SvZJ9RsEbksFx9PAjqlLusZlE0V2Mkl0Gk0RgBcL8XfiNgJkkFL8FFPm1BkXtbAfc3 7ksBnoqFmSBcj4SVOQczXT8HXIoAH2c7Cc0idPdOaHZ3vRGg6C60yyXh5VrYXmkSMk6T hSaC9/3FY8HSugZR1FnSTeqP/oAWDxDTHxrsgUbI9GL2+GZcsM1kqDXbmpK7fZKqfCEG uxpzYZC8W+FS7SDvPlb1p5InHPMdsOAvSDbJ8WjTxDVPiURZxZZu7v8gpwPmmva0cu6y arA0E3tme83wOIG//uv41tEn3HOsE5y+oLcJ+Du/5cGq4h2SaAtD9344iOAeayNiWBda i+kA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=VZItf5Ac; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from groat.vger.email (groat.vger.email. [23.128.96.35]) by mx.google.com with ESMTPS id u9-20020a170903124900b001c33d33975esi12283423plh.133.2023.09.20.06.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 06:04:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) client-ip=23.128.96.35; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=VZItf5Ac; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.35 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id EE5818287895; Tue, 19 Sep 2023 23:08:31 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233030AbjITGIa (ORCPT + 99 others); Wed, 20 Sep 2023 02:08:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37422 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233013AbjITGI2 (ORCPT ); Wed, 20 Sep 2023 02:08:28 -0400 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4878BAF; Tue, 19 Sep 2023 23:08:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1695190102; x=1726726102; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=GIaIXCqIGoxl1rQ/uxCgQqfwjzyvj08lMJhHPrSZpx0=; b=VZItf5AcbtNRS7v/SopXlt85Tm/OWsFU6Wbc6I4u8tStGPmuAIeoGpJm luNigWzawQxcfIid+OlYRABkHQT8w7mCACvhzdkH17FNBUhv5o4ZFDXQm xCOLEQkfN6H7PWcXKEfbCtYThw4KQ85B2yB/qrsgPkC1gqz2JlUDgQpqd 92LckcTZeb6ooki12ug1mckXMxJPz/iKqH7TdmUESKvRdWJGLiKXfF0UM YdRCCHg2W+MhW03yUNMrdmddlquVb2Wm4BUHSGEB5hsIb4f3co9ALZ2k/ u2u/G7pBbs/BQuDPLebFNPIkJgVSHuL7PilkCgMX4fX77BP4u4LXhdP+X g==; X-IronPort-AV: E=McAfee;i="6600,9927,10838"; a="382880382" X-IronPort-AV: E=Sophos;i="6.02,161,1688454000"; d="scan'208";a="382880382" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Sep 2023 23:08:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10838"; a="1077294545" X-IronPort-AV: E=Sophos;i="6.02,161,1688454000"; d="scan'208";a="1077294545" Received: from ahajda-mobl.ger.corp.intel.com (HELO [10.213.20.10]) ([10.213.20.10]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Sep 2023 23:08:17 -0700 Message-ID: <81f332a3-2b30-465d-f026-bc203aada32d@intel.com> Date: Wed, 20 Sep 2023 08:08:15 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.15.1 Subject: Re: [Intel-gfx] [PATCH] i915: Limit the length of an sg list to the requested length Content-Language: en-US To: "Matthew Wilcox (Oracle)" , Andrew Morton Cc: intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, Oleksandr Natalenko , dri-devel@lists.freedesktop.org, Rodrigo Vivi , stable@vger.kernel.org References: <20230919194855.347582-1-willy@infradead.org> From: Andrzej Hajda Organization: Intel Technology Poland sp. z o.o. - ul. Slowackiego 173, 80-298 Gdansk - KRS 101882 - NIP 957-07-52-316 In-Reply-To: <20230919194855.347582-1-willy@infradead.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Tue, 19 Sep 2023 23:08:32 -0700 (PDT) On 19.09.2023 21:48, Matthew Wilcox (Oracle) wrote: > The folio conversion changed the behaviour of shmem_sg_alloc_table() to > put the entire length of the last folio into the sg list, even if the sg > list should have been shorter. gen8_ggtt_insert_entries() relied on the > list being the right langth and would overrun the end of the page tables. s/langth/length/, I can fix it on applying. > Other functions may also have been affected. > > Clamp the length of the last entry in the sg list to be the expected > length. > > Signed-off-by: Matthew Wilcox (Oracle) > Fixes: 0b62af28f249 ("i915: convert shmem_sg_free_table() to use a folio_batch") > Cc: stable@vger.kernel.org # 6.5.x > Link: https://gitlab.freedesktop.org/drm/intel/-/issues/9256 > Link: https://lore.kernel.org/lkml/6287208.lOV4Wx5bFT@natalenko.name/ > Reported-by: Oleksandr Natalenko > Tested-by: Oleksandr Natalenko Reviewed-by: Andrzej Hajda Regards Andrzej > --- > drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > index 8f1633c3fb93..73a4a4eb29e0 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c > @@ -100,6 +100,7 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st, > st->nents = 0; > for (i = 0; i < page_count; i++) { > struct folio *folio; > + unsigned long nr_pages; > const unsigned int shrink[] = { > I915_SHRINK_BOUND | I915_SHRINK_UNBOUND, > 0, > @@ -150,6 +151,8 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st, > } > } while (1); > > + nr_pages = min_t(unsigned long, > + folio_nr_pages(folio), page_count - i); > if (!i || > sg->length >= max_segment || > folio_pfn(folio) != next_pfn) { > @@ -157,13 +160,13 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st, > sg = sg_next(sg); > > st->nents++; > - sg_set_folio(sg, folio, folio_size(folio), 0); > + sg_set_folio(sg, folio, nr_pages * PAGE_SIZE, 0); > } else { > /* XXX: could overflow? */ > - sg->length += folio_size(folio); > + sg->length += nr_pages * PAGE_SIZE; > } > - next_pfn = folio_pfn(folio) + folio_nr_pages(folio); > - i += folio_nr_pages(folio) - 1; > + next_pfn = folio_pfn(folio) + nr_pages; > + i += nr_pages - 1; > > /* Check that the i965g/gm workaround works. */ > GEM_BUG_ON(gfp & __GFP_DMA32 && next_pfn >= 0x00100000UL);