aboutsummaryrefslogtreecommitdiff
path: root/hw/nx-crypto.c
diff options
context:
space:
mode:
authorDan Streetman <ddstreet@ieee.org>2015-04-08 01:54:39 -0400
committerStewart Smith <stewart@linux.vnet.ibm.com>2015-04-08 16:16:13 +1000
commit3e3ed2e52e27d9b3fff7eb3cac97f943a686359a (patch)
treed0aba37a61e831ce6aeff5551679468d90d651ab /hw/nx-crypto.c
parentaa9348f64d701e56868ff662204f83a163240605 (diff)
downloadskiboot-3e3ed2e52e27d9b3fff7eb3cac97f943a686359a.zip
skiboot-3e3ed2e52e27d9b3fff7eb3cac97f943a686359a.tar.gz
skiboot-3e3ed2e52e27d9b3fff7eb3cac97f943a686359a.tar.bz2
nx: use gcid + 1 for CI
In commit e077676 the nx CI's were changed to just use the chip id. That works fine, except CI 0 is reserved, so if there is a chip id of 0, the CI is set to 0, which is invalid. This doesn't currently affect the kernel driver, as it just uses the reserved CI of 0 for all requests, as CI == 0 tells the hw to auto-select which CI to send the request to. However, valid CI's should be assigned; we can use the chip id + 1 to ensure a valid CI. This commit fixes the CI assignment by setting each CI to the chip id + 1. Signed-off-by: Dan Streetman <ddstreet@ieee.org> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/nx-crypto.c')
-rw-r--r--hw/nx-crypto.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/hw/nx-crypto.c b/hw/nx-crypto.c
index 37b64f2..723c571 100644
--- a/hw/nx-crypto.c
+++ b/hw/nx-crypto.c
@@ -48,9 +48,9 @@
static int nx_cfg_sym(u32 gcid, u64 xcfg)
{
u64 cfg, ci, ct;
- int rc;
+ int rc, instance = gcid + 1;
- BUILD_ASSERT(MAX_CHIPS <= NX_SYM_CFG_CI_MAX);
+ BUILD_ASSERT(MAX_CHIPS < NX_SYM_CFG_CI_MAX);
rc = xscom_read(gcid, xcfg, &cfg);
if (rc)
@@ -73,14 +73,14 @@ static int nx_cfg_sym(u32 gcid, u64 xcfg)
*/
ci = GETFIELD(NX_SYM_CFG_CI, cfg) >> NX_SYM_CFG_CI_LSHIFT;
if (!ci)
- prlog(PR_INFO, "NX%d: SYM CI set to %d\n", gcid, gcid);
- else if (ci == gcid)
+ prlog(PR_INFO, "NX%d: SYM CI set to %d\n", gcid, instance);
+ else if (ci == instance)
prlog(PR_INFO, "NX%d: SYM CI already set to %u\n", gcid,
(unsigned int)ci);
else
prlog(PR_INFO, "NX%d: SYM CI already set to %u, "
- "changing to %d\n", gcid, (unsigned int)ci, gcid);
- ci = gcid;
+ "changing to %d\n", gcid, (unsigned int)ci, instance);
+ ci = instance;
cfg = SETFIELD(NX_SYM_CFG_CI, cfg, ci << NX_SYM_CFG_CI_LSHIFT);
cfg = SETFIELD(NX_SYM_CFG_FC_ENABLE, cfg, CFG_SYM_FC_ENABLE);
@@ -101,9 +101,9 @@ static int nx_cfg_sym(u32 gcid, u64 xcfg)
static int nx_cfg_asym(u32 gcid, u64 xcfg)
{
u64 cfg, ci, ct;
- int rc;
+ int rc, instance = gcid + 1;
- BUILD_ASSERT(MAX_CHIPS <= NX_ASYM_CFG_CI_MAX);
+ BUILD_ASSERT(MAX_CHIPS < NX_ASYM_CFG_CI_MAX);
rc = xscom_read(gcid, xcfg, &cfg);
if (rc)
@@ -127,14 +127,14 @@ static int nx_cfg_asym(u32 gcid, u64 xcfg)
*/
ci = GETFIELD(NX_ASYM_CFG_CI, cfg) >> NX_ASYM_CFG_CI_LSHIFT;
if (!ci)
- prlog(PR_INFO, "NX%d: ASYM CI set to %d\n", gcid, gcid);
- else if (ci == gcid)
+ prlog(PR_INFO, "NX%d: ASYM CI set to %d\n", gcid, instance);
+ else if (ci == instance)
prlog(PR_INFO, "NX%d: ASYM CI already set to %u\n", gcid,
(unsigned int)ci);
else
prlog(PR_INFO, "NX%d: ASYM CI already set to %u, "
- "changing to %d\n", gcid, (unsigned int)ci, gcid);
- ci = gcid;
+ "changing to %d\n", gcid, (unsigned int)ci, instance);
+ ci = instance;
cfg = SETFIELD(NX_ASYM_CFG_CI, cfg, ci << NX_ASYM_CFG_CI_LSHIFT);
cfg = SETFIELD(NX_ASYM_CFG_FC_ENABLE, cfg, CFG_ASYM_FC_ENABLE);