marlin: Add VR services configuration/sepolicies/build rules
Added device-specific SELinux policies for VR services, init script rules,
cpuset configurations, etc to marlin/sailfish device definitions.
Bug: 35423314
Test: `m -32` succeeds, sailfish device boots.
Able to launch Daydream app and go through tutorial
Change-Id: I73a8de4dbf4858a066d32593e407d4e4b4bae375
diff --git a/init.common.rc b/init.common.rc
old mode 100755
new mode 100644
index 85e3ee9..e709ead
--- a/init.common.rc
+++ b/init.common.rc
@@ -21,6 +21,49 @@
symlink /sdcard /mnt/sdcard
symlink /sdcard /storage/sdcard0
+ # Setup cpusets used by the VR services.
+ mkdir /dev/cpuset/kernel 0750 root system
+ write /dev/cpuset/kernel/cpus 0
+ write /dev/cpuset/kernel/mems 0
+ chown system system /dev/cpuset/kernel/tasks
+ chmod 0660 /dev/cpuset/kernel/tasks
+
+ mkdir /dev/cpuset/system 0750 root system
+ write /dev/cpuset/system/cpus 0
+ write /dev/cpuset/system/mems 0
+ chown system system /dev/cpuset/system/tasks
+ chmod 0660 /dev/cpuset/system/tasks
+
+ mkdir /dev/cpuset/system/performance 0750 root system
+ write /dev/cpuset/system/performance/cpus 0
+ write /dev/cpuset/system/performance/mems 0
+ chown system system /dev/cpuset/system/performance/tasks
+ chmod 0660 /dev/cpuset/system/performance/tasks
+
+ mkdir /dev/cpuset/system/background 0750 root system
+ write /dev/cpuset/system/background/cpus 0
+ write /dev/cpuset/system/background/mems 0
+ chown system system /dev/cpuset/system/background/tasks
+ chmod 0660 /dev/cpuset/system/background/tasks
+
+ mkdir /dev/cpuset/application 0750 root system
+ write /dev/cpuset/application/cpus 0
+ write /dev/cpuset/application/mems 0
+ chown system system /dev/cpuset/application/tasks
+ chmod 0660 /dev/cpuset/application/tasks
+
+ mkdir /dev/cpuset/application/performance 0750 root system
+ write /dev/cpuset/application/performance/cpus 0
+ write /dev/cpuset/application/performance/mems 0
+ chown system system /dev/cpuset/application/performance/tasks
+ chmod 0660 /dev/cpuset/application/performance/tasks
+
+ mkdir /dev/cpuset/application/background 0750 root system
+ write /dev/cpuset/application/background/cpus 0
+ write /dev/cpuset/application/background/mems 0
+ chown system system /dev/cpuset/application/background/tasks
+ chmod 0660 /dev/cpuset/application/background/tasks
+
# update cpusets now that processors are up
write /dev/cpuset/top-app/cpus 0-3
write /dev/cpuset/foreground/cpus 0-3
@@ -32,6 +75,16 @@
write /dev/stune/top-app/schedtune.boost 10
write /dev/stune/top-app/schedtune.prefer_idle 1
+ # Create UDS structure for base VR services.
+ mkdir /dev/socket/pdx 0775 system system
+ mkdir /dev/socket/pdx/system 0775 system system
+ mkdir /dev/socket/pdx/system/buffer_hub 0775 system system
+ mkdir /dev/socket/pdx/system/performance 0775 system system
+ mkdir /dev/socket/pdx/system/vr 0775 system system
+ mkdir /dev/socket/pdx/system/vr/display 0775 system system
+ mkdir /dev/socket/pdx/system/vr/pose 0775 system system
+ mkdir /dev/socket/pdx/system/vr/sensors 0775 system system
+
on fs
wait /dev/block/platform/soc/${ro.boot.bootdevice}
symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
@@ -65,6 +118,7 @@
# Start services for bootanim
start hwservicemanager
start servicemanager
+ start vr_wm
start surfaceflinger
start bootanim
@@ -276,6 +330,17 @@
chown system system /dev/cpuset/camera-daemon/tasks
chmod 0664 /dev/cpuset/camera-daemon/tasks
+ # Update DVR cpusets to boot-time values.
+ write /dev/cpuset/kernel/cpus 0-3
+ write /dev/cpuset/system/cpus 0-3
+ write /dev/cpuset/system/performance/cpus 0-3
+ write /dev/cpuset/system/background/cpus 0-3
+ write /dev/cpuset/system/cpus 0-3
+ write /dev/cpuset/application/cpus 0-3
+ write /dev/cpuset/application/performance/cpus 0-3
+ write /dev/cpuset/application/background/cpus 0-3
+ write /dev/cpuset/application/cpus 0-3
+
# Bluetooth
chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power
chown bluetooth net_bt /sys/class/rfkill/rfkill0/type
@@ -664,6 +729,16 @@
write /dev/cpuset/foreground/cpus 0-2
write /dev/cpuset/background/cpus 0
write /dev/cpuset/system-background/cpus 0-2
+
+ # Update DVR cpusets to runtime values.
+ write /dev/cpuset/kernel/cpus 0,1
+ write /dev/cpuset/system/performance/cpus 2
+ write /dev/cpuset/system/background/cpus 0
+ write /dev/cpuset/system/cpus 0,2
+ write /dev/cpuset/application/performance/cpus 3
+ write /dev/cpuset/application/background/cpus 1
+ write /dev/cpuset/application/cpus 1,3
+
# end boot time fs tune
write /sys/block/sda/queue/read_ahead_kb 512
write /sys/block/sda/queue/nr_requests 128
diff --git a/sepolicy/bufferhubd.te b/sepolicy/bufferhubd.te
new file mode 100644
index 0000000..1d4174d
--- /dev/null
+++ b/sepolicy/bufferhubd.te
@@ -0,0 +1,3 @@
+# /sys/devices/soc/900000.qcom,mdss_mdp/caps
+# Needed to determine display-compatable buffer formats.
+allow bufferhubd sysfs_mdss_mdp_caps:file r_file_perms;
diff --git a/sepolicy/file.te b/sepolicy/file.te
index f0e5c29..d3ca4b4 100644
--- a/sepolicy/file.te
+++ b/sepolicy/file.te
@@ -21,6 +21,7 @@
type sysfs_camera, sysfs_type, fs_type;
type sysfs_enable_ps_sensor, sysfs_type, fs_type;
type sysfs_fingerprint, sysfs_type, fs_type;
+type sysfs_mdss_mdp_caps, sysfs_type, fs_type;
type sysfs_msm_subsys, sysfs_type, fs_type;
type sysfs_msm_subsys_restart, sysfs_type, fs_type;
type sysfs_msm_core, sysfs_type, fs_type;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 3b1f73d..5b285e2 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -136,6 +136,7 @@
/sys/devices/bt_qca[0-9]+/rfkill/rfkill0/state u:object_r:sysfs_bluetooth_writable:s0
/sys/devices/soc/leds-qpnp-ffffffc0f92b4400/leds(/.*)? u:object_r:sysfs_leds:s0
/sys/devices/soc/900000\.qcom,mdss_mdp/900000\.qcom,mdss_mdp:qcom,mdss_fb_primary/leds(/.*)? u:object_r:sysfs_leds:s0
+/sys/devices/soc/900000\.qcom,mdss_mdp/caps u:object_r:sysfs_mdss_mdp_caps:s0
/sys/module/msm_core(/.*)? u:object_r:sysfs_msm_core:s0
/sys/devices/soc/70000\.qcom,msm-core(/.*)? u:object_r:sysfs_msm_core:s0
/sys/module/msm_thermal(/.*)? u:object_r:sysfs_thermal:s0