SDOCM00106949 IPC interrupt preempts itself on ARP32 (EVE)
authorRamsey Harris <ramsey@ti.com>
Fri, 14 Mar 2014 22:19:09 +0000 (15:19 -0700)
committerChris Ring <cring@ti.com>
Mon, 17 Mar 2014 23:30:14 +0000 (16:30 -0700)
Changed default interrupt vector to actual values. When creating Hwi
instances, compute a mask which blocks both interrupt vectors. Set
the mask in Hwi create params.

packages/ti/sdo/ipc/family/vayu/NotifySetup.c
packages/ti/sdo/ipc/family/vayu/NotifySetup.xdc

index 80a4bf8a1929d7467e4ef4c81f7c5fcdd269fba1..2fd11ef17cbc30ace594febfe5677204cbf9b3fb 100644 (file)
@@ -246,11 +246,12 @@ Void NotifySetup_plugHwi(UInt16 remoteProcId, Int cpuIntrNum,
     UInt        combinedEventId;
 #elif defined(xdc_target__isaCompatible_arp32)
     UInt        mbxIdx;
+    Bits16      mask;
 #endif
 
     Error_init(&eb);
 
-    /* disable global interrupts (TODO: should be a gated module) */
+    /* disable interrupts */
     key = Hwi_disable();
 
     /* map processor id to virtual id */
@@ -309,9 +310,15 @@ Void NotifySetup_plugHwi(UInt16 remoteProcId, Int cpuIntrNum,
     if (NotifySetup_module->numPlugged[mbxIdx] == 1) {
         eventId = NotifySetup_module->interruptTable[virtId];
 
+        /* compute the hwi mask */
+        mask = (1 << NotifySetup_eveIntVectId_INTC0)
+                | (1 << NotifySetup_eveIntVectId_INTC1);
+
         Hwi_Params_init(&hwiParams);
         hwiParams.arg = eventId;
         hwiParams.vectorNum = cpuIntrNum;
+        hwiParams.maskSetting = Hwi_MaskingOption_BITMASK;
+        hwiParams.disableIerMask = mask;
 
         Hwi_create(eventId, NotifySetup_dispatchIsr, &hwiParams, &eb);
         /* TODO: add error handling */
@@ -331,7 +338,7 @@ Void NotifySetup_plugHwi(UInt16 remoteProcId, Int cpuIntrNum,
 #error Invalid target
 #endif
 
-    /* restore global interrupts */
+    /* restore interrupts */
     Hwi_restore(key);
 }
 
index 44d3ff2cdab98b320eafb6d913398a7117b435eb..6a51ee53a0fb6641ef5f20698494e526fc837368 100644 (file)
@@ -73,8 +73,8 @@ module NotifySetup inherits ti.sdo.ipc.interfaces.INotifySetup
     /*!
      *  Interrupt vector id for Vayu/EVE
      */
-    config UInt eveIntVectId_INTC0 = -1;
-    config UInt eveIntVectId_INTC1 = -1;
+    config UInt eveIntVectId_INTC0 = 4;
+    config UInt eveIntVectId_INTC1 = 8;
 
     /*!
      *  Available notify drivers.