From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 658B9C2BA4C for ; Wed, 26 Jan 2022 17:12:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AAB4D6B0071; Wed, 26 Jan 2022 12:12:32 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A32F56B0073; Wed, 26 Jan 2022 12:12:32 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D3D06B0074; Wed, 26 Jan 2022 12:12:32 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay026.a.hostedemail.com [64.99.140.26]) by kanga.kvack.org (Postfix) with ESMTP id 7670E6B0071 for ; Wed, 26 Jan 2022 12:12:32 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id F421222EFE for ; Wed, 26 Jan 2022 17:12:30 +0000 (UTC) X-FDA: 79073082102.01.925F1E6 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by imf19.hostedemail.com (Postfix) with ESMTP id 308461A0009 for ; Wed, 26 Jan 2022 17:12:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643217149; x=1674753149; h=date:from:to:cc:subject:message-id:mime-version: content-transfer-encoding; bh=aypAEtiBFYbN9QNbzfS0IMdtWkDQ6Nj601KMTGeFDDk=; b=FchdI2ywRE9zAFspa1/T2oYv89Kl+8TvqU3nFIq+EAd8l5F9Ugun9CDw fGEsk7kBAVVFz+UdkkAvG35CULfQui3GugNHsv9PKjg52YQB5OKSGPgsS J17xLBJwIe1syZdDLJ6TDxi/S8c1U2AfHEFZzHhbzW/nEFpfzTUE96sm0 6mmmyEDZfy1sA+2/4lxVY4s1FaWY2XASVD6r/qMO1wP76b+IAJDJi5fnz TpLluhqKg7sHY8Rx7wYleNvf6UiDbBprnOwSw+0Eksd0XFo3s0fb7cSIb utdV80OC/oMiPk7EuVDuehIyTli7fT8Rw0/Kib3dP26zxTMYoBt6B5dng w==; X-IronPort-AV: E=McAfee;i="6200,9189,10238"; a="246376056" X-IronPort-AV: E=Sophos;i="5.88,318,1635231600"; d="scan'208";a="246376056" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jan 2022 09:11:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,318,1635231600"; d="scan'208";a="477541099" Received: from lkp-server01.sh.intel.com (HELO 276f1b88eecb) ([10.239.97.150]) by orsmga003.jf.intel.com with ESMTP; 26 Jan 2022 09:11:04 -0800 Received: from kbuild by 276f1b88eecb with local (Exim 4.92) (envelope-from ) id 1nClp1-000LRD-EM; Wed, 26 Jan 2022 17:11:03 +0000 Date: Thu, 27 Jan 2022 01:10:17 +0800 From: kernel test robot To: Matt Roper Cc: kbuild-all@lists.01.org, Linux Memory Management List Subject: [linux-next:master 1693/1734] drivers/gpu/drm/i915/gem/i915_gem_mman.c:369:11: error: implicit declaration of function 'i915_gem_evict_vm'; did you mean 'i915_gem_to_ttm'? Message-ID: <202201270113.DdzBtOf8-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.10.1 (2018-07-13) X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 308461A0009 X-Stat-Signature: wm8a7at1crsh8eccwgujdj9g9hqkwgud Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=FchdI2yw; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf19.hostedemail.com: domain of lkp@intel.com has no SPF policy when checking 134.134.136.24) smtp.mailfrom=lkp@intel.com X-Rspam-User: nil X-HE-Tag: 1643217148-904891 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: d25ee88530253138d0b20d43511ca5acbda4e9f7 commit: e4217080a60313b0f0e5df5bb169b9f79ceb4694 [1693/1734] Merge branch 'for-linux-next-gt' of git://anongit.freedesktop.org/drm-intel config: x86_64-rhel-8.3-func (https://download.01.org/0day-ci/archive/20220127/202201270113.DdzBtOf8-lkp@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=e4217080a60313b0f0e5df5bb169b9f79ceb4694 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout e4217080a60313b0f0e5df5bb169b9f79ceb4694 # save the config file to linux build tree mkdir build_dir make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/i915/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Note: the linux-next/master HEAD d25ee88530253138d0b20d43511ca5acbda4e9f7 builds fine. It may have been fixed somewhere. All errors (new ones prefixed by >>): drivers/gpu/drm/i915/gem/i915_gem_mman.c: In function 'vm_fault_gtt': >> drivers/gpu/drm/i915/gem/i915_gem_mman.c:369:11: error: implicit declaration of function 'i915_gem_evict_vm'; did you mean 'i915_gem_to_ttm'? [-Werror=implicit-function-declaration] 369 | ret = i915_gem_evict_vm(&ggtt->vm, &ww); | ^~~~~~~~~~~~~~~~~ | i915_gem_to_ttm cc1: some warnings being treated as errors vim +369 drivers/gpu/drm/i915/gem/i915_gem_mman.c cc662126b4134e Abdiel Janulgue 2019-12-04 288 cc662126b4134e Abdiel Janulgue 2019-12-04 289 static vm_fault_t vm_fault_gtt(struct vm_fault *vmf) b414fcd5be0b00 Chris Wilson 2019-05-28 290 { b414fcd5be0b00 Chris Wilson 2019-05-28 291 #define MIN_CHUNK_PAGES (SZ_1M >> PAGE_SHIFT) b414fcd5be0b00 Chris Wilson 2019-05-28 292 struct vm_area_struct *area = vmf->vma; cc662126b4134e Abdiel Janulgue 2019-12-04 293 struct i915_mmap_offset *mmo = area->vm_private_data; cc662126b4134e Abdiel Janulgue 2019-12-04 294 struct drm_i915_gem_object *obj = mmo->obj; b414fcd5be0b00 Chris Wilson 2019-05-28 295 struct drm_device *dev = obj->base.dev; b414fcd5be0b00 Chris Wilson 2019-05-28 296 struct drm_i915_private *i915 = to_i915(dev); d858d5695f3897 Daniele Ceraolo Spurio 2019-06-13 297 struct intel_runtime_pm *rpm = &i915->runtime_pm; 5c24c9d227e9bb Michał Winiarski 2021-12-19 298 struct i915_ggtt *ggtt = to_gt(i915)->ggtt; b414fcd5be0b00 Chris Wilson 2019-05-28 299 bool write = area->vm_flags & VM_WRITE; 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 300 struct i915_gem_ww_ctx ww; b414fcd5be0b00 Chris Wilson 2019-05-28 301 intel_wakeref_t wakeref; b414fcd5be0b00 Chris Wilson 2019-05-28 302 struct i915_vma *vma; b414fcd5be0b00 Chris Wilson 2019-05-28 303 pgoff_t page_offset; b414fcd5be0b00 Chris Wilson 2019-05-28 304 int srcu; b414fcd5be0b00 Chris Wilson 2019-05-28 305 int ret; b414fcd5be0b00 Chris Wilson 2019-05-28 306 b414fcd5be0b00 Chris Wilson 2019-05-28 307 /* We don't use vmf->pgoff since that has the fake offset */ b414fcd5be0b00 Chris Wilson 2019-05-28 308 page_offset = (vmf->address - area->vm_start) >> PAGE_SHIFT; b414fcd5be0b00 Chris Wilson 2019-05-28 309 b414fcd5be0b00 Chris Wilson 2019-05-28 310 trace_i915_gem_object_fault(obj, page_offset, true, write); b414fcd5be0b00 Chris Wilson 2019-05-28 311 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 312 wakeref = intel_runtime_pm_get(rpm); 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 313 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 314 i915_gem_ww_ctx_init(&ww, true); 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 315 retry: 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 316 ret = i915_gem_object_lock(obj, &ww); b414fcd5be0b00 Chris Wilson 2019-05-28 317 if (ret) 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 318 goto err_rpm; b414fcd5be0b00 Chris Wilson 2019-05-28 319 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 320 /* Sanity check that we allow writing into this object */ 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 321 if (i915_gem_object_is_readonly(obj) && write) { 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 322 ret = -EFAULT; 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 323 goto err_rpm; 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 324 } b414fcd5be0b00 Chris Wilson 2019-05-28 325 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 326 ret = i915_gem_object_pin_pages(obj); eebab60f224fcf Chris Wilson 2019-09-12 327 if (ret) b414fcd5be0b00 Chris Wilson 2019-05-28 328 goto err_rpm; b414fcd5be0b00 Chris Wilson 2019-05-28 329 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 330 ret = intel_gt_reset_trylock(ggtt->vm.gt, &srcu); 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 331 if (ret) 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 332 goto err_pages; 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 333 b414fcd5be0b00 Chris Wilson 2019-05-28 334 /* Now pin it into the GTT as needed */ 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 335 vma = i915_gem_object_ggtt_pin_ww(obj, &ww, NULL, 0, 0, b414fcd5be0b00 Chris Wilson 2019-05-28 336 PIN_MAPPABLE | 6846895fde0555 Chris Wilson 2019-08-21 337 PIN_NONBLOCK /* NOWARN */ | ebfdf5cd806b3b Chris Wilson 2019-08-26 338 PIN_NOEVICT); 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 339 if (IS_ERR(vma) && vma != ERR_PTR(-EDEADLK)) { b414fcd5be0b00 Chris Wilson 2019-05-28 340 /* Use a partial view if it is bigger than available space */ b414fcd5be0b00 Chris Wilson 2019-05-28 341 struct i915_ggtt_view view = b414fcd5be0b00 Chris Wilson 2019-05-28 342 compute_partial_view(obj, page_offset, MIN_CHUNK_PAGES); b414fcd5be0b00 Chris Wilson 2019-05-28 343 unsigned int flags; b414fcd5be0b00 Chris Wilson 2019-05-28 344 6846895fde0555 Chris Wilson 2019-08-21 345 flags = PIN_MAPPABLE | PIN_NOSEARCH; b414fcd5be0b00 Chris Wilson 2019-05-28 346 if (view.type == I915_GGTT_VIEW_NORMAL) b414fcd5be0b00 Chris Wilson 2019-05-28 347 flags |= PIN_NONBLOCK; /* avoid warnings for pinned */ b414fcd5be0b00 Chris Wilson 2019-05-28 348 b414fcd5be0b00 Chris Wilson 2019-05-28 349 /* b414fcd5be0b00 Chris Wilson 2019-05-28 350 * Userspace is now writing through an untracked VMA, abandon b414fcd5be0b00 Chris Wilson 2019-05-28 351 * all hope that the hardware is able to track future writes. b414fcd5be0b00 Chris Wilson 2019-05-28 352 */ b414fcd5be0b00 Chris Wilson 2019-05-28 353 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 354 vma = i915_gem_object_ggtt_pin_ww(obj, &ww, &view, 0, 0, flags); 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 355 if (IS_ERR(vma) && vma != ERR_PTR(-EDEADLK)) { b414fcd5be0b00 Chris Wilson 2019-05-28 356 flags = PIN_MAPPABLE; b414fcd5be0b00 Chris Wilson 2019-05-28 357 view.type = I915_GGTT_VIEW_PARTIAL; 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 358 vma = i915_gem_object_ggtt_pin_ww(obj, &ww, &view, 0, 0, flags); b414fcd5be0b00 Chris Wilson 2019-05-28 359 } 8f9fb61caed13e Chris Wilson 2019-09-02 360 e849f7e708600a Maarten Lankhorst 2022-01-14 361 /* e849f7e708600a Maarten Lankhorst 2022-01-14 362 * The entire mappable GGTT is pinned? Unexpected! e849f7e708600a Maarten Lankhorst 2022-01-14 363 * Try to evict the object we locked too, as normally we skip it e849f7e708600a Maarten Lankhorst 2022-01-14 364 * due to lack of short term pinning inside execbuf. e849f7e708600a Maarten Lankhorst 2022-01-14 365 */ e849f7e708600a Maarten Lankhorst 2022-01-14 366 if (vma == ERR_PTR(-ENOSPC)) { e849f7e708600a Maarten Lankhorst 2022-01-14 367 ret = mutex_lock_interruptible(&ggtt->vm.mutex); e849f7e708600a Maarten Lankhorst 2022-01-14 368 if (!ret) { 6945c53bc712cf Maarten Lankhorst 2022-01-17 @369 ret = i915_gem_evict_vm(&ggtt->vm, &ww); e849f7e708600a Maarten Lankhorst 2022-01-14 370 mutex_unlock(&ggtt->vm.mutex); e849f7e708600a Maarten Lankhorst 2022-01-14 371 } e849f7e708600a Maarten Lankhorst 2022-01-14 372 if (ret) e849f7e708600a Maarten Lankhorst 2022-01-14 373 goto err_reset; e849f7e708600a Maarten Lankhorst 2022-01-14 374 vma = i915_gem_object_ggtt_pin_ww(obj, &ww, &view, 0, 0, flags); e849f7e708600a Maarten Lankhorst 2022-01-14 375 } b414fcd5be0b00 Chris Wilson 2019-05-28 376 } b414fcd5be0b00 Chris Wilson 2019-05-28 377 if (IS_ERR(vma)) { b414fcd5be0b00 Chris Wilson 2019-05-28 378 ret = PTR_ERR(vma); 2850748ef8763a Chris Wilson 2019-10-04 379 goto err_reset; 2850748ef8763a Chris Wilson 2019-10-04 380 } 2850748ef8763a Chris Wilson 2019-10-04 381 2850748ef8763a Chris Wilson 2019-10-04 382 /* Access to snoopable pages through the GTT is incoherent. */ 2850748ef8763a Chris Wilson 2019-10-04 383 if (obj->cache_level != I915_CACHE_NONE && !HAS_LLC(i915)) { 2850748ef8763a Chris Wilson 2019-10-04 384 ret = -EFAULT; 2850748ef8763a Chris Wilson 2019-10-04 385 goto err_unpin; b414fcd5be0b00 Chris Wilson 2019-05-28 386 } b414fcd5be0b00 Chris Wilson 2019-05-28 387 b414fcd5be0b00 Chris Wilson 2019-05-28 388 ret = i915_vma_pin_fence(vma); b414fcd5be0b00 Chris Wilson 2019-05-28 389 if (ret) b414fcd5be0b00 Chris Wilson 2019-05-28 390 goto err_unpin; b414fcd5be0b00 Chris Wilson 2019-05-28 391 b414fcd5be0b00 Chris Wilson 2019-05-28 392 /* Finally, remap it using the new GTT offset */ 0e4fe0c9f2f981 Matthew Auld 2021-05-27 393 ret = remap_io_mapping(area, 0e4fe0c9f2f981 Matthew Auld 2021-05-27 394 area->vm_start + (vma->ggtt_view.partial.offset << PAGE_SHIFT), b414fcd5be0b00 Chris Wilson 2019-05-28 395 (ggtt->gmadr.start + vma->node.start) >> PAGE_SHIFT, 0e4fe0c9f2f981 Matthew Auld 2021-05-27 396 min_t(u64, vma->size, area->vm_end - area->vm_start), 0e4fe0c9f2f981 Matthew Auld 2021-05-27 397 &ggtt->iomap); b414fcd5be0b00 Chris Wilson 2019-05-28 398 if (ret) b414fcd5be0b00 Chris Wilson 2019-05-28 399 goto err_fence; b414fcd5be0b00 Chris Wilson 2019-05-28 400 d858d5695f3897 Daniele Ceraolo Spurio 2019-06-13 401 assert_rpm_wakelock_held(rpm); b7d151ba4b295a Chris Wilson 2019-08-22 402 b7d151ba4b295a Chris Wilson 2019-08-22 403 /* Mark as being mmapped into userspace for later revocation */ 5c24c9d227e9bb Michał Winiarski 2021-12-19 404 mutex_lock(&to_gt(i915)->ggtt->vm.mutex); b414fcd5be0b00 Chris Wilson 2019-05-28 405 if (!i915_vma_set_userfault(vma) && !obj->userfault_count++) 5c24c9d227e9bb Michał Winiarski 2021-12-19 406 list_add(&obj->userfault_link, &to_gt(i915)->ggtt->userfault_list); 5c24c9d227e9bb Michał Winiarski 2021-12-19 407 mutex_unlock(&to_gt(i915)->ggtt->vm.mutex); b7d151ba4b295a Chris Wilson 2019-08-22 408 cc662126b4134e Abdiel Janulgue 2019-12-04 409 /* Track the mmo associated with the fenced vma */ cc662126b4134e Abdiel Janulgue 2019-12-04 410 vma->mmo = mmo; cc662126b4134e Abdiel Janulgue 2019-12-04 411 1a839e016e4964 Lucas De Marchi 2021-10-05 412 if (CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND) 5c24c9d227e9bb Michał Winiarski 2021-12-19 413 intel_wakeref_auto(&to_gt(i915)->ggtt->userfault_wakeref, b414fcd5be0b00 Chris Wilson 2019-05-28 414 msecs_to_jiffies_timeout(CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND)); b414fcd5be0b00 Chris Wilson 2019-05-28 415 5028851cdfdf78 Chris Wilson 2019-09-20 416 if (write) { 5028851cdfdf78 Chris Wilson 2019-09-20 417 GEM_BUG_ON(!i915_gem_object_has_pinned_pages(obj)); b414fcd5be0b00 Chris Wilson 2019-05-28 418 i915_vma_set_ggtt_write(vma); 5028851cdfdf78 Chris Wilson 2019-09-20 419 obj->mm.dirty = true; 5028851cdfdf78 Chris Wilson 2019-09-20 420 } b414fcd5be0b00 Chris Wilson 2019-05-28 421 b414fcd5be0b00 Chris Wilson 2019-05-28 422 err_fence: b414fcd5be0b00 Chris Wilson 2019-05-28 423 i915_vma_unpin_fence(vma); b414fcd5be0b00 Chris Wilson 2019-05-28 424 err_unpin: b414fcd5be0b00 Chris Wilson 2019-05-28 425 __i915_vma_unpin(vma); b414fcd5be0b00 Chris Wilson 2019-05-28 426 err_reset: cb823ed9915b0d Chris Wilson 2019-07-12 427 intel_gt_reset_unlock(ggtt->vm.gt, srcu); 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 428 err_pages: 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 429 i915_gem_object_unpin_pages(obj); b414fcd5be0b00 Chris Wilson 2019-05-28 430 err_rpm: 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 431 if (ret == -EDEADLK) { 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 432 ret = i915_gem_ww_ctx_backoff(&ww); 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 433 if (!ret) 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 434 goto retry; 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 435 } 3c0ffa277ef6fb Maarten Lankhorst 2020-08-19 436 i915_gem_ww_ctx_fini(&ww); d858d5695f3897 Daniele Ceraolo Spurio 2019-06-13 437 intel_runtime_pm_put(rpm, wakeref); cc662126b4134e Abdiel Janulgue 2019-12-04 438 return i915_error_to_vmf_fault(ret); b414fcd5be0b00 Chris Wilson 2019-05-28 439 } b414fcd5be0b00 Chris Wilson 2019-05-28 440 :::::: The code at line 369 was first introduced by commit :::::: 6945c53bc712cf4a28a46fe46c2bd8526ea261d1 drm/i915: Add locking to i915_gem_evict_vm(), v3. :::::: TO: Maarten Lankhorst :::::: CC: Maarten Lankhorst --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org