[PATCH v2] drm/amdgpu: Change the virtual_display type from int to char*.

Deucher, Alexander Alexander.Deucher at amd.com
Tue Aug 9 12:41:34 UTC 2016


> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces at lists.freedesktop.org] On Behalf
> Of Emily Deng
> Sent: Tuesday, August 09, 2016 3:48 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Deng, Emily
> Subject: [PATCH v2] drm/amdgpu: Change the virtual_display type from int
> to char*.
> 
> Add PCI domains compare and replace strncmp with strcmp.
> 
> For virtual display feature, as there may be mutiple GPUs,
> for user could choose whiche GPU need to enable this feature, change
> the type of virtual_display from int to char*. The variable will be set
> like this virtual_display="xxxx:xx:xx.x;xxxx:xx:xx.x;".
> 
> Signed-off-by: Emily Deng <Emily.Deng at amd.com>
> 
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h        |  3 ++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 27
> ++++++++++++++++++++++++++-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c    |  6 +++---
>  drivers/gpu/drm/amd/amdgpu/cik.c           |  2 +-
>  drivers/gpu/drm/amd/amdgpu/vi.c            |  2 +-
>  5 files changed, 33 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index c309eaf..b6bed4e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -93,7 +93,7 @@ extern unsigned amdgpu_pcie_lane_cap;
>  extern unsigned amdgpu_cg_mask;
>  extern unsigned amdgpu_pg_mask;
>  extern int amdgpu_sclk_deep_sleep_en;
> -extern int amdgpu_virtual_display;
> +extern char *amdgpu_virtual_display;
> 
>  #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS	        3000
>  #define AMDGPU_MAX_USEC_TIMEOUT			100000	/* 100
> ms */
> @@ -2142,6 +2142,7 @@ struct amdgpu_device {
>  	struct kfd_dev          *kfd;
> 
>  	struct amdgpu_virtualization virtualization;
> +	int enable_virtual_display;

It would be nice to move this up with the other display related items in the structure.  Also, maybe bool rather than int.  Other than that, it looks good to me.

Alex

>  };
> 
>  bool amdgpu_device_is_px(struct drm_device *dev);
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 68cce12..4d9c033 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -47,6 +47,7 @@
>  #endif
>  #include "vi.h"
>  #include "bif/bif_4_1_d.h"
> +#include <linux/pci.h>
> 
>  static int amdgpu_debugfs_regs_init(struct amdgpu_device *adev);
>  static void amdgpu_debugfs_regs_cleanup(struct amdgpu_device *adev);
> @@ -1182,11 +1183,35 @@ int amdgpu_ip_block_version_cmp(struct
> amdgpu_device *adev,
>  	return 1;
>  }
> 
> +static void amdgpu_whether_enable_virtual_display(struct amdgpu_device
> *adev)
> +{
> +	adev->enable_virtual_display = 0;
> +
> +	if (amdgpu_virtual_display) {
> +		struct drm_device *ddev = adev->ddev;
> +		const char *pci_address_name = pci_name(ddev->pdev);
> +		char *pciaddstr, *pciaddstr_tmp, *pciaddname;
> +
> +		pciaddstr = kstrdup(amdgpu_virtual_display, GFP_KERNEL);
> +		pciaddstr_tmp = pciaddstr;
> +		while ((pciaddname = strsep(&pciaddstr_tmp, ";"))) {
> +			if (!strcmp(pci_address_name, pciaddname)) {
> +				adev->enable_virtual_display = 1;
> +				break;
> +			}
> +		}
> +
> +		DRM_INFO("virtual display string:%s,
> %s:virtual_display:%d\n", amdgpu_virtual_display, pci_address_name, adev-
> >enable_virtual_display);
> +
> +		kfree(pciaddstr);
> +	}
> +}
> +
>  static int amdgpu_early_init(struct amdgpu_device *adev)
>  {
>  	int i, r;
> 
> -	DRM_INFO("virtual display enabled:%d\n", amdgpu_virtual_display);
> +	amdgpu_whether_enable_virtual_display(adev);
> 
>  	switch (adev->asic_type) {
>  	case CHIP_TOPAZ:
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 7007cf7..209a539 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -90,7 +90,7 @@ unsigned amdgpu_pcie_gen_cap = 0;
>  unsigned amdgpu_pcie_lane_cap = 0;
>  unsigned amdgpu_cg_mask = 0xffffffff;
>  unsigned amdgpu_pg_mask = 0xffffffff;
> -int amdgpu_virtual_display = 0;
> +char *amdgpu_virtual_display = NULL;
> 
>  MODULE_PARM_DESC(vramlimit, "Restrict VRAM for testing, in
> megabytes");
>  module_param_named(vramlimit, amdgpu_vram_limit, int, 0600);
> @@ -190,8 +190,8 @@ module_param_named(cg_mask, amdgpu_cg_mask,
> uint, 0444);
>  MODULE_PARM_DESC(pg_mask, "Powergating flags mask (0 = disable
> power gating)");
>  module_param_named(pg_mask, amdgpu_pg_mask, uint, 0444);
> 
> -MODULE_PARM_DESC(virtual_display, "enable virtual display (0 = disable
> virtual display)");
> -module_param_named(virtual_display, amdgpu_virtual_display, int, 0444);
> +MODULE_PARM_DESC(virtual_display, "Enable virtual display feature (the
> virtual_display will be set like xxxx:xx:xx.x;xxxx:xx:xx.x)");
> +module_param_named(virtual_display, amdgpu_virtual_display, charp,
> 0444);
> 
>  static const struct pci_device_id pciidlist[] = {
>  #ifdef CONFIG_DRM_AMDGPU_CIK
> diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c
> b/drivers/gpu/drm/amd/amdgpu/cik.c
> index 84caa3f..a9fc2bb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/cik.c
> +++ b/drivers/gpu/drm/amd/amdgpu/cik.c
> @@ -2464,7 +2464,7 @@ static const struct amdgpu_ip_block_version
> kaveri_ip_blocks_vd[] =
> 
>  int cik_set_ip_blocks(struct amdgpu_device *adev)
>  {
> -	if (amdgpu_virtual_display) {
> +	if (adev->enable_virtual_display) {
>  		amdgpu_dal = 0;
>  		switch (adev->asic_type) {
>  		case CHIP_BONAIRE:
> diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c
> b/drivers/gpu/drm/amd/amdgpu/vi.c
> index 224e8a0..b9da2c7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/vi.c
> +++ b/drivers/gpu/drm/amd/amdgpu/vi.c
> @@ -1730,7 +1730,7 @@ static const struct amdgpu_ip_block_version
> fiji_ip_blocks_dal[] =
> 
>  int vi_set_ip_blocks(struct amdgpu_device *adev)
>  {
> -	if (amdgpu_virtual_display) {
> +	if (adev->enable_virtual_display) {
>  		amdgpu_dal = 0;
>  		switch (adev->asic_type) {
>  		case CHIP_TOPAZ:
> --
> 1.9.1
> 
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list