[SEPolicy] Configure policy for gpu service.
Historically GPU service lives in SurfaceFlinger as a convenient hack. Howerver, SurfaceFlinger doesn't need to know about anything specific about GPU capability, and shouldn't know about anything about GPU. This patch moves GPU service out of SurfaceFlinger. GPU service is a service that accesses to GPU driver, queries GPU capabilities and reports back. Currently we use this information in CTS and some benchmarks. BUG: 118347356 Test: Build, flash and boot, use `adb shell cmd gpu vkjson` to verify Change-Id: I007989e0f3f73b5caf80277979986820dd127c32
This commit is contained in:
parent
ac6352d818
commit
7924dc6054
6 changed files with 39 additions and 3 deletions
|
@ -98,6 +98,7 @@ allow adbd system_file:file rx_file_perms;
|
|||
# XXX Run screencap in a separate domain?
|
||||
binder_use(adbd)
|
||||
binder_call(adbd, surfaceflinger)
|
||||
binder_call(adbd, gpuservice)
|
||||
# b/13188914
|
||||
allow adbd gpu_device:chr_file rw_file_perms;
|
||||
allow adbd ion_device:chr_file rw_file_perms;
|
||||
|
@ -140,6 +141,7 @@ allow adbd sepolicy_file:file r_file_perms;
|
|||
# Allow pulling config.gz for CTS purposes
|
||||
allow adbd config_gz:file r_file_perms;
|
||||
|
||||
allow adbd gpu_service:service_manager find;
|
||||
allow adbd surfaceflinger_service:service_manager find;
|
||||
allow adbd bootchart_data_file:dir search;
|
||||
allow adbd bootchart_data_file:file r_file_perms;
|
||||
|
|
|
@ -211,6 +211,7 @@
|
|||
/system/bin/servicemanager u:object_r:servicemanager_exec:s0
|
||||
/system/bin/hwservicemanager u:object_r:hwservicemanager_exec:s0
|
||||
/system/bin/surfaceflinger u:object_r:surfaceflinger_exec:s0
|
||||
/system/bin/gpuservice u:object_r:gpuservice_exec:s0
|
||||
/system/bin/bufferhubd u:object_r:bufferhubd_exec:s0
|
||||
/system/bin/performanced u:object_r:performanced_exec:s0
|
||||
/system/bin/drmserver u:object_r:drmserver_exec:s0
|
||||
|
|
31
private/gpuservice.te
Normal file
31
private/gpuservice.te
Normal file
|
@ -0,0 +1,31 @@
|
|||
# gpu service
|
||||
type gpuservice, domain, coredomain;
|
||||
type gpuservice_exec, system_file_type, exec_type, file_type;
|
||||
|
||||
init_daemon_domain(gpuservice)
|
||||
|
||||
binder_call(gpuservice, adbd)
|
||||
binder_call(gpuservice, shell)
|
||||
binder_use(gpuservice)
|
||||
|
||||
# Access the GPU.
|
||||
allow gpuservice gpu_device:chr_file rw_file_perms;
|
||||
|
||||
# GPU service will need to load GPU driver, for example Vulkan driver in order
|
||||
# to get the capability of the driver.
|
||||
allow gpuservice same_process_hal_file:file { open read getattr execute map };
|
||||
allow gpuservice ion_device:chr_file r_file_perms;
|
||||
get_prop(gpuservice, hwservicemanager_prop)
|
||||
hwbinder_use(gpuservice)
|
||||
|
||||
# Access /dev/graphics/fb0.
|
||||
allow gpuservice graphics_device:dir search;
|
||||
allow gpuservice graphics_device:chr_file rw_file_perms;
|
||||
|
||||
# Use socket supplied by adbd, for cmd gpu vkjson etc.
|
||||
allow gpuservice adbd:unix_stream_socket { read write getattr };
|
||||
|
||||
add_service(gpuservice, gpu_service)
|
||||
|
||||
# Only uncomment below line when in development
|
||||
# userdebug_or_eng(`permissive gpuservice;')
|
|
@ -62,7 +62,7 @@ font u:object_r:font_service:s0
|
|||
android.hardware.fingerprint.IFingerprintDaemon u:object_r:fingerprintd_service:s0
|
||||
gfxinfo u:object_r:gfxinfo_service:s0
|
||||
graphicsstats u:object_r:graphicsstats_service:s0
|
||||
gpu u:object_r:gpu_service:s0
|
||||
gpuservice u:object_r:gpu_service:s0
|
||||
hardware u:object_r:hardware_service:s0
|
||||
hardware_properties u:object_r:hardware_properties_service:s0
|
||||
hdmi_control u:object_r:hdmi_control_service:s0
|
||||
|
|
|
@ -75,9 +75,7 @@ r_dir_file(surfaceflinger, dumpstate)
|
|||
# but seems expected and appropriate for all devices.
|
||||
allow surfaceflinger tee_device:chr_file rw_file_perms;
|
||||
|
||||
|
||||
# media.player service
|
||||
add_service(surfaceflinger, gpu_service)
|
||||
|
||||
# do not use add_service() as hal_graphics_composer_default may be the
|
||||
# provider as well
|
||||
|
|
|
@ -173,6 +173,8 @@ unix_socket_send(system_server, statsdw, statsd)
|
|||
# Communicate over a socket created by surfaceflinger.
|
||||
allow system_server surfaceflinger:unix_stream_socket { read write setopt };
|
||||
|
||||
allow system_server gpuservice:unix_stream_socket { read write setopt };
|
||||
|
||||
# Communicate over a socket created by webview_zygote.
|
||||
allow system_server webview_zygote:unix_stream_socket { read write connectto setopt };
|
||||
|
||||
|
@ -254,6 +256,7 @@ allow system_server {
|
|||
audioserver
|
||||
cameraserver
|
||||
drmserver
|
||||
gpuservice
|
||||
inputflinger
|
||||
mediadrmserver
|
||||
mediaextractor
|
||||
|
@ -651,6 +654,7 @@ allow system_server dumpstate_service:service_manager find;
|
|||
allow system_server fingerprintd_service:service_manager find;
|
||||
allow system_server hal_fingerprint_service:service_manager find;
|
||||
allow system_server gatekeeper_service:service_manager find;
|
||||
allow system_server gpu_service:service_manager find;
|
||||
allow system_server incident_service:service_manager find;
|
||||
allow system_server installd_service:service_manager find;
|
||||
allow system_server keystore_service:service_manager find;
|
||||
|
|
Loading…
Reference in a new issue