]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
Merge tag 'nfs-for-6.5-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_irq.c
index fafebec5b7b66da8911ffb2f112817a1f1f626ae..5273decc5753b45fff9f12f21bc6e567b13d56f3 100644 (file)
@@ -99,6 +99,21 @@ const char *soc15_ih_clientid_name[] = {
        "MP1"
 };
 
+const int node_id_to_phys_map[NODEID_MAX] = {
+       [AID0_NODEID] = 0,
+       [XCD0_NODEID] = 0,
+       [XCD1_NODEID] = 1,
+       [AID1_NODEID] = 1,
+       [XCD2_NODEID] = 2,
+       [XCD3_NODEID] = 3,
+       [AID2_NODEID] = 2,
+       [XCD4_NODEID] = 4,
+       [XCD5_NODEID] = 5,
+       [AID3_NODEID] = 3,
+       [XCD6_NODEID] = 6,
+       [XCD7_NODEID] = 7,
+};
+
 /**
  * amdgpu_irq_disable_all - disable *all* interrupts
  *
@@ -109,7 +124,7 @@ const char *soc15_ih_clientid_name[] = {
 void amdgpu_irq_disable_all(struct amdgpu_device *adev)
 {
        unsigned long irqflags;
-       unsigned i, j, k;
+       unsigned int i, j, k;
        int r;
 
        spin_lock_irqsave(&adev->irq.lock, irqflags);
@@ -124,7 +139,6 @@ void amdgpu_irq_disable_all(struct amdgpu_device *adev)
                                continue;
 
                        for (k = 0; k < src->num_types; ++k) {
-                               atomic_set(&src->enabled_types[k], 0);
                                r = src->funcs->set(adev, src, k,
                                                    AMDGPU_IRQ_STATE_DISABLE);
                                if (r)
@@ -268,11 +282,11 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
                int nvec = pci_msix_vec_count(adev->pdev);
                unsigned int flags;
 
-               if (nvec <= 0) {
+               if (nvec <= 0)
                        flags = PCI_IRQ_MSI;
-               } else {
+               else
                        flags = PCI_IRQ_MSI | PCI_IRQ_MSIX;
-               }
+
                /* we only need one vector */
                nvec = pci_alloc_irq_vectors(adev->pdev, 1, 1, flags);
                if (nvec > 0) {
@@ -331,7 +345,7 @@ void amdgpu_irq_fini_hw(struct amdgpu_device *adev)
  */
 void amdgpu_irq_fini_sw(struct amdgpu_device *adev)
 {
-       unsigned i, j;
+       unsigned int i, j;
 
        for (i = 0; i < AMDGPU_IRQ_CLIENTID_MAX; ++i) {
                if (!adev->irq.client[i].sources)
@@ -365,7 +379,7 @@ void amdgpu_irq_fini_sw(struct amdgpu_device *adev)
  * 0 on success or error code otherwise
  */
 int amdgpu_irq_add_id(struct amdgpu_device *adev,
-                     unsigned client_id, unsigned src_id,
+                     unsigned int client_id, unsigned int src_id,
                      struct amdgpu_irq_src *source)
 {
        if (client_id >= AMDGPU_IRQ_CLIENTID_MAX)
@@ -417,7 +431,7 @@ void amdgpu_irq_dispatch(struct amdgpu_device *adev,
 {
        u32 ring_index = ih->rptr >> 2;
        struct amdgpu_iv_entry entry;
-       unsigned client_id, src_id;
+       unsigned int client_id, src_id;
        struct amdgpu_irq_src *src;
        bool handled = false;
        int r;
@@ -453,7 +467,8 @@ void amdgpu_irq_dispatch(struct amdgpu_device *adev,
                        handled = true;
 
        } else {
-               DRM_DEBUG("Unhandled interrupt src_id: %d\n", src_id);
+               DRM_DEBUG("Unregistered interrupt src_id: %d of client_id:%d\n",
+                       src_id, client_id);
        }
 
        /* Send it to amdkfd as well if it isn't already handled */
@@ -492,7 +507,7 @@ void amdgpu_irq_delegate(struct amdgpu_device *adev,
  * Updates interrupt state for the specific source (all ASICs).
  */
 int amdgpu_irq_update(struct amdgpu_device *adev,
-                            struct amdgpu_irq_src *src, unsigned type)
+                            struct amdgpu_irq_src *src, unsigned int type)
 {
        unsigned long irqflags;
        enum amdgpu_interrupt_state state;
@@ -501,7 +516,8 @@ int amdgpu_irq_update(struct amdgpu_device *adev,
        spin_lock_irqsave(&adev->irq.lock, irqflags);
 
        /* We need to determine after taking the lock, otherwise
-          we might disable just enabled interrupts again */
+        * we might disable just enabled interrupts again
+        */
        if (amdgpu_irq_enabled(adev, src, type))
                state = AMDGPU_IRQ_STATE_ENABLE;
        else
@@ -555,7 +571,7 @@ void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev)
  * 0 on success or error code otherwise
  */
 int amdgpu_irq_get(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
-                  unsigned type)
+                  unsigned int type)
 {
        if (!adev->irq.installed)
                return -ENOENT;
@@ -585,7 +601,7 @@ int amdgpu_irq_get(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
  * 0 on success or error code otherwise
  */
 int amdgpu_irq_put(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
-                  unsigned type)
+                  unsigned int type)
 {
        if (!adev->irq.installed)
                return -ENOENT;
@@ -619,7 +635,7 @@ int amdgpu_irq_put(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
  * invalid parameters
  */
 bool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src,
-                       unsigned type)
+                       unsigned int type)
 {
        if (!adev->irq.installed)
                return false;
@@ -732,7 +748,7 @@ void amdgpu_irq_remove_domain(struct amdgpu_device *adev)
  * Returns:
  * Linux IRQ
  */
-unsigned amdgpu_irq_create_mapping(struct amdgpu_device *adev, unsigned src_id)
+unsigned int amdgpu_irq_create_mapping(struct amdgpu_device *adev, unsigned int src_id)
 {
        adev->irq.virq[src_id] = irq_create_mapping(adev->irq.domain, src_id);
 
This page took 0.040382 seconds and 4 git commands to generate.