From patchwork Tue Feb 25 10:41:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mikolaj Wasiak X-Patchwork-Id: 13989776 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A06F5C021B2 for ; Tue, 25 Feb 2025 10:42:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 350A510E611; Tue, 25 Feb 2025 10:42:30 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="jczvfUu5"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by gabe.freedesktop.org (Postfix) with ESMTPS id A8A3210E611 for ; Tue, 25 Feb 2025 10:42: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=1740480149; x=1772016149; h=date:from:to:cc:subject:message-id:mime-version; bh=vSajBp9nNwQkf18CjsL6P6cUxYymowA1GVOx7eKzVuk=; b=jczvfUu5zZwiszI9KquN3vmYJhb4PgRQvPeYhc/Sh28wEItfDrN++8Tp Fxib+i/07RZ418udWclYfywJ3FaQ14b/JT18cbnBs3KCCnba2aj+hcb/T 6KQnQT+eAKaxv4q/n46WIZUG6OEiRquLBsYNsCAqOEke4cGgLiWPJl03S xdvWK7BlIRk65f9xxf8UMEFm4N27jRsd/E+RhVuW4tCLvONrr/HtF918k Ytd4apV1QeSrkbaqcUkGrHfIM/nzRRIza2nekkl21guXv3/tFoGsog5Qy UqcxUU84UlncBlbEwroNBgh7aoZFfMU2CfT40mjNP4SJFL8t2iU7jOKSD Q==; X-CSE-ConnectionGUID: VbACNAPcS4C3hay9MNl+kQ== X-CSE-MsgGUID: V1Cpq30UQaSP7qpKmhvv8A== X-IronPort-AV: E=McAfee;i="6700,10204,11355"; a="52276666" X-IronPort-AV: E=Sophos;i="6.13,314,1732608000"; d="scan'208";a="52276666" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Feb 2025 02:42:29 -0800 X-CSE-ConnectionGUID: 9TASflUbSVW4kjhscSRJPw== X-CSE-MsgGUID: XD9kEvxcTpuhT/FuCI0DXQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.13,314,1732608000"; d="scan'208";a="121328706" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa004.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Feb 2025 02:42:28 -0800 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 25 Feb 2025 02:42:27 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14 via Frontend Transport; Tue, 25 Feb 2025 02:42:27 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.170) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.44; Tue, 25 Feb 2025 02:42:27 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KJRG9F10HS7w1UKLOL0YVqi+53g7vYcwCoPjE7Etab32orQumoBOJCiKBf9dgLOMVZUdTaB6woKJzN3nWpMihlFJGIfHGIAdFYq3VmlThyNwUyZjUB4067s014ravdpaw7bfdyUD0ZACk4joZMgxVxTqpiwApNAS6UIDjOEWbMJ8t0vR/QkxjyYolbgpXyYxzJnvP6MWEIz6ELFBFTLtSHml04wMFpojILvYCkPohAq4924EHbYB7/PlG8UfYQ+Jy0frGWdqZHed/sKekAFPsUCLXbxAdaDhhNDW+pNFP3Zzbu6EYiiiNcDDsumJk/98PKnIF5atBQWAEtAMg2D8QQ== 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=u8XJQAB3kFIv5uLcmCTG85beyK4XTsNz+LTuuQErnpM=; b=RCOXpaT46LYWF2/dvr1FufNQGxzr/yvVxnaOo0+ovSje+ZF5Q2Fjlze+Io6FvNsPPOwW5Od3wfpyG5YuLaOuEHyC1yCaxdCu++ihzBvarA9sHtmK51XudQexL3ss6UYoq7FSVyldLPmLU6+VkZ/tlMCjg0a36GbEwPBIfbBOGsMxw0BQPI04lRTtKxUS1TGftFM3yb1s9oT62rhrysYWExGtXdmbuSMBfxHVeGon8YHFcjQkjVhgek5tzfwWFcqaWLHFqSab3d8FQOUy6NvuqAkAQ5gXE+Juhyizw1hU14aVRNCadqjHg6I5LEWGRcIlkgi5fRJzS79jgEcWTfdHgw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from BL3PR11MB6409.namprd11.prod.outlook.com (2603:10b6:208:3b8::18) by SJ0PR11MB6671.namprd11.prod.outlook.com (2603:10b6:a03:44b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.20; Tue, 25 Feb 2025 10:42:12 +0000 Received: from BL3PR11MB6409.namprd11.prod.outlook.com ([fe80::74e:6abd:bab0:3d0b]) by BL3PR11MB6409.namprd11.prod.outlook.com ([fe80::74e:6abd:bab0:3d0b%3]) with mapi id 15.20.8466.016; Tue, 25 Feb 2025 10:42:12 +0000 Date: Tue, 25 Feb 2025 11:41:56 +0100 From: Mikolaj Wasiak To: CC: , , , Subject: [PATCH] i915/selftest/igt_mmap: let mmap tests run in kthread Message-ID: Content-Disposition: inline X-ClientProxiedBy: VE1PR03CA0049.eurprd03.prod.outlook.com (2603:10a6:803:118::38) To BL3PR11MB6409.namprd11.prod.outlook.com (2603:10b6:208:3b8::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL3PR11MB6409:EE_|SJ0PR11MB6671:EE_ X-MS-Office365-Filtering-Correlation-Id: d98d147c-fb8b-4e66-733b-08dd55890fa0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?VUg91aETn9tZ54VWB3C6kYKthVVeeUE?= =?utf-8?q?T+fAVq6Z6n9qqwqr4vw4MRJJvJeV1BkyPfLTw6Lbs82wUEbp/XWdWPml/657F3W1f?= =?utf-8?q?pa9diLmaDFb0zEDJJdo2j05A2PL/vri7OVoswD/fakf4lhN/2+vyPvpMSxdRUAXbC?= =?utf-8?q?r5FMs1/2mzLTDVN8QtOTGGoqAjgiBU/ZBDdlwiMx0uAlQeAFd1kOvf40yvYqE60D+?= =?utf-8?q?+wYtRiaJZ+S2Obhq1QOZsBlPUJlWJGT8Z8p5JlXaeyniOroVnDYR5bxDJl+pjiaTp?= =?utf-8?q?oIho5FoLQQRf2wEg4WNDM8ZbY36T2mPv8IY8Lu0LiLAg2BepPrHf7EJ+PvYsoM+ZV?= =?utf-8?q?FK+NZ7T4KmjHT1ZDK9bsfzuJUwztM3zjx4dg9Uv6tJnW3qrx7UebVmanlINmNEkF3?= =?utf-8?q?ewLykTHKdIWSUS5hUGR1WczZxsqHpR0C3wdQpLmr0Khx24mmjjmFJq75ZxJhZP04s?= =?utf-8?q?zmfkU/99hrNetIwC1uKlZvHFAqgU1WycChlh/uFDvWaB2i0Ywu7q62Z2CcHIv5tuL?= =?utf-8?q?rz5UGyM4+dYWJo5XqfCEQU81w1hhRH8LMAOW2N+mfCQ9t63zxub/IvBtlFysFre3r?= =?utf-8?q?Sr9EaHIqP2E6U2GgMZKby6NUC8kYo5mxoY72N8QG0aMh+srdg0CtzlsUXdqxKAGeG?= =?utf-8?q?7sggVtYssPj6OlAn/CASGDNiUKtDDkPj+FaCzM/CX/0ci9E7blfKy9k9uIx1rtX+6?= =?utf-8?q?rxMUPsyQd+mE42Wmur+3bXBpJrai8fE/3Far0vE9gfwJKvjj3Ly9hhBHy8l9HoeJj?= =?utf-8?q?TidsHnymjwMNbzxrgEoWkhOR6J0iun+r+bF/JCjJvuL2WNR5pmvJbuvIgPecHbFni?= =?utf-8?q?FKzmKl/NbKDdHzTNKpDNjyGlrYiwcry8j9nHWrpvPVjXg2weYvnwOCi/rOAuqWasl?= =?utf-8?q?9SgtFWVKVP5TRzXFUuJIZELSq+R+/MEjEyV5UlyoiiDvaSQhkW3W9NVrRbI7hFr9o?= =?utf-8?q?atpHk8Oco50Wnk5QdolVmMNx7yRrrZ2jTPvHVYUrgj9ruPwJYUQAbnEQj3rCONjyD?= =?utf-8?q?B37mGwMN+bO6wG75VKW7HtUJh8GifEHA+KvMT4sKgLg4ViKnenaSsdd+pm+tcLQwA?= =?utf-8?q?O9X9Y3CbZLoaclMO60aBjyXP4tEMfL9Jxx2BRy7NpE249nPaf/ynlSAhHnUJH7oWm?= =?utf-8?q?wzt0cPU/ffBdJ2oeysuSZ/C+Rji65bnoysnbPAuHqQ2srSIXvddQP/BHFe6uFUeId?= =?utf-8?q?3FrhkWitw78ptvgisy1Terhxm5/EUzmXvCNSDEONjtAkSuE8Bf9D1iGN5/4jyhpe2?= =?utf-8?q?XxOZL0YnPipWh+ssVpL/boaY3XvIWD85f14nKVZh18Vl7ybljWXsREW+OhWAIffYK?= =?utf-8?q?2GW0Na5Aw4Mw?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL3PR11MB6409.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?uwdh8MknYZjyhcpX0MiTqycDAaUl?= =?utf-8?q?UPmRVH6tquTEfnXfE1sIrn4v0zkBySceBPFfcEdGFATg6yo0FuYye0HzNtIhPt4RP?= =?utf-8?q?ZZHm98YD1gRcaAfKZdR//w0trOoJIa069ZUq+oahus6f96L3khvalAkOhoVfjKKbv?= =?utf-8?q?sEI6jwqeN2woVBYDSgpztsOkAHFvKNEb4oSLhBeYVxgwSRZEDDcXkvfg54l4853Qw?= =?utf-8?q?IaTTPDtBWRLpTTKLfVDXivy5LXM85oKDeZWCWbrKQpiVRle6lmza281uTYqFIk0Ny?= =?utf-8?q?yMi5582hJqQXprVcqLXT2tElRc2qLXMKMTQ2PvIpxGqNmP6wzbFmPjgJjF9kV+bf7?= =?utf-8?q?WkTHVXnQ+mS6P/oAcflrHKNDOAnocuoFeMXNQ3AVYh5cEt16FX5bAqmtREY1XxcT/?= =?utf-8?q?72e87pESt7Cn0n4M1wVeuPkkeWUdphIIXxn0mpkmlWKst1XDOgSrW5joHTdWsxI8W?= =?utf-8?q?cBpHie2pFqVeE8TiZs5Xlfs9KFqNt5wnrfNsDcoD8zr9lX2I8UblCNrz3aucbP5Fr?= =?utf-8?q?LDzijYVbZybs7DYDnrrVQZpBxW0sFGW69qZiI1vsJDe3BnLKCzz/17X8RffhVEiUx?= =?utf-8?q?Xk99tEY9traf2fzVj0m+MIr6PeTNxBPi8LmMBzTsLhSt5YWG71iHcZID+8QLysYoR?= =?utf-8?q?OGWCRL4H48VPqmKddhKvd3miShF0htJKK9908G6J/Ii9oXB3ILDsMSUNoEFuQaiEn?= =?utf-8?q?lpI1GdN7fKhzmaEVFcSERYkcDA55TN2ksh3cIcwfy+OqtxxdB8oeblZegWMkNFEUL?= =?utf-8?q?TcIU6ZE3Yi1KEG7Aeh6PCGvSubH4WnhLeDYb7CuRQfgEulD6C7wN6rF8ZpN854noi?= =?utf-8?q?tWht+uzs3FCQPJiE/Lx1nVQhpvdCl+mMHuF29+xl9rfaig8cINuet0AeE6fUaO2GT?= =?utf-8?q?t0NKZhKNGgleNJPZo9Kf3KpxVIk4WBOuvZ6RT46q4qC1TEn4k90sMv8QiUVF7CjJZ?= =?utf-8?q?/WnYqIBgxutOOk/d1v5AuUH2FPzRbbIC3WEePeRifNTDxZIaUnhosAWPMM6LGqvoh?= =?utf-8?q?s0sNNyFLEyo4EapG2r45o7WLwD2YQgrNgZlNChi4UzQlv/XXiSCdcWqJF+un9sxfr?= =?utf-8?q?p+pFnjmkbF+RzkJSn/+7/mzCwVxHOMjRiz6YrmCDBRdNgTJwcuz8pECn3sSv1Wycy?= =?utf-8?q?Zokx3d1bQ+G1WcCRVDddyQ+5TwL0XW1vIu5oBwmz9M6kkaxBoMfx5aWP0HyBpVp64?= =?utf-8?q?vrSxuDfawQKSdX5xvU3IhhEILjK6mO6iG+O2qBD/O2v0h0eXAkWd8ewgHS+lanR0i?= =?utf-8?q?7Q/cDrcj4McLTnxoCe2iubxzQZ0IXEnOAjtlNnOApNcO+J9ZpS1qTlRdbTf7kd6dX?= =?utf-8?q?aSH4xMYw5CBgxtw+xXAIELiIibqjAWExI/Lbyc06u4Zd2oRQvn4x0qu94XesanTBf?= =?utf-8?q?i2HtblGGnnJ98euVdz47SQa4o0YL5aU4VdwDQkEuB+KNtK5PO0Qwlj46P/4yUuNaf?= =?utf-8?q?GWDCebICm0joLYU/kffKqqzLYf9Cd86iUXZKiDxPWED7MSMe8fI/PtNF4aTRB25mU?= =?utf-8?q?/jDp25885qc12r56/XdWddbIMS/rmigmBg=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: d98d147c-fb8b-4e66-733b-08dd55890fa0 X-MS-Exchange-CrossTenant-AuthSource: BL3PR11MB6409.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2025 10:42:12.0198 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +CYbRc334FbN32HjjYI0Xf/YD1qM4d6ay8eT4ASzfbQDLLp2XsyF98QyLq3onxeMsr4Xm6PSj/wPq9j9afHPWpPKHxJZcGqwpQkYO7LJ18M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB6671 X-OriginatorOrg: intel.com X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" When driver is loaded on system with numa nodes it might be run in kthread. This makes it impossible to use current->mm in selftests which currently creates null pointer exception. This patch allows selftest to use current->mm by using active_mm. Signed-off-by: Mikolaj Wasiak Reviewed-by: Eugene Kobyak --- This patch is mostly damage control. By using active_mm we expose our test to foreign memory mapping, which sometimes makes the test fail. That is still better than just having null pointer exception in driver code. .../drm/i915/gem/selftests/i915_gem_mman.c | 61 ++++++++++++++----- drivers/gpu/drm/i915/selftests/igt_mmap.c | 19 ++++++ drivers/gpu/drm/i915/selftests/igt_mmap.h | 3 + 3 files changed, 67 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c index 804f74084bd4..34d22a99da65 100644 --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c @@ -974,6 +974,11 @@ static int igt_mmap(void *arg) struct drm_i915_private *i915 = arg; struct intel_memory_region *mr; enum intel_region_id id; + int err; + + err = igt_mmap_enable_current(); + if (err) + return err; for_each_memory_region(mr, i915, id) { unsigned long sizes[] = { @@ -988,7 +993,6 @@ static int igt_mmap(void *arg) for (i = 0; i < ARRAY_SIZE(sizes); i++) { struct drm_i915_gem_object *obj; - int err; obj = __i915_gem_object_create_user(i915, sizes[i], &mr, 1); if (obj == ERR_PTR(-ENODEV)) @@ -1005,11 +1009,13 @@ static int igt_mmap(void *arg) i915_gem_object_put(obj); if (err) - return err; + goto out_disable_current; } } - return 0; +out_disable_current: + igt_mmap_disable_current(); + return err; } static void igt_close_objects(struct drm_i915_private *i915, @@ -1310,13 +1316,17 @@ static int igt_mmap_migrate(void *arg) struct intel_memory_region *system = i915->mm.regions[INTEL_REGION_SMEM]; struct intel_memory_region *mr; enum intel_region_id id; + int err; + + err = igt_mmap_enable_current(); + if (err) + return err; for_each_memory_region(mr, i915, id) { struct intel_memory_region *mixed[] = { mr, system }; struct intel_memory_region *single[] = { mr }; struct ttm_resource_manager *man = mr->region_private; struct resource saved_io; - int err; if (mr->private) continue; @@ -1400,10 +1410,12 @@ static int igt_mmap_migrate(void *arg) i915_ttm_buddy_man_force_visible_size(man, resource_size(&mr->io) >> PAGE_SHIFT); if (err) - return err; + goto out_disable_current; } - return 0; +out_disable_current: + igt_mmap_disable_current(); + return err; } static const char *repr_mmap_type(enum i915_mmap_type type) @@ -1506,10 +1518,14 @@ static int igt_mmap_access(void *arg) struct drm_i915_private *i915 = arg; struct intel_memory_region *mr; enum intel_region_id id; + int err; + + err = igt_mmap_enable_current(); + if (err) + return err; for_each_memory_region(mr, i915, id) { struct drm_i915_gem_object *obj; - int err; if (mr->private) continue; @@ -1533,10 +1549,12 @@ static int igt_mmap_access(void *arg) i915_gem_object_put(obj); if (err) - return err; + goto out_disable_current; } - return 0; +out_disable_current: + igt_mmap_disable_current(); + return err; } static int __igt_mmap_gpu(struct drm_i915_private *i915, @@ -1652,10 +1670,14 @@ static int igt_mmap_gpu(void *arg) struct drm_i915_private *i915 = arg; struct intel_memory_region *mr; enum intel_region_id id; + int err; + + err = igt_mmap_enable_current(); + if (err) + return err; for_each_memory_region(mr, i915, id) { struct drm_i915_gem_object *obj; - int err; if (mr->private) continue; @@ -1675,10 +1697,12 @@ static int igt_mmap_gpu(void *arg) i915_gem_object_put(obj); if (err) - return err; + goto out_disable_current; } - return 0; +out_disable_current: + igt_mmap_disable_current(); + return err; } static int check_present_pte(pte_t *pte, unsigned long addr, void *data) @@ -1806,10 +1830,14 @@ static int igt_mmap_revoke(void *arg) struct drm_i915_private *i915 = arg; struct intel_memory_region *mr; enum intel_region_id id; + int err; + + err = igt_mmap_enable_current(); + if (err) + return err; for_each_memory_region(mr, i915, id) { struct drm_i915_gem_object *obj; - int err; if (mr->private) continue; @@ -1829,10 +1857,12 @@ static int igt_mmap_revoke(void *arg) i915_gem_object_put(obj); if (err) - return err; + goto out_disable_current; } - return 0; +out_disable_current: + igt_mmap_disable_current(); + return err; } int i915_gem_mman_live_selftests(struct drm_i915_private *i915) @@ -1847,6 +1877,5 @@ int i915_gem_mman_live_selftests(struct drm_i915_private *i915) SUBTEST(igt_mmap_revoke), SUBTEST(igt_mmap_gpu), }; - return i915_live_subtests(tests, i915); } diff --git a/drivers/gpu/drm/i915/selftests/igt_mmap.c b/drivers/gpu/drm/i915/selftests/igt_mmap.c index e920a461bd36..5c63622879a2 100644 --- a/drivers/gpu/drm/i915/selftests/igt_mmap.c +++ b/drivers/gpu/drm/i915/selftests/igt_mmap.c @@ -50,3 +50,22 @@ unsigned long igt_mmap_offset(struct drm_i915_private *i915, fput(file); return addr; } + + +int igt_mmap_enable_current(void) +{ + if (current->flags & PF_KTHREAD) { + if (!current->active_mm) { + pr_info("Couldn't get userspace mm in kthread\n"); + return -ENODATA; + } + kthread_use_mm(current->active_mm); + } + return 0; +} + +void igt_mmap_disable_current(void) +{ + if (current->flags & PF_KTHREAD) + kthread_unuse_mm(current->active_mm); +} diff --git a/drivers/gpu/drm/i915/selftests/igt_mmap.h b/drivers/gpu/drm/i915/selftests/igt_mmap.h index acbe34d81a6d..58582396bdd7 100644 --- a/drivers/gpu/drm/i915/selftests/igt_mmap.h +++ b/drivers/gpu/drm/i915/selftests/igt_mmap.h @@ -18,4 +18,7 @@ unsigned long igt_mmap_offset(struct drm_i915_private *i915, unsigned long prot, unsigned long flags); +int igt_mmap_enable_current(void); +void igt_mmap_disable_current(void); + #endif /* IGT_MMAP_H */