diff --git a/elements/ironic-agent/package-installs.yaml b/elements/ironic-agent/package-installs.yaml
index e97444df6..71994e333 100644
--- a/elements/ironic-agent/package-installs.yaml
+++ b/elements/ironic-agent/package-installs.yaml
@@ -1,6 +1,12 @@
 tgt:
 curl:
+# dmidecode does not exist for ppc* arches so add includes for non ppc
 dmidecode:
+    arch: x86_64
+dmidecode:
+    arch: i386
+dmidecode:
+    arch: amd64
 ipmitool:
 qemu-utils:
 gcc:
diff --git a/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk b/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk
index 2e98d181b..4d70c7242 100644
--- a/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk
+++ b/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk
@@ -44,11 +44,22 @@ CPU_ARCH=$(lscpu | grep Architecture | awk '{ print $2 }')
 update ".cpu_arch = \"$CPU_ARCH\""
 
 RAM=0
-for i in $(dmidecode --type memory | grep Size | awk '{ print $2; }' | grep -E '[0-9]+');
-do
-    RAM=$(( RAM + $i ));
-done
-update ".memory_mb = $RAM"
+if hash dmidecode 2>/dev/null; then
+    for i in $(dmidecode --type memory | grep Size | awk '{ print $2; }' | grep -E '[0-9]+');
+    do
+        RAM=$(( RAM + $i ));
+    done
+elif hash lshw 2>/dev/null; then
+    # dmidecode does not exist for ppc, but lshw should (for both)
+    MEMORY=$(lshw -c memory -short -quiet | grep -i 'system memory' | awk '{ print $3; }')
+    if [[ "${MEMORY}" =~ GiB$ ]]; then
+        RAMGB=${MEMORY::-3}
+        RAM=$(( RAMGB * 1024 ));
+    elif [[ "${MEMORY}" =~ MiB$ ]]; then
+        RAM=${MEMORY::-3}
+    fi
+fi
+[ ${RAM} -gt 0 ] && update ".memory_mb = $RAM"
 
 CPUS=$(cat /proc/cpuinfo | grep processor | wc -l)
 update ".cpus = $CPUS"
diff --git a/elements/ironic-discoverd-ramdisk/package-installs.yaml b/elements/ironic-discoverd-ramdisk/package-installs.yaml
index 4e475c026..824cb2f0b 100644
--- a/elements/ironic-discoverd-ramdisk/package-installs.yaml
+++ b/elements/ironic-discoverd-ramdisk/package-installs.yaml
@@ -1,5 +1,12 @@
 curl:
+# dmidecode does not exist for ppc* arches so add includes for non ppc
 dmidecode:
+    arch: x86_64
+dmidecode:
+    arch: i386
+dmidecode:
+    arch: amd64
 ipmitool:
 jq:
+lshw:
 util-linux: