From patchwork Tue Apr 5 15:08:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramalingam C X-Patchwork-Id: 12801710 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 87277C433F5 for ; Tue, 5 Apr 2022 15:08:01 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 658FB10E715; Tue, 5 Apr 2022 15:07:58 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 71C7010E70A; Tue, 5 Apr 2022 15:07:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649171276; x=1680707276; h=from:to:subject:date:message-id:mime-version: content-transfer-encoding; bh=N/0w0Quv4oMhaEpe6FYAGImWYpQbUM1iYG5c/wC+Bcg=; b=UqbrmTJ05KuHzp0jL2Bgy2hd2BtDeT5PDTOKPd9+BRLYOabyLeMKrODD TkszzXpszTuA/mzvsgMGnrQkPYL2yjJltTOCoSIY5ZWifk3n6BD4oNTuz SWch9yEjqIPCHLOLJjsLDUvpB1JHOI+4XQdFq3RMX1LXlahMOpaPF/8Tc WtMXIafRFYZzEOkrC0A28iAh4ZCbqu13kswiqr9HJXxanSyOIdc50/Jac 8/4IlQpBEijGYZdKHG3iAk3urrCWaUqjrh6lNXrxyCqNiN84hVSIAXkry yKvzicSFq1lsBdt9ra5EuZyCAQnaK75mYG8G0asBc3wJpG7dYnu/kLcXE g==; X-IronPort-AV: E=McAfee;i="6200,9189,10307"; a="240706442" X-IronPort-AV: E=Sophos;i="5.90,236,1643702400"; d="scan'208";a="240706442" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2022 08:07:56 -0700 X-IronPort-AV: E=Sophos;i="5.90,236,1643702400"; d="scan'208";a="641644290" Received: from ramaling-i9x.iind.intel.com ([10.203.144.108]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2022 08:07:54 -0700 From: Ramalingam C To: intel-gfx , dri-devel Date: Tue, 5 Apr 2022 20:38:31 +0530 Message-Id: <20220405150840.29351-1-ramalingam.c@intel.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v9 0/9] drm/i915/ttm: Evict and restore of compressed object 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" On Xe-HP and later devices, we use dedicated compression control state (CCS) stored in local memory for each surface, to support the 3D and media compression formats. The memory required for the CCS of the entire local memory is 1/256 of the local memory size. So before the kernel boot, the required memory is reserved for the CCS data and a secure register will be programmed with the CCS base address So when we allocate a object in local memory we dont need to explicitly allocate the space for ccs data. But when we evict the obj into the smem to hold the compression related data along with the obj we need smem space of obj_size + (obj_size/256). Hence when we create smem for an obj with lmem placement possibility we create with the extra space. When we are swapping out the local memory obj on flat-ccs capable platform, we need to capture the ccs data too along with main meory and we need to restore it when we are swapping in the content. When lmem object is swapped into a smem obj, smem obj will have the extra pages required to hold the ccs data corresponding to the lmem main memory. So main memory of lmem will be copied into the initial pages of the smem and then ccs data corresponding to the main memory will be copied to the subsequent pages of smem. Swapin happens exactly in reverse order. First main memory of lmem is restored from the smem's initial pages and the ccs data will be restored from the subsequent pages of smem. Extracting and restoring the CCS data is done through a special cmd called XY_CTRL_SURF_COPY_BLT v8 and v9: New patch for return value fix Fix a return error code Test-with: 20220405141050.16037-1-ramalingam.c@intel.com Ramalingam C (9): drm/i915/gt: use engine instance directly for offset drm/i915/gt: Use XY_FAST_COLOR_BLT to clear obj on graphics ver 12+ drm/i915/gt: Optimize the migration and clear loop drm/i915/gt: Pass the -EINVAL when emit_pte doesn't update any PTE drm/i915/gt: Clear compress metadata for Flat-ccs objects drm/i915/selftest_migrate: Consider the possible roundup of size drm/i915/selftest_migrate: Check CCS meta data clear drm/i915/gem: Add extra pages in ttm_tt for ccs data drm/i915/migrate: Evict and restore the flatccs capable lmem obj drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 30 +- drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 21 + drivers/gpu/drm/i915/gt/intel_migrate.c | 387 +++++++++++++++++-- drivers/gpu/drm/i915/gt/selftest_migrate.c | 253 ++++++++++-- 4 files changed, 631 insertions(+), 60 deletions(-)