aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1311-drm-amdkfd-VF-do-not-need-to-set-Atomic-Ops-on-PCIE-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1311-drm-amdkfd-VF-do-not-need-to-set-Atomic-Ops-on-PCIE-.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1311-drm-amdkfd-VF-do-not-need-to-set-Atomic-Ops-on-PCIE-.patch138
1 files changed, 138 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1311-drm-amdkfd-VF-do-not-need-to-set-Atomic-Ops-on-PCIE-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1311-drm-amdkfd-VF-do-not-need-to-set-Atomic-Ops-on-PCIE-.patch
new file mode 100644
index 00000000..1bb372e8
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1311-drm-amdkfd-VF-do-not-need-to-set-Atomic-Ops-on-PCIE-.patch
@@ -0,0 +1,138 @@
+From 27081ee1237620c9b866108f29debe7c514e7e24 Mon Sep 17 00:00:00 2001
+From: Shaoyun Liu <Shaoyun.Liu@amd.com>
+Date: Fri, 21 Jul 2017 11:05:32 -0400
+Subject: [PATCH 1311/4131] drm/amdkfd: VF do not need to set Atomic Ops on
+ PCIE configure space
+
+VF will depends on hypervisor to enable the PCIE atomic Ops.
+
+Change-Id: I467a31fbd842fe1e5d3e6da921c684ae65c0778e
+Signed-off-by: Shaoyun Liu <Shaoyun.Liu@amd.com>
+---
+ drivers/gpu/drm/amd/amdkfd/kfd_device.c | 65 +++++++++++++++++++++++++++++++--
+ 1 file changed, 62 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+index 9ffadc0..4ae0edb 100644
+--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+@@ -97,6 +97,20 @@ static const struct kfd_device_info tonga_device_info = {
+ .needs_pci_atomics = true,
+ };
+
++static const struct kfd_device_info tonga_vf_device_info = {
++ .asic_family = CHIP_TONGA,
++ .max_pasid_bits = 16,
++ .max_no_of_hqd = 24,
++ .doorbell_size = 4,
++ .ih_ring_entry_size = 4 * sizeof(uint32_t),
++ .event_interrupt_class = &event_interrupt_class_cik,
++ .num_of_watch_points = 4,
++ .mqd_size_aligned = MQD_SIZE_ALIGNED,
++ .is_need_iommu_device = false,
++ .supports_cwsr = false,
++ .needs_pci_atomics = false,
++};
++
+ static const struct kfd_device_info fiji_device_info = {
+ .asic_family = CHIP_FIJI,
+ .max_pasid_bits = 16,
+@@ -111,6 +125,21 @@ static const struct kfd_device_info fiji_device_info = {
+ .needs_pci_atomics = true,
+ };
+
++static const struct kfd_device_info fiji_vf_device_info = {
++ .asic_family = CHIP_FIJI,
++ .max_pasid_bits = 16,
++ .max_no_of_hqd = 24,
++ .doorbell_size = 4,
++ .ih_ring_entry_size = 4 * sizeof(uint32_t),
++ .event_interrupt_class = &event_interrupt_class_cik,
++ .num_of_watch_points = 4,
++ .mqd_size_aligned = MQD_SIZE_ALIGNED,
++ .is_need_iommu_device = false,
++ .supports_cwsr = true,
++ .needs_pci_atomics = false,
++};
++
++
+ static const struct kfd_device_info polaris10_device_info = {
+ .asic_family = CHIP_POLARIS10,
+ .max_pasid_bits = 16,
+@@ -125,6 +154,20 @@ static const struct kfd_device_info polaris10_device_info = {
+ .needs_pci_atomics = true,
+ };
+
++static const struct kfd_device_info polaris10_vf_device_info = {
++ .asic_family = CHIP_POLARIS10,
++ .max_pasid_bits = 16,
++ .max_no_of_hqd = 24,
++ .doorbell_size = 4,
++ .ih_ring_entry_size = 4 * sizeof(uint32_t),
++ .event_interrupt_class = &event_interrupt_class_cik,
++ .num_of_watch_points = 4,
++ .mqd_size_aligned = MQD_SIZE_ALIGNED,
++ .is_need_iommu_device = false,
++ .supports_cwsr = true,
++ .needs_pci_atomics = false,
++};
++
+ static const struct kfd_device_info polaris11_device_info = {
+ .asic_family = CHIP_POLARIS11,
+ .max_pasid_bits = 16,
+@@ -153,6 +196,21 @@ static const struct kfd_device_info vega10_device_info = {
+ .needs_pci_atomics = true,
+ };
+
++static const struct kfd_device_info vega10_vf_device_info = {
++ .asic_family = CHIP_VEGA10,
++ .max_pasid_bits = 16,
++ .max_no_of_hqd = 24,
++ .doorbell_size = 8,
++ .ih_ring_entry_size = 8 * sizeof(uint32_t),
++ .event_interrupt_class = &event_interrupt_class_v9,
++ .num_of_watch_points = 4,
++ .mqd_size_aligned = MQD_SIZE_ALIGNED,
++ .is_need_iommu_device = false,
++ .supports_cwsr = true,
++ .needs_pci_atomics = false,
++};
++
++
+ struct kfd_deviceid {
+ unsigned short did;
+ const struct kfd_device_info *device_info;
+@@ -220,10 +278,11 @@ static const struct kfd_deviceid supported_devices[] = {
+ { 0x6921, &tonga_device_info }, /* Tonga */
+ { 0x6928, &tonga_device_info }, /* Tonga */
+ { 0x692B, &tonga_device_info }, /* Tonga */
+- { 0x692F, &tonga_device_info }, /* Tonga */
++ { 0x692F, &tonga_vf_device_info }, /* Tonga vf */
+ { 0x6938, &tonga_device_info }, /* Tonga */
+ { 0x6939, &tonga_device_info }, /* Tonga */
+ { 0x7300, &fiji_device_info }, /* Fiji */
++ { 0x730F, &fiji_vf_device_info }, /* Fiji vf*/
+ { 0x67C0, &polaris10_device_info }, /* Polaris10 */
+ { 0x67C1, &polaris10_device_info }, /* Polaris10 */
+ { 0x67C2, &polaris10_device_info }, /* Polaris10 */
+@@ -234,7 +293,7 @@ static const struct kfd_deviceid supported_devices[] = {
+ { 0x67CA, &polaris10_device_info }, /* Polaris10 */
+ { 0x67CC, &polaris10_device_info }, /* Polaris10 */
+ { 0x67CF, &polaris10_device_info }, /* Polaris10 */
+- { 0x67D0, &polaris10_device_info }, /* Polaris10 */
++ { 0x67D0, &polaris10_vf_device_info }, /* Polaris10 vf*/
+ { 0x67DF, &polaris10_device_info }, /* Polaris10 */
+ { 0x67E0, &polaris11_device_info }, /* Polaris11 */
+ { 0x67E1, &polaris11_device_info }, /* Polaris11 */
+@@ -252,7 +311,7 @@ static const struct kfd_deviceid supported_devices[] = {
+ { 0x6864, &vega10_device_info }, /* Vega10 */
+ { 0x6867, &vega10_device_info }, /* Vega10 */
+ { 0x6868, &vega10_device_info }, /* Vega10 */
+- { 0x686C, &vega10_device_info }, /* Vega10 */
++ { 0x686C, &vega10_vf_device_info }, /* Vega10 vf*/
+ { 0x687F, &vega10_device_info } /* Vega10 */
+ };
+
+--
+2.7.4
+