habanalabs: set non-0 value in dram default page size
authorOhad Sharabi <osharabi@habana.ai>
Wed, 23 Feb 2022 09:27:36 +0000 (11:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 22 May 2022 18:57:33 +0000 (20:57 +0200)
Looking forward we will need to report to the user what is the default
page size used.

This will be done more conveniently by explicitly updating the property
rather than to rely on a "0 meaning default" value.

Signed-off-by: Ohad Sharabi <osharabi@habana.ai>
Reviewed-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Oded Gabbay <ogabbay@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/habanalabs/common/habanalabs.h
drivers/misc/habanalabs/common/memory.c
drivers/misc/habanalabs/gaudi/gaudi.c
drivers/misc/habanalabs/goya/goya.c

index 1edaf6ab67bdbf48c96b81d60b9f7c6ba24e1004..af47accd4a56664d4da66381ad3dc15c272117fe 100644 (file)
@@ -528,6 +528,10 @@ struct hl_hints_range {
  * @fw_app_cpu_boot_dev_sts1: bitmap representation of application security
  *                            status reported by FW, bit description can be
  *                            found in CPU_BOOT_DEV_STS1
+ * @device_mem_alloc_default_page_size: may be different than dram_page_size only for ASICs for
+ *                                      which the property supports_user_set_page_size is true
+ *                                      (i.e. the DRAM supports multiple page sizes), otherwise
+ *                                      it will shall  be equal to dram_page_size.
  * @collective_first_sob: first sync object available for collective use
  * @collective_first_mon: first monitor available for collective use
  * @sync_stream_first_sob: first sync object available for sync stream use
@@ -626,6 +630,7 @@ struct asic_fixed_properties {
        u32                             fw_bootfit_cpu_boot_dev_sts1;
        u32                             fw_app_cpu_boot_dev_sts0;
        u32                             fw_app_cpu_boot_dev_sts1;
+       u32                             device_mem_alloc_default_page_size;
        u16                             collective_first_sob;
        u16                             collective_first_mon;
        u16                             sync_stream_first_sob;
index a13506dd81194532fa047da82423fe9946d8a2a5..f7f758f358ca8bacb4356169d49b78bc20b7b025 100644 (file)
@@ -41,7 +41,7 @@ static int set_alloc_page_size(struct hl_device *hdev, struct hl_mem_in *args, u
                        return -EINVAL;
                }
        } else {
-               psize = hdev->asic_prop.dram_page_size;
+               psize = prop->device_mem_alloc_default_page_size;
        }
 
        *page_size = psize;
index 21c2b678ff72fa755435c7c0e942c2847e25a70d..feb1323a8f4ad11acd8bbef70a375c809b7d4cfa 100644 (file)
@@ -595,6 +595,7 @@ static int gaudi_set_fixed_properties(struct hl_device *hdev)
        prop->mmu_hop_table_size = HOP_TABLE_SIZE_512_PTE;
        prop->mmu_hop0_tables_total_size = HOP0_512_PTE_TABLES_TOTAL_SIZE;
        prop->dram_page_size = PAGE_SIZE_2MB;
+       prop->device_mem_alloc_default_page_size = prop->dram_page_size;
        prop->dram_supports_virtual_memory = false;
 
        prop->pmmu.hop0_shift = MMU_V1_1_HOP0_SHIFT;
index ec9358bcbf0bdf0efed92e5f0d64a043f5b1d6b8..5bd665188ea609ef4190a3ccdf4e7e78f50ae475 100644 (file)
@@ -413,6 +413,7 @@ int goya_set_fixed_properties(struct hl_device *hdev)
        prop->mmu_hop_table_size = HOP_TABLE_SIZE_512_PTE;
        prop->mmu_hop0_tables_total_size = HOP0_512_PTE_TABLES_TOTAL_SIZE;
        prop->dram_page_size = PAGE_SIZE_2MB;
+       prop->device_mem_alloc_default_page_size = prop->dram_page_size;
        prop->dram_supports_virtual_memory = true;
 
        prop->dmmu.hop0_shift = MMU_V1_0_HOP0_SHIFT;