manifest: Require 'compatible' property in 'hypervisor' node
Other hypervisors also use a 'hypervisor' node in the FDT to pass
config information to the VMs. Add requirement to specify which
hypervisors the node is compatible with. The 'compatible' property
is a list of NULL-separated strings in the format
"<manufacturer>,<model>". Following the naming convention of other
projects, we will use "hafnium,hafnium" as a match-all-versions value,
and later add "hafnium,hafnium_<version>" values to match specific
releases of Hafnium.
Bug: 117551352
Change-Id: Ie6dadcdace37318d4d122e80fefe989715ee9cc9
diff --git a/inc/hf/manifest.h b/inc/hf/manifest.h
index 37f26f3..dd7a122 100644
--- a/inc/hf/manifest.h
+++ b/inc/hf/manifest.h
@@ -47,11 +47,13 @@
MANIFEST_ERROR_CORRUPTED_FDT,
MANIFEST_ERROR_NO_ROOT_FDT_NODE,
MANIFEST_ERROR_NO_HYPERVISOR_FDT_NODE,
+ MANIFEST_ERROR_NOT_COMPATIBLE,
MANIFEST_ERROR_RESERVED_VM_ID,
MANIFEST_ERROR_NO_PRIMARY_VM,
MANIFEST_ERROR_TOO_MANY_VMS,
MANIFEST_ERROR_PROPERTY_NOT_FOUND,
MANIFEST_ERROR_MALFORMED_STRING,
+ MANIFEST_ERROR_MALFORMED_STRING_LIST,
MANIFEST_ERROR_MALFORMED_INTEGER,
MANIFEST_ERROR_INTEGER_OVERFLOW,
};
diff --git a/inc/hf/memiter.h b/inc/hf/memiter.h
index a44ffef..f8e8c25 100644
--- a/inc/hf/memiter.h
+++ b/inc/hf/memiter.h
@@ -32,5 +32,5 @@
void memiter_dlog_str(struct memiter *it);
bool memiter_advance(struct memiter *it, size_t v);
-const void *memiter_base(struct memiter *it);
-size_t memiter_size(struct memiter *it);
+const void *memiter_base(const struct memiter *it);
+size_t memiter_size(const struct memiter *it);
diff --git a/inc/hf/std.h b/inc/hf/std.h
index 1c4458c..9c6b494 100644
--- a/inc/hf/std.h
+++ b/inc/hf/std.h
@@ -38,4 +38,6 @@
void memcpy_s(void *dest, rsize_t destsz, const void *src, rsize_t count);
void memmove_s(void *dest, rsize_t destsz, const void *src, rsize_t count);
+void *memchr(const void *ptr, int ch, size_t count);
+
size_t strnlen_s(const char *str, size_t strsz);