Add the access_kregistry pmem device to QEMU

This was forgotten about when it was added to the crosvm backend. Add it
to the QEMU backend as well, so this feature can work on QEMU.

Change-Id: I2e51af07d14b38a511571ab58a60316dacf8fb51
diff --git a/host/libs/vm_manager/qemu_manager.cpp b/host/libs/vm_manager/qemu_manager.cpp
index b1bcc90..eb2241e 100644
--- a/host/libs/vm_manager/qemu_manager.cpp
+++ b/host/libs/vm_manager/qemu_manager.cpp
@@ -126,6 +126,8 @@
 
   bool is_arm = android::base::EndsWith(config_->qemu_binary(), "system-aarch64");
 
+  auto access_kregistry_size_bytes = cuttlefish::FileSize(instance.access_kregistry_path());
+
   cuttlefish::Command qemu_cmd(config_->qemu_binary(), stop);
   qemu_cmd.AddParameter("-name");
   qemu_cmd.AddParameter("guest=", instance.instance_name(), ",debug-threads=on");
@@ -135,7 +137,8 @@
   qemu_cmd.AddParameter(machine, ",usb=off,dump-guest-core=off");
 
   qemu_cmd.AddParameter("-m");
-  qemu_cmd.AddParameter(config_->memory_mb());
+  qemu_cmd.AddParameter(config_->memory_mb(), "M,maxmem=", config_->memory_mb() +
+                        access_kregistry_size_bytes / 1024 / 1024, "M");
 
   qemu_cmd.AddParameter("-overcommit");
   qemu_cmd.AddParameter("mem-lock=off");
@@ -252,6 +255,14 @@
   }
 
   qemu_cmd.AddParameter("-object");
+  qemu_cmd.AddParameter("memory-backend-file,id=objpmem0,share,mem-path=",
+                        instance.access_kregistry_path(), ",size=",
+                        access_kregistry_size_bytes);
+
+  qemu_cmd.AddParameter("-device");
+  qemu_cmd.AddParameter("virtio-pmem-pci,disable-legacy=on,memdev=objpmem0,id=pmem0");
+
+  qemu_cmd.AddParameter("-object");
   qemu_cmd.AddParameter("rng-random,id=objrng0,filename=/dev/urandom");
 
   qemu_cmd.AddParameter("-device");
diff --git a/shared/sepolicy/vendor/genfs_contexts b/shared/sepolicy/vendor/genfs_contexts
index c968b64..4a74c84 100644
--- a/shared/sepolicy/vendor/genfs_contexts
+++ b/shared/sepolicy/vendor/genfs_contexts
@@ -33,8 +33,8 @@
 genfscon sysfs /devices/platform/rtc-test.2/wakeup/wakeup2 u:object_r:sysfs_wakeup:s0
 
 # qemu (x86)
-genfscon sysfs /devices/pci0000:00/0000:00:09.0/virtio7/net u:object_r:sysfs_net:s0 # buried_eth0 & wlan0
-genfscon sysfs /devices/pci0000:00/0000:00:0a.0/virtio8/net u:object_r:sysfs_net:s0 # rmnet0
+genfscon sysfs /devices/pci0000:00/0000:00:0a.0/virtio8/net u:object_r:sysfs_net:s0 # buried_eth0 & wlan0
+genfscon sysfs /devices/pci0000:00/0000:00:0b.0/virtio9/net u:object_r:sysfs_net:s0 # rmnet0
 # FIXME: Add sysfs_gpu labels for qemu
 ## find /sys/devices/platform/* -type d -name 'rtc[0-9]' | sed 's,/rtc[0-9],,'
 genfscon sysfs /devices/pnp0/00:00/rtc u:object_r:sysfs_rtc:s0
@@ -46,8 +46,8 @@
 genfscon sysfs /devices/platform/rtc-test.2/wakeup/wakeup16 u:object_r:sysfs_wakeup:s0
 
 # qemu (arm64)
-genfscon sysfs /devices/platform/4010000000.pcie/pci0000:00/0000:00:08.0/virtio7/net u:object_r:sysfs_net:s0 # buried_eth0 & wlan0
-genfscon sysfs /devices/platform/4010000000.pcie/pci0000:00/0000:00:09.0/virtio8/net u:object_r:sysfs_net:s0 # rmnet0
+genfscon sysfs /devices/platform/4010000000.pcie/pci0000:00/0000:00:09.0/virtio8/net u:object_r:sysfs_net:s0 # buried_eth0 & wlan0
+genfscon sysfs /devices/platform/4010000000.pcie/pci0000:00/0000:00:0a.0/virtio9/net u:object_r:sysfs_net:s0 # rmnet0
 # FIXME: Add sysfs_gpu labels for qemu
 ## find /sys/devices/platform/* -type d -name 'rtc[0-9]' | sed 's,/rtc[0-9],,'
 genfscon sysfs /devices/platform/9010000.pl031/rtc u:object_r:sysfs_rtc:s0