$OpenBSD: patch-virt-what_in,v 1.5 2018/05/04 19:43:46 jasper Exp $

From d7fd8a7843030d2b1719353edfcd49dba3000122 Mon Sep 17 00:00:00 2001
From: Jasper Lievisse Adriaanse <jasper@humppa.nl>
Date: Wed, 25 Apr 2018 16:41:32 +0200
Subject: [PATCH] Allow using sysctl, for example when /proc isn't available

From eefc1e7e3dd8fb422baf0f13aec1df9880541b83 Mon Sep 17 00:00:00 2001
From: Jasper Lievisse Adriaanse <bug@jasper.la>
Date: Thu, 10 Aug 2017 08:44:01 +0100
Subject: [PATCH] Missing have_cpuinfo check.

Index: virt-what.in
--- virt-what.in.orig
+++ virt-what.in
@@ -38,6 +38,13 @@ have_cpuinfo () {
     test -e "${root}/proc/cpuinfo"
 }
 
+use_sysctl() {
+    # Lacking /proc, on some systems sysctl can be used instead.
+    OS=$(uname) || fail "failed to get operating system name"
+
+    [ "$OS" == "OpenBSD" ]
+}
+
 fail () {
     echo "virt-what: $1" >&2
     exit 1
@@ -303,12 +310,18 @@ if ! "$skip_qemu_kvm"; then
         # We are running as a spapr KVM guest on ppc64
         echo kvm
         skip_lkvm=true
+    elif use_sysctl; then
+        # SmartOS KVM
+        product=$(sysctl -n hw.product)
+        if echo "$product" | grep -q 'SmartDC HVM'; then
+            echo kvm
+        fi
     else
         # This is known to fail for qemu with the explicit -cpu
         # option, since /proc/cpuinfo will not contain the QEMU
         # string. QEMU 2.10 added a new CPUID leaf, so this
         # problem only triggered for older QEMU
-        if grep -q 'QEMU' "${root}/proc/cpuinfo"; then
+        if have_cpuinfo && grep -q 'QEMU' "${root}/proc/cpuinfo"; then
             echo qemu
         fi
     fi
