summaryrefslogtreecommitdiffstats
path: root/src/kernel/ipc.C
Commit message (Collapse)AuthorAgeFilesLines
* Handle inter-node HRMOR correctly on 3/4 nodesDean Sanner2018-07-181-5/+2
| | | | | | | | | | | | | | | | | | | | | Recent changes to direclty use HRMOR for calculating addresses broke 3 and 4 node configs. This commit removes the multiplication of _nodal_ HRMOR * group id (since the _nodal_ HRMOR mechanism now factors that in). It also uses the IPC addresses to handle start payload, so math/constants are not used to find master node. Change-Id: I919783bc60b5e4914c58f80752881fcb15649e95 CQ:SW438196 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/62659 Reviewed-by: Thi N. Tran <thi@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/62708
* Save HRMOR in mbox scratch reg for IPC messagingPrachi Gupta2018-06-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to know where the IPC message of a given node is, we save off the HRMOR of every node in a hw register. Originally, we were saving this information in the core scratch register. Since, the core scratch registers are wiped off when the cores go into the winkle state, therefore, we were writing to the register after we come out of winkle. But, at that point, we ran into race conditions because other nodes could be ahead and try to access the register on a node that is not exactly out of winkle yet. This fixes the problems by using the mbox scratch register rather than the core scratch register because they are saved off even when the cores go into winkle state. Because the registers are preseved, we can set the value prior to cores coming out of winkle, so, we don't run into the race condition where one node is trying to read a value prior to the other one writing the value. Change-Id: I822bfc8defe09cbb418edc5f36a99b7cd41eec88 CQ:SW435271 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/61093 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
* Fixes to node IPC messaging to handle non-zero base addressesBrian Bakke2018-06-071-27/+65
| | | | | | | | | | | | | | | | | | | | Current code has each Node calculate each Remote Node's IPC area remote address by performing a fixed format calculation. This change has each Node calculating its IPC area Remote address and posting this value to a local SCOM register. A Node reads a Remote Node's SCOM register to acquire the Remote IPC area address. Change-Id: I25260ce180e0d07e5e81990d4c1f99e249912491 RTC:191463 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/59177 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
* Updates to make multinode IPC workDean Sanner2018-02-131-1/+1
| | | | | | | | | | | | | | | | | | -Fixed node/group id calculations -Reduced dbell printk to prevent printk overflow -Fixed architectual hole in how internode IPC works Workitems won't work, instead just always check for IPC on any doorbells to master thread -Changed PIR tracing to print out in hex Change-Id: I25eb7f87fd812a90f98a7724b1ac1100f764fe7b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53187 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Dean Sanner <dsanner@us.ibm.com>
* Multi-Drawer (IPC) Interrupt/Messaging SupportBill Hoffa2018-01-251-9/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | - Use doorbells instead of IPIs (no IPI support using LSI interupts in the XIVE intr architecture) - New message type from kernel to userspace so the kernel can notify the HB userspace Interrupt Resource Provider (INTRP) that an IPC message was sent to the particular HB instance (in P8 this happened automatically as that was part of the IPI architecture). - Re-enable testcase that validates that an IPC message can be successfully sent. Change-Id: Ic846f8dca45217205ed61d8381a573e995cb16f2 RTC: 150861 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/52004 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
* Doorbell Interrupt Base Support for Core/Thread WakeupBill Hoffa2016-05-061-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | This change includes: - Implementation of a generic KernelWorkItem Class - Kernel functionality for doorbell send to specific PIRs - Kernel changes to send core/thread Wakeup doorbells using doorbell_send() + placing KernelWorkItems on a cpu stack obj to be executed during doorbell wakeup - Kernel Interrupt Message handler changes to send wakeup msgs - Interrupt Resource Provider (INTRRP) Changes to handle wakeup msgs and monitor for timeouts - Changes to the IPL flow to invoke proper Core/Thread Wakeup - A basic outline (commented out) for how IPC messages can be implemented in the future Change-Id: I547fb8719bac657def561565ae11ab18cde72096 CMVC-Prereq: 992722 RTC:137564 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22815 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Andrew J. Geissler <andrewg@us.ibm.com> Reviewed-by: Prachi Gupta <pragupta@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
* Avoid deadlock in cross-node IPC messagingDan Crowell2015-06-081-7/+9
| | | | | | | | | | | | | | | | | Move poll for empty queue out of kernel space to allow for the primary thread to see new interrupts and clear out incoming messages. This will prevent 2 nodes from deadlocking one another while they wait for each other to handle the last message that was sent to them. Change-Id: Icbe4e0f621661a37c704b4ac4cdf111664b2039d CQ: SW298667 Backport: release-fips820 Backport: release-fips830 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/17788 Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
* Change copyright prolog for all files to Apache.Patrick Williams2014-05-211-10/+10
| | | | | | | Change-Id: I5664587b4f889099290ef50d50fa9ce5e580e1eb Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/11167 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
* IPC multinode deadlockDoug Gilbert2014-02-131-1/+1
| | | | | | | | | Change-Id: Id3a344bc5ec75abeb9622834589f031f903a60fe CQ: SW246760 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8804 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
* Missing HB interruptsDoug Gilbert2014-02-081-2/+2
| | | | | | | | CQ: SW244546 Change-Id: Ice49cdd7e4acd8168ec2cfc29e1970c5daa49780 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/8666 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
* IPC deadlockDoug Gilbert2014-01-101-4/+6
| | | | | | | | CQ: SW239987 Change-Id: I2a33e767916cd80ae3b4acc604104963cbc648ac Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7828 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
* Inter-processor communications for multinodeDoug Gilbert2013-05-161-0/+97
RTC: 63128 Change-Id: Ica27c7f714bc8b874c9bccb663a32d3cfba37c5a Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/4193 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
OpenPOWER on IntegriCloud