[PATCH] drm/amdgpu: Relocate some definitions
Felix Kuehling
felix.kuehling at amd.com
Wed Aug 29 15:52:22 UTC 2018
On 2018-08-29 10:42 AM, Amber Lin wrote:
> Move some KFD-related (but used in amdgpu_drv.c) definitions from
> kfd_priv.h to kgd_kfd_interface.h so we don't need to include kfd_priv.h
> in amdgpu_drv.c. This fixes a build failure when AMDGPU is enabled but
> MMU_NOTIFIER is not.
> This patch also disables KFD-related module options when HSA_AMD is not
> enabled.
>
> Signed-off-by: Amber Lin <Amber.Lin at amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 20 +++++++++---------
> drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 28 -------------------------
> drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 28 +++++++++++++++++++++++++
> 3 files changed, 38 insertions(+), 38 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index dd6d8b1..e4d0d72 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -39,7 +39,6 @@
> #include "amdgpu_gem.h"
>
> #include "amdgpu_amdkfd.h"
> -#include "kfd_priv.h"
>
> /*
> * KMS wrapper.
> @@ -128,15 +127,6 @@ int amdgpu_compute_multipipe = -1;
> int amdgpu_gpu_recovery = -1; /* auto */
> int amdgpu_emu_mode = 0;
> uint amdgpu_smu_memory_pool_size = 0;
> -/* KFD parameters */
> -int sched_policy = KFD_SCHED_POLICY_HWS;
> -int hws_max_conc_proc = 8;
> -int cwsr_enable = 1;
> -int max_num_of_queues_per_device = KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT;
> -int send_sigterm;
> -int debug_largebar;
> -int ignore_crat;
> -int vega10_noretry;
>
> /**
> * DOC: vramlimit (int)
> @@ -542,12 +532,14 @@ MODULE_PARM_DESC(smu_memory_pool_size,
> "0x1 = 256Mbyte, 0x2 = 512Mbyte, 0x4 = 1 Gbyte, 0x8 = 2GByte");
> module_param_named(smu_memory_pool_size, amdgpu_smu_memory_pool_size, uint, 0444);
>
> +#ifdef CONFIG_HSA_AMD
> /**
> * DOC: sched_policy (int)
> * Set scheduling policy. Default is HWS(hardware scheduling) with over-subscription.
> * Setting 1 disables over-subscription. Setting 2 disables HWS and statically
> * assigns queues to HQDs.
> */
> +int sched_policy = KFD_SCHED_POLICY_HWS;
> module_param(sched_policy, int, 0444);
> MODULE_PARM_DESC(sched_policy,
> "Scheduling policy (0 = HWS (Default), 1 = HWS without over-subscription, 2 = Non-HWS (Used for debugging only)");
> @@ -557,6 +549,7 @@ MODULE_PARM_DESC(sched_policy,
> * Maximum number of processes that HWS can schedule concurrently. The maximum is the
> * number of VMIDs assigned to the HWS, which is also the default.
> */
> +int hws_max_conc_proc = 8;
> module_param(hws_max_conc_proc, int, 0444);
> MODULE_PARM_DESC(hws_max_conc_proc,
> "Max # processes HWS can execute concurrently when sched_policy=0 (0 = no concurrency, #VMIDs for KFD = Maximum(default))");
> @@ -567,6 +560,7 @@ MODULE_PARM_DESC(hws_max_conc_proc,
> * the middle of a compute wave. Default is 1 to enable this feature. Setting 0
> * disables it.
> */
> +int cwsr_enable = 1;
> module_param(cwsr_enable, int, 0444);
> MODULE_PARM_DESC(cwsr_enable, "CWSR enable (0 = Off, 1 = On (Default))");
>
> @@ -575,6 +569,7 @@ MODULE_PARM_DESC(cwsr_enable, "CWSR enable (0 = Off, 1 = On (Default))");
> * Maximum number of queues per device. Valid setting is between 1 and 4096. Default
> * is 4096.
> */
> +int max_num_of_queues_per_device = KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT;
> module_param(max_num_of_queues_per_device, int, 0444);
> MODULE_PARM_DESC(max_num_of_queues_per_device,
> "Maximum number of supported queues per device (1 = Minimum, 4096 = default)");
> @@ -584,6 +579,7 @@ MODULE_PARM_DESC(max_num_of_queues_per_device,
> * Send sigterm to HSA process on unhandled exceptions. Default is not to send sigterm
> * but just print errors on dmesg. Setting 1 enables sending sigterm.
> */
> +int send_sigterm;
> module_param(send_sigterm, int, 0444);
> MODULE_PARM_DESC(send_sigterm,
> "Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)");
> @@ -595,6 +591,7 @@ MODULE_PARM_DESC(send_sigterm,
> * size, usually 256MB.
> * Default value is 0, diabled.
> */
> +int debug_largebar;
> module_param(debug_largebar, int, 0444);
> MODULE_PARM_DESC(debug_largebar,
> "Debug large-bar flag used to simulate large-bar capability on non-large bar machine (0 = disable, 1 = enable)");
> @@ -605,6 +602,7 @@ MODULE_PARM_DESC(debug_largebar,
> * table to get information about AMD APUs. This option can serve as a workaround on
> * systems with a broken CRAT table.
> */
> +int ignore_crat;
> module_param(ignore_crat, int, 0444);
> MODULE_PARM_DESC(ignore_crat,
> "Ignore CRAT table during KFD initialization (0 = use CRAT (default), 1 = ignore CRAT)");
> @@ -615,9 +613,11 @@ MODULE_PARM_DESC(ignore_crat,
> * Setting 1 disables retry.
> * Retry is needed for recoverable page faults.
> */
> +int vega10_noretry;
> module_param_named(noretry, vega10_noretry, int, 0644);
> MODULE_PARM_DESC(noretry,
> "Set sh_mem_config.retry_disable on Vega10 (0 = retry enabled (default), 1 = retry disabled)");
> +#endif
>
> static const struct pci_device_id pciidlist[] = {
> #ifdef CONFIG_DRM_AMDGPU_SI
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> index 5e3990b..2df3ed4 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
> @@ -103,7 +103,6 @@
> */
> extern int max_num_of_queues_per_device;
>
> -#define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT 4096
> #define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE \
> (KFD_MAX_NUM_OF_PROCESSES * \
> KFD_MAX_NUM_OF_QUEUES_PER_PROCESS)
> @@ -144,33 +143,6 @@ extern int ignore_crat;
> */
> extern int vega10_noretry;
>
> -/**
> - * enum kfd_sched_policy
> - *
> - * @KFD_SCHED_POLICY_HWS: H/W scheduling policy known as command processor (cp)
> - * scheduling. In this scheduling mode we're using the firmware code to
> - * schedule the user mode queues and kernel queues such as HIQ and DIQ.
> - * the HIQ queue is used as a special queue that dispatches the configuration
> - * to the cp and the user mode queues list that are currently running.
> - * the DIQ queue is a debugging queue that dispatches debugging commands to the
> - * firmware.
> - * in this scheduling mode user mode queues over subscription feature is
> - * enabled.
> - *
> - * @KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION: The same as above but the over
> - * subscription feature disabled.
> - *
> - * @KFD_SCHED_POLICY_NO_HWS: no H/W scheduling policy is a mode which directly
> - * set the command processor registers and sets the queues "manually". This
> - * mode is used *ONLY* for debugging proposes.
> - *
> - */
> -enum kfd_sched_policy {
> - KFD_SCHED_POLICY_HWS = 0,
> - KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION,
> - KFD_SCHED_POLICY_NO_HWS
> -};
> -
> enum cache_policy {
> cache_policy_coherent,
> cache_policy_noncoherent
> diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
> index 8fdd032..c145193 100644
> --- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
> +++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
> @@ -87,6 +87,33 @@ enum kgd_engine_type {
> KGD_ENGINE_MAX
> };
>
> +/**
> + * enum kfd_sched_policy
> + *
> + * @KFD_SCHED_POLICY_HWS: H/W scheduling policy known as command processor (cp)
> + * scheduling. In this scheduling mode we're using the firmware code to
> + * schedule the user mode queues and kernel queues such as HIQ and DIQ.
> + * the HIQ queue is used as a special queue that dispatches the configuration
> + * to the cp and the user mode queues list that are currently running.
> + * the DIQ queue is a debugging queue that dispatches debugging commands to the
> + * firmware.
> + * in this scheduling mode user mode queues over subscription feature is
> + * enabled.
> + *
> + * @KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION: The same as above but the over
> + * subscription feature disabled.
> + *
> + * @KFD_SCHED_POLICY_NO_HWS: no H/W scheduling policy is a mode which directly
> + * set the command processor registers and sets the queues "manually". This
> + * mode is used *ONLY* for debugging proposes.
> + *
> + */
> +enum kfd_sched_policy {
> + KFD_SCHED_POLICY_HWS = 0,
> + KFD_SCHED_POLICY_HWS_NO_OVERSUBSCRIPTION,
> + KFD_SCHED_POLICY_NO_HWS
> +};
> +
> struct kgd2kfd_shared_resources {
> /* Bit n == 1 means VMID n is available for KFD. */
> unsigned int compute_vmid_bitmap;
> @@ -142,6 +169,7 @@ struct tile_config {
> uint32_t num_ranks;
> };
>
> +#define KFD_MAX_NUM_OF_QUEUES_PER_DEVICE_DEFAULT 4096
>
> /*
> * Allocation flag domains
More information about the amd-gfx
mailing list