[PATCH 4/4] drm/amdgpu: cleanup all virtualization detection routine
Deng, Emily
Emily.Deng at amd.com
Wed Mar 25 03:12:06 UTC 2020
[AMD Official Use Only - Internal Distribution Only]
Series Reviewed-by: Emily Deng <Emily.Deng at amd.com>
>-----Original Message-----
>From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Monk Liu
>Sent: Tuesday, March 24, 2020 6:59 PM
>To: amd-gfx at lists.freedesktop.org
>Cc: Liu, Monk <Monk.Liu at amd.com>
>Subject: [PATCH 4/4] drm/amdgpu: cleanup all virtualization detection routine
>
>we need to move virt detection much earlier because:
>1) HW team confirms us that RCC_IOV_FUNC_IDENTIFIER will always be at DE5
>(dw) mmio offset from vega10, this way there is no need to implement
>detect_hw_virt() routine in each nbio/chip file.
>for VI SRIOV chip (tonga & fiji), the BIF_IOV_FUNC_IDENTIFIER is at
>0x1503
>
>2) we need to acknowledged we are SRIOV VF before we do IP discovery because
>the IP discovery content will be updated by host everytime after it recieved a
>new coming "REQ_GPU_INIT_DATA" request from guest (there will be patches
>for this new handshake soon).
>
>Signed-off-by: Monk Liu <Monk.Liu at amd.com>
>---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 ++
> drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h | 1 -
> drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 33
>++++++++++++++++++++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 6 ++++
> drivers/gpu/drm/amd/amdgpu/cik.c | 8 ------
> drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c | 18 ------------
> drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c | 18 ------------
> drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c | 7 -----
> drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 18 ------------
> drivers/gpu/drm/amd/amdgpu/nv.c | 2 --
> drivers/gpu/drm/amd/amdgpu/si.c | 8 ------
> drivers/gpu/drm/amd/amdgpu/soc15.c | 1 -
> drivers/gpu/drm/amd/amdgpu/vi.c | 24 ----------------
> .../amd/include/asic_reg/nbif/nbif_6_1_offset.h | 2 ++
> .../amd/include/asic_reg/nbio/nbio_7_0_offset.h | 2 ++
> .../amd/include/asic_reg/nbio/nbio_7_4_offset.h | 2 ++
> 16 files changed, 48 insertions(+), 105 deletions(-)
>
>diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>index e55dbcd..ca609b6 100644
>--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>@@ -3057,6 +3057,9 @@ int amdgpu_device_init(struct amdgpu_device *adev,
> if (amdgpu_mes && adev->asic_type >= CHIP_NAVI10)
> adev->enable_mes = true;
>
>+ /* detect hw virtualization here */
>+ amdgpu_detect_virtualization(adev);
>+
> if (amdgpu_discovery && adev->asic_type >= CHIP_NAVI10) {
> r = amdgpu_discovery_init(adev);
> if (r) {
>diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h
>b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h
>index 919bd56..edaac24 100644
>--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h
>+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_nbio.h
>@@ -77,7 +77,6 @@ struct amdgpu_nbio_funcs {
> u32 *flags);
> void (*ih_control)(struct amdgpu_device *adev);
> void (*init_registers)(struct amdgpu_device *adev);
>- void (*detect_hw_virt)(struct amdgpu_device *adev);
> void (*remap_hdp_registers)(struct amdgpu_device *adev);
> void (*handle_ras_controller_intr_no_bifring)(struct amdgpu_device
>*adev);
> void (*handle_ras_err_event_athub_intr_no_bifring)(struct
>amdgpu_device *adev); diff --git
>a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
>b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
>index adc813c..43a1ee3 100644
>--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
>+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
>@@ -287,3 +287,36 @@ void amdgpu_virt_init_data_exchange(struct
>amdgpu_device *adev)
> }
> }
> }
>+
>+void amdgpu_detect_virtualization(struct amdgpu_device *adev) {
>+ uint32_t reg;
>+
>+ switch (adev->asic_type) {
>+ case CHIP_TONGA:
>+ case CHIP_FIJI:
>+ reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
>+ break;
>+ case CHIP_VEGA10:
>+ case CHIP_VEGA20:
>+ case CHIP_NAVI10:
>+ case CHIP_NAVI12:
>+ case CHIP_ARCTURUS:
>+ reg = RREG32(mmRCC_IOV_FUNC_IDENTIFIER);
>+ break;
>+ default: /* other chip doesn't support SRIOV */
>+ reg = 0;
>+ break;
>+ }
>+
>+ if (reg & 1)
>+ adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
>+
>+ if (reg & 0x80000000)
>+ adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
>+
>+ if (!reg) {
>+ if (is_virtual_machine()) /* passthrough mode exclus sriov mod
>*/
>+ adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>+ }
>+}
>diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
>b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
>index 0a95b13..74f9843 100644
>--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
>+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
>@@ -30,6 +30,11 @@
> #define AMDGPU_PASSTHROUGH_MODE (1 << 3) /* thw whole GPU is pass
>through for VM */
> #define AMDGPU_SRIOV_CAPS_RUNTIME (1 << 4) /* is out of full access
>mode */
>
>+/* all asic after AI use this offset */ #define
>+mmRCC_IOV_FUNC_IDENTIFIER 0xDE5
>+/* tonga/fiji use this offset */
>+#define mmBIF_IOV_FUNC_IDENTIFIER 0x1503
>+
> struct amdgpu_mm_table {
> struct amdgpu_bo *bo;
> uint32_t *cpu_addr;
>@@ -305,4 +310,5 @@ int amdgpu_virt_fw_reserve_get_checksum(void *obj,
>unsigned long obj_size,
> unsigned int key,
> unsigned int chksum);
> void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev);
>+void amdgpu_detect_virtualization(struct amdgpu_device *adev);
> #endif
>diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c
>b/drivers/gpu/drm/amd/amdgpu/cik.c
>index 006f21e..db68ffa 100644
>--- a/drivers/gpu/drm/amd/amdgpu/cik.c
>+++ b/drivers/gpu/drm/amd/amdgpu/cik.c
>@@ -1811,12 +1811,6 @@ static uint32_t cik_get_rev_id(struct amdgpu_device
>*adev)
> >> CC_DRM_ID_STRAPS__ATI_REV_ID__SHIFT;
> }
>
>-static void cik_detect_hw_virtualization(struct amdgpu_device *adev) -{
>- if (is_virtual_machine()) /* passthrough mode */
>- adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>-}
>-
> static void cik_flush_hdp(struct amdgpu_device *adev, struct amdgpu_ring
>*ring) {
> if (!ring || !ring->funcs->emit_wreg) { @@ -2179,8 +2173,6 @@ static
>const struct amdgpu_ip_block_version cik_common_ip_block =
>
> int cik_set_ip_blocks(struct amdgpu_device *adev) {
>- cik_detect_hw_virtualization(adev);
>-
> switch (adev->asic_type) {
> case CHIP_BONAIRE:
> amdgpu_device_ip_block_add(adev, &cik_common_ip_block);
>diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c
>b/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c
>index f3a3fe7..cbcf045 100644
>--- a/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c
>+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c
>@@ -290,23 +290,6 @@ const struct nbio_hdp_flush_reg
>nbio_v2_3_hdp_flush_reg = {
> .ref_and_mask_sdma1 =
>BIF_BX_PF_GPU_HDP_FLUSH_DONE__SDMA1_MASK,
> };
>
>-static void nbio_v2_3_detect_hw_virt(struct amdgpu_device *adev) -{
>- uint32_t reg;
>-
>- reg = RREG32_SOC15(NBIO, 0,
>mmRCC_DEV0_EPF0_RCC_IOV_FUNC_IDENTIFIER);
>- if (reg & 1)
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
>-
>- if (reg & 0x80000000)
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
>-
>- if (!reg) {
>- if (is_virtual_machine()) /* passthrough mode exclus sriov mod
>*/
>- adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>- }
>-}
>-
> static void nbio_v2_3_init_registers(struct amdgpu_device *adev) {
> uint32_t def, data;
>@@ -338,6 +321,5 @@ const struct amdgpu_nbio_funcs nbio_v2_3_funcs = {
> .get_clockgating_state = nbio_v2_3_get_clockgating_state,
> .ih_control = nbio_v2_3_ih_control,
> .init_registers = nbio_v2_3_init_registers,
>- .detect_hw_virt = nbio_v2_3_detect_hw_virt,
> .remap_hdp_registers = nbio_v2_3_remap_hdp_registers, }; diff --git
>a/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
>b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
>index 635d9e1..7b2fb05 100644
>--- a/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
>+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c
>@@ -241,23 +241,6 @@ const struct nbio_hdp_flush_reg
>nbio_v6_1_hdp_flush_reg = {
> .ref_and_mask_sdma1 =
>BIF_BX_PF0_GPU_HDP_FLUSH_DONE__SDMA1_MASK
> };
>
>-static void nbio_v6_1_detect_hw_virt(struct amdgpu_device *adev) -{
>- uint32_t reg;
>-
>- reg = RREG32_SOC15(NBIO, 0,
>mmRCC_PF_0_0_RCC_IOV_FUNC_IDENTIFIER);
>- if (reg & 1)
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
>-
>- if (reg & 0x80000000)
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
>-
>- if (!reg) {
>- if (is_virtual_machine()) /* passthrough mode exclus sriov mod
>*/
>- adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>- }
>-}
>-
> static void nbio_v6_1_init_registers(struct amdgpu_device *adev) {
> uint32_t def, data;
>@@ -294,5 +277,4 @@ const struct amdgpu_nbio_funcs nbio_v6_1_funcs = {
> .get_clockgating_state = nbio_v6_1_get_clockgating_state,
> .ih_control = nbio_v6_1_ih_control,
> .init_registers = nbio_v6_1_init_registers,
>- .detect_hw_virt = nbio_v6_1_detect_hw_virt,
> };
>diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
>b/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
>index d6cbf26..d34628e 100644
>--- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
>+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_0.c
>@@ -280,12 +280,6 @@ const struct nbio_hdp_flush_reg
>nbio_v7_0_hdp_flush_reg = {
> .ref_and_mask_sdma1 = GPU_HDP_FLUSH_DONE__SDMA1_MASK, };
>
>-static void nbio_v7_0_detect_hw_virt(struct amdgpu_device *adev) -{
>- if (is_virtual_machine()) /* passthrough mode exclus sriov mod */
>- adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>-}
>-
> static void nbio_v7_0_init_registers(struct amdgpu_device *adev) {
>
>@@ -310,6 +304,5 @@ const struct amdgpu_nbio_funcs nbio_v7_0_funcs = {
> .get_clockgating_state = nbio_v7_0_get_clockgating_state,
> .ih_control = nbio_v7_0_ih_control,
> .init_registers = nbio_v7_0_init_registers,
>- .detect_hw_virt = nbio_v7_0_detect_hw_virt,
> .remap_hdp_registers = nbio_v7_0_remap_hdp_registers, }; diff --git
>a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
>b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
>index 149d386..41c53c1 100644
>--- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
>+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c
>@@ -292,23 +292,6 @@ const struct nbio_hdp_flush_reg
>nbio_v7_4_hdp_flush_reg = {
> .ref_and_mask_sdma7 = GPU_HDP_FLUSH_DONE__RSVD_ENG5_MASK,
> };
>
>-static void nbio_v7_4_detect_hw_virt(struct amdgpu_device *adev) -{
>- uint32_t reg;
>-
>- reg = RREG32_SOC15(NBIO, 0, mmRCC_IOV_FUNC_IDENTIFIER);
>- if (reg & 1)
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
>-
>- if (reg & 0x80000000)
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
>-
>- if (!reg) {
>- if (is_virtual_machine()) /* passthrough mode exclus sriov mod
>*/
>- adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>- }
>-}
>-
> static void nbio_v7_4_init_registers(struct amdgpu_device *adev) {
>
>@@ -561,7 +544,6 @@ const struct amdgpu_nbio_funcs nbio_v7_4_funcs = {
> .get_clockgating_state = nbio_v7_4_get_clockgating_state,
> .ih_control = nbio_v7_4_ih_control,
> .init_registers = nbio_v7_4_init_registers,
>- .detect_hw_virt = nbio_v7_4_detect_hw_virt,
> .remap_hdp_registers = nbio_v7_4_remap_hdp_registers,
> .handle_ras_controller_intr_no_bifring =
>nbio_v7_4_handle_ras_controller_intr_no_bifring,
> .handle_ras_err_event_athub_intr_no_bifring =
>nbio_v7_4_handle_ras_err_event_athub_intr_no_bifring,
>diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c
>b/drivers/gpu/drm/amd/amdgpu/nv.c index 033cbbc..a67d78d 100644
>--- a/drivers/gpu/drm/amd/amdgpu/nv.c
>+++ b/drivers/gpu/drm/amd/amdgpu/nv.c
>@@ -465,8 +465,6 @@ int nv_set_ip_blocks(struct amdgpu_device *adev)
> adev->nbio.funcs = &nbio_v2_3_funcs;
> adev->nbio.hdp_flush_reg = &nbio_v2_3_hdp_flush_reg;
>
>- adev->nbio.funcs->detect_hw_virt(adev);
>-
> if (amdgpu_sriov_vf(adev))
> adev->virt.ops = &xgpu_nv_virt_ops;
>
>diff --git a/drivers/gpu/drm/amd/amdgpu/si.c
>b/drivers/gpu/drm/amd/amdgpu/si.c index 4d415bf..153db3f 100644
>--- a/drivers/gpu/drm/amd/amdgpu/si.c
>+++ b/drivers/gpu/drm/amd/amdgpu/si.c
>@@ -1249,12 +1249,6 @@ static int si_set_uvd_clocks(struct amdgpu_device
>*adev, u32 vclk, u32 dclk)
> return 0;
> }
>
>-static void si_detect_hw_virtualization(struct amdgpu_device *adev) -{
>- if (is_virtual_machine()) /* passthrough mode */
>- adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>-}
>-
> static void si_flush_hdp(struct amdgpu_device *adev, struct amdgpu_ring *ring)
>{
> if (!ring || !ring->funcs->emit_wreg) { @@ -2165,8 +2159,6 @@ static
>const struct amdgpu_ip_block_version si_common_ip_block =
>
> int si_set_ip_blocks(struct amdgpu_device *adev) {
>- si_detect_hw_virtualization(adev);
>-
> switch (adev->asic_type) {
> case CHIP_VERDE:
> case CHIP_TAHITI:
>diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c
>b/drivers/gpu/drm/amd/amdgpu/soc15.c
>index a40499d..a8c90d8 100644
>--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
>+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
>@@ -712,7 +712,6 @@ int soc15_set_ip_blocks(struct amdgpu_device *adev)
> adev->df.funcs = &df_v1_7_funcs;
>
> adev->rev_id = soc15_get_rev_id(adev);
>- adev->nbio.funcs->detect_hw_virt(adev);
>
> if (amdgpu_sriov_vf(adev))
> adev->virt.ops = &xgpu_ai_virt_ops;
>diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c
>b/drivers/gpu/drm/amd/amdgpu/vi.c index 78b3590..0a90c29 100644
>--- a/drivers/gpu/drm/amd/amdgpu/vi.c
>+++ b/drivers/gpu/drm/amd/amdgpu/vi.c
>@@ -448,27 +448,6 @@ static bool vi_read_bios_from_rom(struct
>amdgpu_device *adev,
> return true;
> }
>
>-static void vi_detect_hw_virtualization(struct amdgpu_device *adev) -{
>- uint32_t reg = 0;
>-
>- if (adev->asic_type == CHIP_TONGA ||
>- adev->asic_type == CHIP_FIJI) {
>- reg = RREG32(mmBIF_IOV_FUNC_IDENTIFIER);
>- /* bit0: 0 means pf and 1 means vf */
>- if (REG_GET_FIELD(reg, BIF_IOV_FUNC_IDENTIFIER,
>FUNC_IDENTIFIER))
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_IS_VF;
>- /* bit31: 0 means disable IOV and 1 means enable */
>- if (REG_GET_FIELD(reg, BIF_IOV_FUNC_IDENTIFIER, IOV_ENABLE))
>- adev->virt.caps |= AMDGPU_SRIOV_CAPS_ENABLE_IOV;
>- }
>-
>- if (reg == 0) {
>- if (is_virtual_machine()) /* passthrough mode exclus sr-iov
>mode */
>- adev->virt.caps |= AMDGPU_PASSTHROUGH_MODE;
>- }
>-}
>-
> static const struct amdgpu_allowed_register_entry vi_allowed_read_registers[]
>= {
> {mmGRBM_STATUS},
> {mmGRBM_STATUS2},
>@@ -1730,9 +1709,6 @@ static const struct amdgpu_ip_block_version
>vi_common_ip_block =
>
> int vi_set_ip_blocks(struct amdgpu_device *adev) {
>- /* in early init stage, vbios code won't work */
>- vi_detect_hw_virtualization(adev);
>-
> if (amdgpu_sriov_vf(adev))
> adev->virt.ops = &xgpu_vi_virt_ops;
>
>diff --git a/drivers/gpu/drm/amd/include/asic_reg/nbif/nbif_6_1_offset.h
>b/drivers/gpu/drm/amd/include/asic_reg/nbif/nbif_6_1_offset.h
>index 68d0ffa..92fd27c 100644
>--- a/drivers/gpu/drm/amd/include/asic_reg/nbif/nbif_6_1_offset.h
>+++ b/drivers/gpu/drm/amd/include/asic_reg/nbif/nbif_6_1_offset.h
>@@ -1162,8 +1162,10 @@
> #define mmRCC_CONFIG_MEMSIZE_BASE_IDX
>0
> #define mmRCC_CONFIG_RESERVED
>0x0de4 // duplicate
> #define mmRCC_CONFIG_RESERVED_BASE_IDX
>0
>+#ifndef mmRCC_IOV_FUNC_IDENTIFIER
> #define mmRCC_IOV_FUNC_IDENTIFIER
>0x0de5 // duplicate
> #define mmRCC_IOV_FUNC_IDENTIFIER_BASE_IDX
>0
>+#endif
>
>
> // addressBlock: syshub_mmreg_ind_syshubdec diff --git
>a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_0_offset.h
>b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_0_offset.h
>index 4354622..a7cd760 100644
>--- a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_0_offset.h
>+++ b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_0_offset.h
>@@ -4251,8 +4251,10 @@
> #define mmRCC_CONFIG_MEMSIZE_BASE_IDX
>2
> #define mmRCC_CONFIG_RESERVED
>0x00c4
> #define mmRCC_CONFIG_RESERVED_BASE_IDX
>2
>+#ifndef mmRCC_IOV_FUNC_IDENTIFIER
> #define mmRCC_IOV_FUNC_IDENTIFIER
>0x00c5
> #define mmRCC_IOV_FUNC_IDENTIFIER_BASE_IDX
>2
>+#endif
>
>
> // addressBlock: nbio_nbif0_rcc_dev0_BIFDEC1 diff --git
>a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_4_offset.h
>b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_4_offset.h
>index ce5830e..0c5a08b 100644
>--- a/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_4_offset.h
>+++ b/drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_4_offset.h
>@@ -2687,8 +2687,10 @@
> #define mmRCC_CONFIG_MEMSIZE_BASE_IDX
>2
> #define mmRCC_CONFIG_RESERVED
>0x00c4
> #define mmRCC_CONFIG_RESERVED_BASE_IDX
>2
>+#ifndef mmRCC_IOV_FUNC_IDENTIFIER
> #define mmRCC_IOV_FUNC_IDENTIFIER
>0x00c5
> #define mmRCC_IOV_FUNC_IDENTIFIER_BASE_IDX
>2
>+#endif
>
>
> // addressBlock: nbio_nbif0_rcc_dev0_BIFDEC1
>--
>2.7.4
>
>_______________________________________________
>amd-gfx mailing list
>amd-gfx at lists.freedesktop.org
>https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.free
>desktop.org%2Fmailman%2Flistinfo%2Famd-
>gfx&data=02%7C01%7CEmily.Deng%40amd.com%7C64add81ea4424478f6
>9c08d7cfe2600a%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637
>206443506465121&sdata=b6lgg%2FYLEShzYGiCxvHzS2%2FhBBsggfvYo1LoI
>H7IOIk%3D&reserved=0
More information about the amd-gfx
mailing list