aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorAnanth N Mavinakayanahalli <ananth@in.ibm.com>2015-02-19 15:38:17 +0530
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-02-23 13:32:00 +1100
commit4db0c1e4f67474e1af7e9a391598d2a776485edd (patch)
tree07ac0cc5599d90b8adf66b0de6ee4f7f9ce8115a /core
parent7b75c5832f55921294d1083d3083feb8ecbeb0e4 (diff)
downloadskiboot-4db0c1e4f67474e1af7e9a391598d2a776485edd.zip
skiboot-4db0c1e4f67474e1af7e9a391598d2a776485edd.tar.gz
skiboot-4db0c1e4f67474e1af7e9a391598d2a776485edd.tar.bz2
OCC/hostservices: Queue pre-preload HBRT lid load requests
There is no guarantee that a hostservices lid load request will arrive after we have cached the required lids. For such cases, queue the request and service them after caching. Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core')
-rw-r--r--core/hostservices.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/core/hostservices.c b/core/hostservices.c
index 1c41a95..769d6f0 100644
--- a/core/hostservices.c
+++ b/core/hostservices.c
@@ -394,6 +394,13 @@ struct hbrt_lid {
};
static LIST_HEAD(hbrt_lid_list);
+static bool hbrt_lid_preload_complete = false;
+
+bool hservices_lid_preload_complete(void)
+{
+ return hbrt_lid_preload_complete;
+}
+
/* TODO: Few of the following routines can be generalized */
static int __hservice_lid_load(uint32_t lid, void **buf, size_t *len)
{
@@ -468,6 +475,9 @@ void hservices_lid_preload(void)
/* Currently HBRT needs only one (OCC) lid */
for (i = 0; i < num_lids; i++)
__hservice_lid_preload(lid_list[i]);
+
+ hbrt_lid_preload_complete = true;
+ occ_poke_load_queue();
}
static int hservice_lid_load(uint32_t lid, void **buf, size_t *len)