2017-02-13 17:15:18 +00:00
/*
* Copyright © 2016 Intel Corporation
*
* Permission is hereby granted , free of charge , to any person obtaining a
* copy of this software and associated documentation files ( the " Software " ) ,
* to deal in the Software without restriction , including without limitation
* the rights to use , copy , modify , merge , publish , distribute , sublicense ,
* and / or sell copies of the Software , and to permit persons to whom the
* Software is furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice ( including the next
* paragraph ) shall be included in all copies or substantial portions of the
* Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING
* FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE .
*
*/
# include "mock_gtt.h"
static void mock_insert_page ( struct i915_address_space * vm ,
dma_addr_t addr ,
u64 offset ,
enum i915_cache_level level ,
u32 flags )
{
}
static void mock_insert_entries ( struct i915_address_space * vm ,
2022-01-10 18:22:15 +01:00
struct i915_vma_resource * vma_res ,
2017-02-13 17:15:18 +00:00
enum i915_cache_level level , u32 flags )
{
}
2020-07-29 17:42:17 +01:00
static void mock_bind_ppgtt ( struct i915_address_space * vm ,
struct i915_vm_pt_stash * stash ,
2022-01-10 18:22:15 +01:00
struct i915_vma_resource * vma_res ,
2020-07-29 17:42:17 +01:00
enum i915_cache_level cache_level ,
u32 flags )
2017-02-13 17:15:18 +00:00
{
GEM_BUG_ON ( flags & I915_VMA_GLOBAL_BIND ) ;
2022-01-10 18:22:15 +01:00
vma_res - > bound_flags | = flags ;
2017-02-13 17:15:18 +00:00
}
2020-07-03 11:25:19 +01:00
static void mock_unbind_ppgtt ( struct i915_address_space * vm ,
2022-01-10 18:22:15 +01:00
struct i915_vma_resource * vma_res )
2017-02-13 17:15:18 +00:00
{
}
static void mock_cleanup ( struct i915_address_space * vm )
{
}
2020-01-07 13:40:09 +00:00
static void mock_clear_range ( struct i915_address_space * vm ,
u64 start , u64 length )
{
}
2019-06-11 10:12:38 +01:00
struct i915_ppgtt * mock_ppgtt ( struct drm_i915_private * i915 , const char * name )
2017-02-13 17:15:18 +00:00
{
2019-06-11 10:12:38 +01:00
struct i915_ppgtt * ppgtt ;
2017-02-13 17:15:18 +00:00
ppgtt = kzalloc ( sizeof ( * ppgtt ) , GFP_KERNEL ) ;
if ( ! ppgtt )
return NULL ;
2021-12-14 21:33:37 +02:00
ppgtt - > vm . gt = to_gt ( i915 ) ;
2018-06-05 16:37:58 +01:00
ppgtt - > vm . i915 = i915 ;
ppgtt - > vm . total = round_down ( U64_MAX , PAGE_SIZE ) ;
2021-01-28 14:31:23 +01:00
ppgtt - > vm . dma = i915 - > drm . dev ;
2018-06-05 16:37:58 +01:00
2019-01-14 21:59:56 +00:00
i915_address_space_init ( & ppgtt - > vm , VM_CLASS_PPGTT ) ;
2018-06-05 16:37:58 +01:00
2020-07-29 17:42:18 +01:00
ppgtt - > vm . alloc_pt_dma = alloc_pt_dma ;
2021-12-08 19:46:12 +05:30
ppgtt - > vm . alloc_scratch_dma = alloc_pt_dma ;
2020-07-29 17:42:18 +01:00
2020-01-07 13:40:09 +00:00
ppgtt - > vm . clear_range = mock_clear_range ;
2018-06-05 16:37:58 +01:00
ppgtt - > vm . insert_page = mock_insert_page ;
ppgtt - > vm . insert_entries = mock_insert_entries ;
ppgtt - > vm . cleanup = mock_cleanup ;
2017-02-13 17:15:18 +00:00
2018-06-07 16:40:46 +01:00
ppgtt - > vm . vma_ops . bind_vma = mock_bind_ppgtt ;
ppgtt - > vm . vma_ops . unbind_vma = mock_unbind_ppgtt ;
2017-02-13 17:15:18 +00:00
return ppgtt ;
}
2020-07-29 17:42:17 +01:00
static void mock_bind_ggtt ( struct i915_address_space * vm ,
struct i915_vm_pt_stash * stash ,
2022-01-10 18:22:15 +01:00
struct i915_vma_resource * vma_res ,
2020-07-29 17:42:17 +01:00
enum i915_cache_level cache_level ,
u32 flags )
2017-02-13 17:15:18 +00:00
{
}
2020-07-03 11:25:19 +01:00
static void mock_unbind_ggtt ( struct i915_address_space * vm ,
2022-01-10 18:22:15 +01:00
struct i915_vma_resource * vma_res )
2017-02-13 17:15:18 +00:00
{
}
2021-12-19 23:25:00 +02:00
void mock_init_ggtt ( struct intel_gt * gt )
2017-02-13 17:15:18 +00:00
{
2021-12-19 23:25:00 +02:00
struct i915_ggtt * ggtt = gt - > ggtt ;
2017-02-13 17:15:18 +00:00
2021-12-19 23:25:00 +02:00
ggtt - > vm . gt = gt ;
ggtt - > vm . i915 = gt - > i915 ;
2019-01-14 21:59:56 +00:00
ggtt - > vm . is_ggtt = true ;
2017-02-13 17:15:18 +00:00
2017-12-11 15:18:20 +00:00
ggtt - > gmadr = ( struct resource ) DEFINE_RES_MEM ( 0 , 2048 * PAGE_SIZE ) ;
ggtt - > mappable_end = resource_size ( & ggtt - > gmadr ) ;
2018-06-05 16:37:58 +01:00
ggtt - > vm . total = 4096 * PAGE_SIZE ;
2020-07-29 17:42:18 +01:00
ggtt - > vm . alloc_pt_dma = alloc_pt_dma ;
2021-12-08 19:46:12 +05:30
ggtt - > vm . alloc_scratch_dma = alloc_pt_dma ;
2020-07-29 17:42:18 +01:00
2020-01-07 13:40:09 +00:00
ggtt - > vm . clear_range = mock_clear_range ;
2018-06-05 16:37:58 +01:00
ggtt - > vm . insert_page = mock_insert_page ;
ggtt - > vm . insert_entries = mock_insert_entries ;
ggtt - > vm . cleanup = mock_cleanup ;
2018-06-07 16:40:46 +01:00
ggtt - > vm . vma_ops . bind_vma = mock_bind_ggtt ;
ggtt - > vm . vma_ops . unbind_vma = mock_unbind_ggtt ;
2019-01-14 21:59:56 +00:00
i915_address_space_init ( & ggtt - > vm , VM_CLASS_GGTT ) ;
2017-02-13 17:15:18 +00:00
}
2019-01-21 22:20:49 +00:00
void mock_fini_ggtt ( struct i915_ggtt * ggtt )
2017-02-13 17:15:18 +00:00
{
2018-06-05 16:37:58 +01:00
i915_address_space_fini ( & ggtt - > vm ) ;
2017-02-13 17:15:18 +00:00
}