device_google_gs-common/interrupts/init.interrupts.rc
Chintan Pandya d6b9cc46bf Introduce interrupts module for debug and trace
Interrupts module has following functions to perform:

1. Apply boot time configuration
	- Create a new trace instance
	- Enable required irq and irq_gia events in the
          instance
	- Apply required filters on the high frequency
          events
	- Set instance's trace buffer size
	- Enable tracing
2. Sepolicy for every required access
3. Copy interrupts trace buffer to dumpsys whenever triggered

AVC denials:
avc:  denied  { search } for  comm="dump_interrupts" name="radio" dev="dm-53" ino=373 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=dir permissive=1
avc:  denied  { write } for  comm="dump_interrupts" name="all_logs" dev="dm-53" ino=7808 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=dir permissive=1
avc:  denied  { add_name } for  comm="dump_interrupts" name="interrupts" scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=dir permissive=1
avc:  denied  { create } for  comm="dump_interrupts" name="interrupts" scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=dir permissive=1
avc:  denied  { search } for  comm="dump_interrupts" name="instances" dev="tracefs" ino=2151 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:debugfs_tracing_instances:s0 tclass=dir permissive=1
avc:  denied  { search } for  comm="dump_interrupts" name="radio" dev="dm-53" ino=373 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=dir permissive=1
avc:  denied  { read } for  comm="dump_interrupts" name="trace" dev="tracefs" ino=143409 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:tracefs_instances_interrupts:s0 tclass=file permissive=1
avc:  denied  { open } for  comm="dump_interrupts" path="/sys/kernel/tracing/instances/irq_gia_google/trace" dev="tracefs" ino=143409 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:tracefs_instances_interrupts:s0 tclass=file permissive=1
avc:  denied  { create } for  comm="dump_interrupts" name="interrupts_trace" scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=file permissive=1
avc:  denied  { write open } for  comm="dump_interrupts" path="/data/vendor/radio/logs/always-on/all_logs/interrupts/interrupts_trace" dev="dm-53" ino=8102 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=file permissive=1
avc:  denied  { getattr } for  comm="dump_interrupts" path="/sys/kernel/tracing/instances/irq_gia_google/trace" dev="tracefs" ino=141578 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:tracefs_instances_interrupts:s0 tclass=file permissive=1
avc:  denied  { getattr } for  comm="dump_interrupts" path="/data/vendor/radio/logs/always-on/all_logs/interrupts/interrupts_trace" dev="dm-53" ino=7965 scontext=u:r:dump_interrupts_traces:s0 tcontext=u:object_r:radio_vendor_data_file:s0 tclass=file permissive=1

Flag: EXEMPT, add interrupts traces dump program to bugreport
Bug: 376124648
Test: Manually checked boot time trace configuration. Collected
      `adb bugreport`. And checked interrupt traces are dumped
      into and extracted out from the bugreport. More details
      in the bug.
Change-Id: I08872a321fa9726b50a54aeb0a91ed63c0652a3a
2024-11-22 21:38:57 +00:00

23 lines
1.3 KiB
Text

on init
# Create the directory for the trace instance during early init
mkdir /sys/kernel/tracing/instances/irq_gia_google 0755 root root
chown system system /sys/kernel/tracing/instances/irq_gia_google
chown system system /sys/kernel/tracing/instances/irq_gia_google/trace
# Enable gia events
write /sys/kernel/tracing/instances/irq_gia_google/events/irq_gia/enable 1
# There are some very high frequency IRQ events happening all the time. Tracing
# them is not absolute necessity, but a flood of them is noise for more interesting
# events that we want to capture. All these high frequency IRQs have virq < 11.
write /sys/kernel/tracing/instances/irq_gia_google/events/irq/filter "irq > 11"
write /sys/kernel/tracing/instances/irq_gia_google/events/irq/irq_handler_entry/enable 1
write /sys/kernel/tracing/instances/irq_gia_google/events/irq/irq_handler_exit/enable 1
# Keep the buffer size small. This size is practically enough for debug purpose.
# Having low size helps because this entire buffer gets dumped in bugreport.
# Having a large size can impact bugreport size and time it takes to pack/unpack.
write /sys/kernel/tracing/instances/irq_gia_google/buffer_size_kb 512
# Go!
write /sys/kernel/tracing/instances/irq_gia_google/tracing_on 1