[PATCH 2/2] Use 'Primary' instead of 'Current' for flash sides

Sam Mendoza-Jonas sam at mendozajonas.com
Fri Feb 26 12:55:48 AEDT 2016


When queried libflash will return the 'first' flash side (ie. the one
with the lowest TOC address), however we label this the 'Current' side
which is incorrect if the machine has booted from the alternate side.

A future fix will inlcude additional platform logic to determine which
flash side is current; in the interim label the first flash side as
'Primary' instead of 'Current'.

Signed-off-by: Sam Mendoza-Jonas <sam at mendozajonas.com>
---
 discover/hostboot.c           |  4 ++--
 lib/pb-protocol/pb-protocol.c | 20 ++++++++++----------
 lib/types/types.h             |  4 ++--
 ui/ncurses/nc-sysinfo.c       |  8 ++++----
 4 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/discover/hostboot.c b/discover/hostboot.c
index 9a27b0f..bc9a3ba 100644
--- a/discover/hostboot.c
+++ b/discover/hostboot.c
@@ -12,11 +12,11 @@ void hostboot_load_versions(struct system_info *info)
 {
 	int n = 0;
 
-	n = flash_parse_version(info, &info->platform_current, true);
+	n = flash_parse_version(info, &info->platform_primary, true);
 	if (n < 0)
 		pb_log("Failed to read platform versions for current side\n");
 	else
-		info->n_current = n;
+		info->n_primary = n;
 
 	n = flash_parse_version(info, &info->platform_other, false);
 	if (n < 0)
diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c
index 3953ee1..9091709 100644
--- a/lib/pb-protocol/pb-protocol.c
+++ b/lib/pb-protocol/pb-protocol.c
@@ -226,8 +226,8 @@ int pb_protocol_system_info_len(const struct system_info *sysinfo)
 		4 + 4;
 
 	len +=	4;
-	for (i = 0; i < sysinfo->n_current; i++)
-		len += 4 + optional_strlen(sysinfo->platform_current[i]);
+	for (i = 0; i < sysinfo->n_primary; i++)
+		len += 4 + optional_strlen(sysinfo->platform_primary[i]);
 	len +=	4;
 	for (i = 0; i < sysinfo->n_other; i++)
 		len += 4 + optional_strlen(sysinfo->platform_other[i]);
@@ -409,10 +409,10 @@ int pb_protocol_serialise_system_info(const struct system_info *sysinfo,
 	pos += pb_protocol_serialise_string(pos, sysinfo->type);
 	pos += pb_protocol_serialise_string(pos, sysinfo->identifier);
 
-	*(uint32_t *)pos = __cpu_to_be32(sysinfo->n_current);
+	*(uint32_t *)pos = __cpu_to_be32(sysinfo->n_primary);
 	pos += sizeof(uint32_t);
-	for (i = 0; i < sysinfo->n_current; i++)
-		pos += pb_protocol_serialise_string(pos, sysinfo->platform_current[i]);
+	for (i = 0; i < sysinfo->n_primary; i++)
+		pos += pb_protocol_serialise_string(pos, sysinfo->platform_primary[i]);
 
 	*(uint32_t *)pos = __cpu_to_be32(sysinfo->n_other);
 	pos += sizeof(uint32_t);
@@ -845,14 +845,14 @@ int pb_protocol_deserialise_system_info(struct system_info *sysinfo,
 		goto out;
 
 	/* Platform version strings for openpower platforms */
-	if (read_u32(&pos, &len, &sysinfo->n_current))
+	if (read_u32(&pos, &len, &sysinfo->n_primary))
 		goto out;
-	sysinfo->platform_current = talloc_array(sysinfo, char *,
-						sysinfo->n_current);
-	for (i = 0; i < sysinfo->n_current; i++) {
+	sysinfo->platform_primary = talloc_array(sysinfo, char *,
+						sysinfo->n_primary);
+	for (i = 0; i < sysinfo->n_primary; i++) {
 		if (read_string(sysinfo, &pos, &len, &tmp))
 			goto out;
-		sysinfo->platform_current[i] = talloc_strdup(sysinfo, tmp);
+		sysinfo->platform_primary[i] = talloc_strdup(sysinfo, tmp);
 	}
 
 	if (read_u32(&pos, &len, &sysinfo->n_other))
diff --git a/lib/types/types.h b/lib/types/types.h
index 63c1c7c..6ff4620 100644
--- a/lib/types/types.h
+++ b/lib/types/types.h
@@ -93,9 +93,9 @@ struct blockdev_info {
 struct system_info {
 	char			*type;
 	char			*identifier;
-	char			**platform_current;
+	char			**platform_primary;
 	char			**platform_other;
-	unsigned int		n_current;
+	unsigned int		n_primary;
 	unsigned int		n_other;
 	char			**bmc_current;
 	char			**bmc_golden;
diff --git a/ui/ncurses/nc-sysinfo.c b/ui/ncurses/nc-sysinfo.c
index 5d64550..ce8957c 100644
--- a/ui/ncurses/nc-sysinfo.c
+++ b/ui/ncurses/nc-sysinfo.c
@@ -65,11 +65,11 @@ static void sysinfo_screen_populate(struct sysinfo_screen *screen,
 	line("%-12s %s", _("System type:"), sysinfo->type ?: "");
 	line("%-12s %s", _("System id:"),   sysinfo->identifier ?: "");
 
-	if (sysinfo->n_current) {
+	if (sysinfo->n_primary) {
 		line(NULL);
-		line("%s", _("Current platform versions:"));
-		for (i = 0; i < sysinfo->n_current; i++) {
-			line("\t%s", sysinfo->platform_current[i] ?: "");
+		line("%s", _("Primary platform versions:"));
+		for (i = 0; i < sysinfo->n_primary; i++) {
+			line("\t%s", sysinfo->platform_primary[i] ?: "");
 		}
 	}
 
-- 
2.7.1



More information about the Petitboot mailing list