habanalabs: duplicate HOP table props to MMU props
authorOhad Sharabi <osharabi@habana.ai>
Tue, 4 Jan 2022 12:42:50 +0000 (14:42 +0200)
committerOded Gabbay <ogabbay@kernel.org>
Mon, 28 Feb 2022 12:22:02 +0000 (14:22 +0200)
In order to support several device MMU blocks with different
architectures (e.g. different HOP table size) we need to move to
per-MMU properties rather than keeping those properties as ASIC
properties.

Refactoring the code to use "per-MMU proprties" is a major effort.

To start making the transition towards this goal but still support
taking the properties from ASIC properties (for code that currently
uses them) this patch copies some of the properties to the "per-MMU"
properties and later, when implementing the per-MMU properties, we
would be able to delete the MMU props from the ASIC props.

Signed-off-by: Ohad Sharabi <osharabi@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
drivers/misc/habanalabs/gaudi/gaudi.c
drivers/misc/habanalabs/goya/goya.c

index c58e21e2db3b4cf2ce4c46fa4b2879d070cfb7a6..f2242aa3baa226e67b02296e4b116ad505b27a18 100644 (file)
@@ -613,6 +613,9 @@ static int gaudi_set_fixed_properties(struct hl_device *hdev)
        prop->pmmu.page_size = PAGE_SIZE_4KB;
        prop->pmmu.num_hops = MMU_ARCH_5_HOPS;
        prop->pmmu.last_mask = LAST_MASK;
+       /* TODO: will be duplicated until implementing per-MMU props */
+       prop->pmmu.hop_table_size = prop->mmu_hop_table_size;
+       prop->pmmu.hop0_tables_total_size = prop->mmu_hop0_tables_total_size;
 
        /* PMMU and HPMMU are the same except of page size */
        memcpy(&prop->pmmu_huge, &prop->pmmu, sizeof(prop->pmmu));
index d8c6dea7c8099a30836b30e616b5207eefe462b7..3785fb33260d0bcb3bbb0ff8bcb128a887610324 100644 (file)
@@ -430,6 +430,9 @@ int goya_set_fixed_properties(struct hl_device *hdev)
        prop->dmmu.page_size = PAGE_SIZE_2MB;
        prop->dmmu.num_hops = MMU_ARCH_5_HOPS;
        prop->dmmu.last_mask = LAST_MASK;
+       /* TODO: will be duplicated until implementing per-MMU props */
+       prop->dmmu.hop_table_size = prop->mmu_hop_table_size;
+       prop->dmmu.hop0_tables_total_size = prop->mmu_hop0_tables_total_size;
 
        /* shifts and masks are the same in PMMU and DMMU */
        memcpy(&prop->pmmu, &prop->dmmu, sizeof(prop->dmmu));
@@ -438,6 +441,9 @@ int goya_set_fixed_properties(struct hl_device *hdev)
        prop->pmmu.page_size = PAGE_SIZE_4KB;
        prop->pmmu.num_hops = MMU_ARCH_5_HOPS;
        prop->pmmu.last_mask = LAST_MASK;
+       /* TODO: will be duplicated until implementing per-MMU props */
+       prop->pmmu.hop_table_size = prop->mmu_hop_table_size;
+       prop->pmmu.hop0_tables_total_size = prop->mmu_hop0_tables_total_size;
 
        /* PMMU and HPMMU are the same except of page size */
        memcpy(&prop->pmmu_huge, &prop->pmmu, sizeof(prop->pmmu));