All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Ramesh Errabolu <Ramesh.Errabolu@amd.com>
Cc: kbuild-all@lists.01.org, dri-devel@lists.freedesktop.org
Subject: [radeon-alex:amd-staging-drm-next 440/442] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:802:6: warning: no previous prototype for 'kgd_gfx_v9_get_cu_occupancy'
Date: Thu, 5 Nov 2020 10:35:01 +0800	[thread overview]
Message-ID: <202011051057.TE8OLPyF-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 12311 bytes --]

tree:   git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next
head:   26803606c5d6137fb24d8ecec9b326a99f890c91
commit: 3fe0f6b91eba324db40436d61064ec8f00a080a3 [440/442] drm/amd/amdgpu: Enable arcturus devices to access the method kgd_gfx_v9_get_cu_occupancy that is already defined
config: x86_64-randconfig-a012-20201104 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
        git remote add radeon-alex git://people.freedesktop.org/~agd5f/linux.git
        git fetch --no-tags radeon-alex amd-staging-drm-next
        git checkout 3fe0f6b91eba324db40436d61064ec8f00a080a3
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:94:6: warning: no previous prototype for 'kgd_gfx_v9_program_sh_mem_settings' [-Wmissing-prototypes]
      94 | void kgd_gfx_v9_program_sh_mem_settings(struct kgd_dev *kgd, uint32_t vmid,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:111:5: warning: no previous prototype for 'kgd_gfx_v9_set_pasid_vmid_mapping' [-Wmissing-prototypes]
     111 | int kgd_gfx_v9_set_pasid_vmid_mapping(struct kgd_dev *kgd, unsigned int pasid,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:172:5: warning: no previous prototype for 'kgd_gfx_v9_init_interrupts' [-Wmissing-prototypes]
     172 | int kgd_gfx_v9_init_interrupts(struct kgd_dev *kgd, uint32_t pipe_id)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:234:5: warning: no previous prototype for 'kgd_gfx_v9_hqd_load' [-Wmissing-prototypes]
     234 | int kgd_gfx_v9_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
         |     ^~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:314:5: warning: no previous prototype for 'kgd_gfx_v9_hiq_mqd_load' [-Wmissing-prototypes]
     314 | int kgd_gfx_v9_hiq_mqd_load(struct kgd_dev *kgd, void *mqd,
         |     ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:367:5: warning: no previous prototype for 'kgd_gfx_v9_hqd_dump' [-Wmissing-prototypes]
     367 | int kgd_gfx_v9_hqd_dump(struct kgd_dev *kgd,
         |     ^~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:501:6: warning: no previous prototype for 'kgd_gfx_v9_hqd_is_occupied' [-Wmissing-prototypes]
     501 | bool kgd_gfx_v9_hqd_is_occupied(struct kgd_dev *kgd, uint64_t queue_address,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:542:5: warning: no previous prototype for 'kgd_gfx_v9_hqd_destroy' [-Wmissing-prototypes]
     542 | int kgd_gfx_v9_hqd_destroy(struct kgd_dev *kgd, void *mqd,
         |     ^~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:632:6: warning: no previous prototype for 'kgd_gfx_v9_get_atc_vmid_pasid_mapping_info' [-Wmissing-prototypes]
     632 | bool kgd_gfx_v9_get_atc_vmid_pasid_mapping_info(struct kgd_dev *kgd,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:645:5: warning: no previous prototype for 'kgd_gfx_v9_address_watch_disable' [-Wmissing-prototypes]
     645 | int kgd_gfx_v9_address_watch_disable(struct kgd_dev *kgd)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:650:5: warning: no previous prototype for 'kgd_gfx_v9_address_watch_execute' [-Wmissing-prototypes]
     650 | int kgd_gfx_v9_address_watch_execute(struct kgd_dev *kgd,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:659:5: warning: no previous prototype for 'kgd_gfx_v9_wave_control_execute' [-Wmissing-prototypes]
     659 | int kgd_gfx_v9_wave_control_execute(struct kgd_dev *kgd,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:684:10: warning: no previous prototype for 'kgd_gfx_v9_address_watch_get_offset' [-Wmissing-prototypes]
     684 | uint32_t kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd,
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:691:6: warning: no previous prototype for 'kgd_gfx_v9_set_vm_context_page_table_base' [-Wmissing-prototypes]
     691 | void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:802:6: warning: no previous prototype for 'kgd_gfx_v9_get_cu_occupancy' [-Wmissing-prototypes]
     802 | void kgd_gfx_v9_get_cu_occupancy(struct kgd_dev *kgd, int pasid,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/dc_types.h:33,
                    from drivers/gpu/drm/amd/amdgpu/../display/dc/dm_services_types.h:30,
                    from drivers/gpu/drm/amd/amdgpu/../include/dm_pp_interface.h:26,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu.h:67,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:22:
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:76:32: warning: 'dc_fixpt_ln2_div_2' defined but not used [-Wunused-const-variable=]
      76 | static const struct fixed31_32 dc_fixpt_ln2_div_2 = { 1488522236LL };
         |                                ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:75:32: warning: 'dc_fixpt_ln2' defined but not used [-Wunused-const-variable=]
      75 | static const struct fixed31_32 dc_fixpt_ln2 = { 2977044471LL };
         |                                ^~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:74:32: warning: 'dc_fixpt_e' defined but not used [-Wunused-const-variable=]
      74 | static const struct fixed31_32 dc_fixpt_e = { 11674931555LL };
         |                                ^~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:73:32: warning: 'dc_fixpt_two_pi' defined but not used [-Wunused-const-variable=]
      73 | static const struct fixed31_32 dc_fixpt_two_pi = { 26986075409LL };
         |                                ^~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:72:32: warning: 'dc_fixpt_pi' defined but not used [-Wunused-const-variable=]
      72 | static const struct fixed31_32 dc_fixpt_pi = { 13493037705LL };
         |                                ^~~~~~~~~~~

vim +/kgd_gfx_v9_get_cu_occupancy +802 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c

   755	
   756	/**
   757	 * @kgd_gfx_v9_get_cu_occupancy: Reads relevant registers associated with each
   758	 * shader engine and aggregates the number of waves that are in flight for the
   759	 * process whose pasid is provided as a parameter. The process could have ZERO
   760	 * or more queues running and submitting waves to compute units.
   761	 *
   762	 * @kgd: Handle of device from which to get number of waves in flight
   763	 * @pasid: Identifies the process for which this query call is invoked
   764	 * @wave_cnt: Output parameter updated with number of waves in flight that
   765	 * belong to process with given pasid
   766	 * @max_waves_per_cu: Output parameter updated with maximum number of waves
   767	 * possible per Compute Unit
   768	 *
   769	 * @note: It's possible that the device has too many queues (oversubscription)
   770	 * in which case a VMID could be remapped to a different PASID. This could lead
   771	 * to an iaccurate wave count. Following is a high-level sequence:
   772	 *    Time T1: vmid = getVmid(); vmid is associated with Pasid P1
   773	 *    Time T2: passId = getPasId(vmid); vmid is associated with Pasid P2
   774	 * In the sequence above wave count obtained from time T1 will be incorrectly
   775	 * lost or added to total wave count.
   776	 *
   777	 * The registers that provide the waves in flight are:
   778	 *
   779	 *  SPI_CSQ_WF_ACTIVE_STATUS - bit-map of queues per pipe. The bit is ON if a
   780	 *  queue is slotted, OFF if there is no queue. A process could have ZERO or
   781	 *  more queues slotted and submitting waves to be run on compute units. Even
   782	 *  when there is a queue it is possible there could be zero wave fronts, this
   783	 *  can happen when queue is waiting on top-of-pipe events - e.g. waitRegMem
   784	 *  command
   785	 *
   786	 *  For each bit that is ON from above:
   787	 *
   788	 *    Read (SPI_CSQ_WF_ACTIVE_COUNT_0 + queue_idx) register. It provides the
   789	 *    number of waves that are in flight for the queue at specified index. The
   790	 *    index ranges from 0 to 7.
   791	 *
   792	 *    If non-zero waves are in flight, read CP_HQD_VMID register to obtain VMID
   793	 *    of the wave(s).
   794	 *
   795	 *    Determine if VMID from above step maps to pasid provided as parameter. If
   796	 *    it matches agrregate the wave count. That the VMID will not match pasid is
   797	 *    a normal condition i.e. a device is expected to support multiple queues
   798	 *    from multiple proceses.
   799	 *
   800	 *  Reading registers referenced above involves programming GRBM appropriately
   801	 */
 > 802	void kgd_gfx_v9_get_cu_occupancy(struct kgd_dev *kgd, int pasid,
   803			int *pasid_wave_cnt, int *max_waves_per_cu)
   804	{
   805		int qidx;
   806		int vmid;
   807		int se_idx;
   808		int sh_idx;
   809		int se_cnt;
   810		int sh_cnt;
   811		int wave_cnt;
   812		int queue_map;
   813		int pasid_tmp;
   814		int max_queue_cnt;
   815		int vmid_wave_cnt = 0;
   816		struct amdgpu_device *adev;
   817		DECLARE_BITMAP(cp_queue_bitmap, KGD_MAX_QUEUES);
   818	
   819		adev = get_amdgpu_device(kgd);
   820		lock_spi_csq_mutexes(adev);
   821		soc15_grbm_select(adev, 1, 0, 0, 0);
   822	
   823		/*
   824		 * Iterate through the shader engines and arrays of the device
   825		 * to get number of waves in flight
   826		 */
   827		bitmap_complement(cp_queue_bitmap, adev->gfx.mec.queue_bitmap,
   828				  KGD_MAX_QUEUES);
   829		max_queue_cnt = adev->gfx.mec.num_pipe_per_mec *
   830				adev->gfx.mec.num_queue_per_pipe;
   831		sh_cnt = adev->gfx.config.max_sh_per_se;
   832		se_cnt = adev->gfx.config.max_shader_engines;
   833		for (se_idx = 0; se_idx < se_cnt; se_idx++) {
   834			for (sh_idx = 0; sh_idx < sh_cnt; sh_idx++) {
   835	
   836				gfx_v9_0_select_se_sh(adev, se_idx, sh_idx, 0xffffffff);
   837				queue_map = RREG32(SOC15_REG_OFFSET(GC, 0,
   838						   mmSPI_CSQ_WF_ACTIVE_STATUS));
   839	
   840				/*
   841				 * Assumption: queue map encodes following schema: four
   842				 * pipes per each micro-engine, with each pipe mapping
   843				 * eight queues. This schema is true for GFX9 devices
   844				 * and must be verified for newer device families
   845				 */
   846				for (qidx = 0; qidx < max_queue_cnt; qidx++) {
   847	
   848					/* Skip qeueus that are not associated with
   849					 * compute functions
   850					 */
   851					if (!test_bit(qidx, cp_queue_bitmap))
   852						continue;
   853	
   854					if (!(queue_map & (1 << qidx)))
   855						continue;
   856	
   857					/* Get number of waves in flight and aggregate them */
   858					get_wave_count(adev, qidx, &wave_cnt, &vmid);
   859					if (wave_cnt != 0) {
   860						pasid_tmp =
   861						  RREG32(SOC15_REG_OFFSET(OSSSYS, 0,
   862							 mmIH_VMID_0_LUT) + vmid);
   863						if (pasid_tmp == pasid)
   864							vmid_wave_cnt += wave_cnt;
   865					}
   866				}
   867			}
   868		}
   869	
   870		gfx_v9_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
   871		soc15_grbm_select(adev, 0, 0, 0, 0);
   872		unlock_spi_csq_mutexes(adev);
   873	
   874		/* Update the output parameters and return */
   875		*pasid_wave_cnt = vmid_wave_cnt;
   876		*max_waves_per_cu = adev->gfx.cu_info.simd_per_cu *
   877					adev->gfx.cu_info.max_waves_per_simd;
   878	}
   879	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 37683 bytes --]

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [radeon-alex:amd-staging-drm-next 440/442] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:802:6: warning: no previous prototype for 'kgd_gfx_v9_get_cu_occupancy'
Date: Thu, 05 Nov 2020 10:35:01 +0800	[thread overview]
Message-ID: <202011051057.TE8OLPyF-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 12527 bytes --]

tree:   git://people.freedesktop.org/~agd5f/linux.git amd-staging-drm-next
head:   26803606c5d6137fb24d8ecec9b326a99f890c91
commit: 3fe0f6b91eba324db40436d61064ec8f00a080a3 [440/442] drm/amd/amdgpu: Enable arcturus devices to access the method kgd_gfx_v9_get_cu_occupancy that is already defined
config: x86_64-randconfig-a012-20201104 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
        git remote add radeon-alex git://people.freedesktop.org/~agd5f/linux.git
        git fetch --no-tags radeon-alex amd-staging-drm-next
        git checkout 3fe0f6b91eba324db40436d61064ec8f00a080a3
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:94:6: warning: no previous prototype for 'kgd_gfx_v9_program_sh_mem_settings' [-Wmissing-prototypes]
      94 | void kgd_gfx_v9_program_sh_mem_settings(struct kgd_dev *kgd, uint32_t vmid,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:111:5: warning: no previous prototype for 'kgd_gfx_v9_set_pasid_vmid_mapping' [-Wmissing-prototypes]
     111 | int kgd_gfx_v9_set_pasid_vmid_mapping(struct kgd_dev *kgd, unsigned int pasid,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:172:5: warning: no previous prototype for 'kgd_gfx_v9_init_interrupts' [-Wmissing-prototypes]
     172 | int kgd_gfx_v9_init_interrupts(struct kgd_dev *kgd, uint32_t pipe_id)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:234:5: warning: no previous prototype for 'kgd_gfx_v9_hqd_load' [-Wmissing-prototypes]
     234 | int kgd_gfx_v9_hqd_load(struct kgd_dev *kgd, void *mqd, uint32_t pipe_id,
         |     ^~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:314:5: warning: no previous prototype for 'kgd_gfx_v9_hiq_mqd_load' [-Wmissing-prototypes]
     314 | int kgd_gfx_v9_hiq_mqd_load(struct kgd_dev *kgd, void *mqd,
         |     ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:367:5: warning: no previous prototype for 'kgd_gfx_v9_hqd_dump' [-Wmissing-prototypes]
     367 | int kgd_gfx_v9_hqd_dump(struct kgd_dev *kgd,
         |     ^~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:501:6: warning: no previous prototype for 'kgd_gfx_v9_hqd_is_occupied' [-Wmissing-prototypes]
     501 | bool kgd_gfx_v9_hqd_is_occupied(struct kgd_dev *kgd, uint64_t queue_address,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:542:5: warning: no previous prototype for 'kgd_gfx_v9_hqd_destroy' [-Wmissing-prototypes]
     542 | int kgd_gfx_v9_hqd_destroy(struct kgd_dev *kgd, void *mqd,
         |     ^~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:632:6: warning: no previous prototype for 'kgd_gfx_v9_get_atc_vmid_pasid_mapping_info' [-Wmissing-prototypes]
     632 | bool kgd_gfx_v9_get_atc_vmid_pasid_mapping_info(struct kgd_dev *kgd,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:645:5: warning: no previous prototype for 'kgd_gfx_v9_address_watch_disable' [-Wmissing-prototypes]
     645 | int kgd_gfx_v9_address_watch_disable(struct kgd_dev *kgd)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:650:5: warning: no previous prototype for 'kgd_gfx_v9_address_watch_execute' [-Wmissing-prototypes]
     650 | int kgd_gfx_v9_address_watch_execute(struct kgd_dev *kgd,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:659:5: warning: no previous prototype for 'kgd_gfx_v9_wave_control_execute' [-Wmissing-prototypes]
     659 | int kgd_gfx_v9_wave_control_execute(struct kgd_dev *kgd,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:684:10: warning: no previous prototype for 'kgd_gfx_v9_address_watch_get_offset' [-Wmissing-prototypes]
     684 | uint32_t kgd_gfx_v9_address_watch_get_offset(struct kgd_dev *kgd,
         |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:691:6: warning: no previous prototype for 'kgd_gfx_v9_set_vm_context_page_table_base' [-Wmissing-prototypes]
     691 | void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:802:6: warning: no previous prototype for 'kgd_gfx_v9_get_cu_occupancy' [-Wmissing-prototypes]
     802 | void kgd_gfx_v9_get_cu_occupancy(struct kgd_dev *kgd, int pasid,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/dc_types.h:33,
                    from drivers/gpu/drm/amd/amdgpu/../display/dc/dm_services_types.h:30,
                    from drivers/gpu/drm/amd/amdgpu/../include/dm_pp_interface.h:26,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu.h:67,
                    from drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:22:
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:76:32: warning: 'dc_fixpt_ln2_div_2' defined but not used [-Wunused-const-variable=]
      76 | static const struct fixed31_32 dc_fixpt_ln2_div_2 = { 1488522236LL };
         |                                ^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:75:32: warning: 'dc_fixpt_ln2' defined but not used [-Wunused-const-variable=]
      75 | static const struct fixed31_32 dc_fixpt_ln2 = { 2977044471LL };
         |                                ^~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:74:32: warning: 'dc_fixpt_e' defined but not used [-Wunused-const-variable=]
      74 | static const struct fixed31_32 dc_fixpt_e = { 11674931555LL };
         |                                ^~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:73:32: warning: 'dc_fixpt_two_pi' defined but not used [-Wunused-const-variable=]
      73 | static const struct fixed31_32 dc_fixpt_two_pi = { 26986075409LL };
         |                                ^~~~~~~~~~~~~~~
   drivers/gpu/drm/amd/amdgpu/../display/include/fixed31_32.h:72:32: warning: 'dc_fixpt_pi' defined but not used [-Wunused-const-variable=]
      72 | static const struct fixed31_32 dc_fixpt_pi = { 13493037705LL };
         |                                ^~~~~~~~~~~

vim +/kgd_gfx_v9_get_cu_occupancy +802 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c

   755	
   756	/**
   757	 * @kgd_gfx_v9_get_cu_occupancy: Reads relevant registers associated with each
   758	 * shader engine and aggregates the number of waves that are in flight for the
   759	 * process whose pasid is provided as a parameter. The process could have ZERO
   760	 * or more queues running and submitting waves to compute units.
   761	 *
   762	 * @kgd: Handle of device from which to get number of waves in flight
   763	 * @pasid: Identifies the process for which this query call is invoked
   764	 * @wave_cnt: Output parameter updated with number of waves in flight that
   765	 * belong to process with given pasid
   766	 * @max_waves_per_cu: Output parameter updated with maximum number of waves
   767	 * possible per Compute Unit
   768	 *
   769	 * @note: It's possible that the device has too many queues (oversubscription)
   770	 * in which case a VMID could be remapped to a different PASID. This could lead
   771	 * to an iaccurate wave count. Following is a high-level sequence:
   772	 *    Time T1: vmid = getVmid(); vmid is associated with Pasid P1
   773	 *    Time T2: passId = getPasId(vmid); vmid is associated with Pasid P2
   774	 * In the sequence above wave count obtained from time T1 will be incorrectly
   775	 * lost or added to total wave count.
   776	 *
   777	 * The registers that provide the waves in flight are:
   778	 *
   779	 *  SPI_CSQ_WF_ACTIVE_STATUS - bit-map of queues per pipe. The bit is ON if a
   780	 *  queue is slotted, OFF if there is no queue. A process could have ZERO or
   781	 *  more queues slotted and submitting waves to be run on compute units. Even
   782	 *  when there is a queue it is possible there could be zero wave fronts, this
   783	 *  can happen when queue is waiting on top-of-pipe events - e.g. waitRegMem
   784	 *  command
   785	 *
   786	 *  For each bit that is ON from above:
   787	 *
   788	 *    Read (SPI_CSQ_WF_ACTIVE_COUNT_0 + queue_idx) register. It provides the
   789	 *    number of waves that are in flight for the queue at specified index. The
   790	 *    index ranges from 0 to 7.
   791	 *
   792	 *    If non-zero waves are in flight, read CP_HQD_VMID register to obtain VMID
   793	 *    of the wave(s).
   794	 *
   795	 *    Determine if VMID from above step maps to pasid provided as parameter. If
   796	 *    it matches agrregate the wave count. That the VMID will not match pasid is
   797	 *    a normal condition i.e. a device is expected to support multiple queues
   798	 *    from multiple proceses.
   799	 *
   800	 *  Reading registers referenced above involves programming GRBM appropriately
   801	 */
 > 802	void kgd_gfx_v9_get_cu_occupancy(struct kgd_dev *kgd, int pasid,
   803			int *pasid_wave_cnt, int *max_waves_per_cu)
   804	{
   805		int qidx;
   806		int vmid;
   807		int se_idx;
   808		int sh_idx;
   809		int se_cnt;
   810		int sh_cnt;
   811		int wave_cnt;
   812		int queue_map;
   813		int pasid_tmp;
   814		int max_queue_cnt;
   815		int vmid_wave_cnt = 0;
   816		struct amdgpu_device *adev;
   817		DECLARE_BITMAP(cp_queue_bitmap, KGD_MAX_QUEUES);
   818	
   819		adev = get_amdgpu_device(kgd);
   820		lock_spi_csq_mutexes(adev);
   821		soc15_grbm_select(adev, 1, 0, 0, 0);
   822	
   823		/*
   824		 * Iterate through the shader engines and arrays of the device
   825		 * to get number of waves in flight
   826		 */
   827		bitmap_complement(cp_queue_bitmap, adev->gfx.mec.queue_bitmap,
   828				  KGD_MAX_QUEUES);
   829		max_queue_cnt = adev->gfx.mec.num_pipe_per_mec *
   830				adev->gfx.mec.num_queue_per_pipe;
   831		sh_cnt = adev->gfx.config.max_sh_per_se;
   832		se_cnt = adev->gfx.config.max_shader_engines;
   833		for (se_idx = 0; se_idx < se_cnt; se_idx++) {
   834			for (sh_idx = 0; sh_idx < sh_cnt; sh_idx++) {
   835	
   836				gfx_v9_0_select_se_sh(adev, se_idx, sh_idx, 0xffffffff);
   837				queue_map = RREG32(SOC15_REG_OFFSET(GC, 0,
   838						   mmSPI_CSQ_WF_ACTIVE_STATUS));
   839	
   840				/*
   841				 * Assumption: queue map encodes following schema: four
   842				 * pipes per each micro-engine, with each pipe mapping
   843				 * eight queues. This schema is true for GFX9 devices
   844				 * and must be verified for newer device families
   845				 */
   846				for (qidx = 0; qidx < max_queue_cnt; qidx++) {
   847	
   848					/* Skip qeueus that are not associated with
   849					 * compute functions
   850					 */
   851					if (!test_bit(qidx, cp_queue_bitmap))
   852						continue;
   853	
   854					if (!(queue_map & (1 << qidx)))
   855						continue;
   856	
   857					/* Get number of waves in flight and aggregate them */
   858					get_wave_count(adev, qidx, &wave_cnt, &vmid);
   859					if (wave_cnt != 0) {
   860						pasid_tmp =
   861						  RREG32(SOC15_REG_OFFSET(OSSSYS, 0,
   862							 mmIH_VMID_0_LUT) + vmid);
   863						if (pasid_tmp == pasid)
   864							vmid_wave_cnt += wave_cnt;
   865					}
   866				}
   867			}
   868		}
   869	
   870		gfx_v9_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
   871		soc15_grbm_select(adev, 0, 0, 0, 0);
   872		unlock_spi_csq_mutexes(adev);
   873	
   874		/* Update the output parameters and return */
   875		*pasid_wave_cnt = vmid_wave_cnt;
   876		*max_waves_per_cu = adev->gfx.cu_info.simd_per_cu *
   877					adev->gfx.cu_info.max_waves_per_simd;
   878	}
   879	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37683 bytes --]

             reply	other threads:[~2020-11-05  2:35 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-05  2:35 kernel test robot [this message]
2020-11-05  2:35 ` [radeon-alex:amd-staging-drm-next 440/442] drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c:802:6: warning: no previous prototype for 'kgd_gfx_v9_get_cu_occupancy' kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202011051057.TE8OLPyF-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Ramesh.Errabolu@amd.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.