On 2018-08-24 11:08 AM, Amber Lin wrote: > After merging KFD into amdgpu, move module parameters defined in KFD to > amdgpu_drv.c, where other module parameters are declared. > > v2: add kernel-doc comments > > Change-Id: I2de8d6c96bb49554c028bbc84bdb194f974c9278 > 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 | 87 +++++++++++++++++++++++++++++++++ > drivers/gpu/drm/amd/amdkfd/kfd_module.c | 40 --------------- > 2 files changed, 87 insertions(+), 40 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index 2221f6b..dd6d8b1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -39,6 +39,7 @@ > #include "amdgpu_gem.h" > > #include "amdgpu_amdkfd.h" > +#include "kfd_priv.h" > > /* > * KMS wrapper. > @@ -127,6 +128,15 @@ 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) > @@ -532,6 +542,83 @@ 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); > > +/** > + * 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. > + */ > +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)"); > + > +/** > + * DOC: hws_max_conc_proc (int) > + * 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. > + */ > +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))"); > + > +/** > + * DOC: cwsr_enable (int) > + * CWSR(compute wave store and resume) allows the GPU to preempt shader execution in > + * the middle of a compute wave. Default is 1 to enable this feature. Setting 0 > + * disables it. > + */ > +module_param(cwsr_enable, int, 0444); > +MODULE_PARM_DESC(cwsr_enable, "CWSR enable (0 = Off, 1 = On (Default))"); > + > +/** > + * DOC: max_num_of_queues_per_device (int) > + * Maximum number of queues per device. Valid setting is between 1 and 4096. Default > + * is 4096. > + */ > +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)"); > + > +/** > + * DOC: send_sigterm (int) > + * 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. > + */ > +module_param(send_sigterm, int, 0444); > +MODULE_PARM_DESC(send_sigterm, > + "Send sigterm to HSA process on unhandled exception (0 = disable, 1 = enable)"); > + > +/** > + * DOC: debug_largebar (int) > + * Set debug_largebar as 1 to enable simulating large-bar capability on non-large bar > + * system. This limits the VRAM size reported to ROCm applications to the visible > + * size, usually 256MB. > + * Default value is 0, diabled. > + */ > +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)"); > + > +/** > + * DOC: ignore_crat (int) > + * Ignore CRAT table during KFD initialization. By default, KFD uses the ACPI CRAT > + * table to get information about AMD APUs. This option can serve as a workaround on > + * systems with a broken CRAT table. > + */ > +module_param(ignore_crat, int, 0444); > +MODULE_PARM_DESC(ignore_crat, > + "Ignore CRAT table during KFD initialization (0 = use CRAT (default), 1 = ignore CRAT)"); > + > +/** > + * DOC: noretry (int) > + * This parameter sets sh_mem_config.retry_disable. Default value, 0, enables retry. > + * Setting 1 disables retry. > + * Retry is needed for recoverable page faults. > + */ > +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)"); > + > static const struct pci_device_id pciidlist[] = { > #ifdef CONFIG_DRM_AMDGPU_SI > {0x1002, 0x6780, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI}, > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_module.c b/drivers/gpu/drm/amd/amdkfd/kfd_module.c > index 8847514..5f4977b 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_module.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_module.c > @@ -21,7 +21,6 @@ > */ > > #include <linux/sched.h> > -#include <linux/moduleparam.h> > #include <linux/device.h> > #include "kfd_priv.h" > > @@ -39,45 +38,6 @@ static const struct kgd2kfd_calls kgd2kfd = { > kgd2kfd_schedule_evict_and_restore_process, > }; > > -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)"); > - > -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))"); > - > -int cwsr_enable = 1; > -module_param(cwsr_enable, int, 0444); > -MODULE_PARM_DESC(cwsr_enable, "CWSR enable (0 = Off, 1 = On (Default))"); > - > -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)"); > - > -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)"); > - > -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)"); > - > -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)"); > - > -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)"); > - > static int kfd_init(void) > { > int err;