summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
authorDean Sanner <dsanner@us.ibm.com>2012-11-29 15:16:14 -0600
committerDean Sanner <dsanner@us.ibm.com>2012-12-12 21:48:03 -0600
commite907de9748a821c4f2e05c65f5204507a60e7a6d (patch)
tree6c552ad7b9d44f7eae9394e49e6e275c924e2818 /src/usr
parentca616b5527eaf80300fde96fa5ffd42c2160e071 (diff)
downloadblackbird-hostboot-e907de9748a821c4f2e05c65f5204507a60e7a6d.tar.gz
blackbird-hostboot-e907de9748a821c4f2e05c65f5204507a60e7a6d.zip
Load Hostboot Base from PNOR
Add the SBE and secureboot header to the hostboot base image and enable simics to actually pull the image from PNOR instead of directly stuffing cache from file. Also enables Hostboot to execute from HRMOR of 128MB and updates cit script to handle HRMOR Change-Id: Ie414a5f8e43dadf03538d7435f742b2d79db431b Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2473 Tested-by: Jenkins Server Reviewed-by: Dean Sanner <dsanner@us.ibm.com>
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/mbox/mailboxsp.C18
-rw-r--r--src/usr/mbox/mbox_dma_buffer.C45
-rw-r--r--src/usr/mbox/mbox_dma_buffer.H29
-rw-r--r--src/usr/mvpd/makefile2
4 files changed, 65 insertions, 29 deletions
diff --git a/src/usr/mbox/mailboxsp.C b/src/usr/mbox/mailboxsp.C
index 9361e613e..c9b2b9822 100644
--- a/src/usr/mbox/mailboxsp.C
+++ b/src/usr/mbox/mailboxsp.C
@@ -161,7 +161,7 @@ errlHndl_t MailboxSp::_init()
msg_t * msg = msg_allocate();
msg->type = MSG_INITIAL_DMA;
msg->data[0] = 0;
- msg->data[1] = reinterpret_cast<uint64_t>(iv_dmaBuffer.getDmaBufferHead());
+ msg->data[1] =iv_dmaBuffer.toPhysAddr(iv_dmaBuffer.getDmaBufferHead());
msg->extra_data = NULL;
MBOX::send(FSP_MAILBOX_MSGQ,msg);
@@ -446,15 +446,16 @@ void MailboxSp::send_msg(mbox_msg_t * i_msg)
if(payload->extra_data != NULL)
{
memcpy(dma_buffer,payload->extra_data,payload->data[1]);
- iv_msg_to_send.msg_payload.extra_data = dma_buffer;
+ iv_msg_to_send.msg_payload.extra_data =
+ reinterpret_cast<void*>(iv_dmaBuffer.toPhysAddr(dma_buffer));
free(payload->extra_data);
}
else // DMA buffer request from FSP
{
iv_msg_to_send.msg_payload.data[0] = dma_size; // bitmap
- iv_msg_to_send.msg_payload.data[1] =
- reinterpret_cast<uint64_t>(dma_buffer);
+ iv_msg_to_send.msg_payload.data[1] =
+ iv_dmaBuffer.toPhysAddr(dma_buffer);
}
iv_sendq.pop_front();
}
@@ -1151,6 +1152,15 @@ errlHndl_t MailboxSp::handleInterrupt()
if(mbox_status & MBOX_DATA_PENDING)
{
trace_msg("RECV",mbox_msg);
+ //Adjust address back to Virt here if present
+ uint64_t l_dma = reinterpret_cast<uint64_t>(
+ mbox_msg.msg_payload.extra_data);
+ if(l_dma)
+ {
+ mbox_msg.msg_payload.extra_data =
+ iv_dmaBuffer.toVirtAddr(l_dma);
+ }
+
if(mbox_msg.msg_queue_id == HB_MAILBOX_MSGQ)
{
// msg to hb mailbox from fsp mbox
diff --git a/src/usr/mbox/mbox_dma_buffer.C b/src/usr/mbox/mbox_dma_buffer.C
index 0becfb168..2580aaab3 100644
--- a/src/usr/mbox/mbox_dma_buffer.C
+++ b/src/usr/mbox/mbox_dma_buffer.C
@@ -1,25 +1,25 @@
-// IBM_PROLOG_BEGIN_TAG
-// This is an automatically generated prolog.
-//
-// $Source: src/usr/mbox/mbox_dma_buffer.C $
-//
-// IBM CONFIDENTIAL
-//
-// COPYRIGHT International Business Machines Corp. 2012
-//
-// p1
-//
-// Object Code Only (OCO) source materials
-// Licensed Internal Code Source Materials
-// IBM HostBoot Licensed Internal Code
-//
-// The source code for this program is not published or other-
-// wise divested of its trade secrets, irrespective of what has
-// been deposited with the U.S. Copyright Office.
-//
-// Origin: 30
-//
-// IBM_PROLOG_END
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/mbox/mbox_dma_buffer.C $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#include "mbox_dma_buffer.H"
#include <stdlib.h>
#include <assert.h>
@@ -41,6 +41,7 @@ DmaBuffer::DmaBuffer() :
iv_dir(makeMask(VmmManager::MBOX_DMA_PAGES))
{
iv_head = reinterpret_cast<void*>(VmmManager::MBOX_DMA_ADDR);
+ iv_phys_head = mm_virt_to_phys(iv_head);
}
diff --git a/src/usr/mbox/mbox_dma_buffer.H b/src/usr/mbox/mbox_dma_buffer.H
index ab208717d..dc4e86af3 100644
--- a/src/usr/mbox/mbox_dma_buffer.H
+++ b/src/usr/mbox/mbox_dma_buffer.H
@@ -108,6 +108,30 @@ namespace MBOX
VmmManager::MBOX_DMA_PAGESIZE)));
}
+ /**
+ * Get the physical address of DMA buf to send to the FSP
+ * @param[in] i_address, The HB address to translate
+ * @return [FSP physical address]
+ */
+ ALWAYS_INLINE
+ uint64_t toPhysAddr(void * i_address) const
+ {
+ return mm_virt_to_phys(i_address);
+ }
+
+ /**
+ * Get the virtual address of DMA buf to sent by the FSP
+ * @param[in] i_address, The FSP Physical address to translate
+ * @return [HB virtual address]
+ */
+ ALWAYS_INLINE
+ void* toVirtAddr(uint64_t i_address) const
+ {
+ uint64_t base = reinterpret_cast<uint64_t>(iv_head);
+ return reinterpret_cast<void*>(
+ base + (i_address-iv_phys_head));
+ }
+
private:
/**
@@ -123,8 +147,9 @@ namespace MBOX
MAX_MASK_SIZE = sizeof(uint64_t) * 8,
};
- void * iv_head; //!< Start of DMA memory
- uint64_t iv_dir; //!< 1 bit per 1k buffer, 1 = available
+ void * iv_head; //!< Start of DMA memory
+ uint64_t iv_phys_head; //!< Physical translation of iv_head
+ uint64_t iv_dir; //!< 1 bit per 1k buffer, 1 = available
};
}; // namespace
diff --git a/src/usr/mvpd/makefile b/src/usr/mvpd/makefile
index 705f9f4d5..03d6b8355 100644
--- a/src/usr/mvpd/makefile
+++ b/src/usr/mvpd/makefile
@@ -27,6 +27,6 @@ OBJS = mvpd.o
SUBDIRS = test.d
-BINARY_FILES = $(IMGDIR)/procmvpd.dat:92a31d2157813b6a2a8680f1cda2ed98d3ff1c51
+BINARY_FILES = $(IMGDIR)/procmvpd.dat:034614d95e3ffb7d0802d4edbd8fad60dc15b40d
include ${ROOTPATH}/config.mk
OpenPOWER on IntegriCloud