diff --git a/prebuilts/api/26.0/26.0.ignore.cil b/prebuilts/api/26.0/26.0.ignore.cil
new file mode 100644
index 0000000000000000000000000000000000000000..990c3ff7219d506b56154b87cf2414fa8f40e5c3
--- /dev/null
+++ b/prebuilts/api/26.0/26.0.ignore.cil
@@ -0,0 +1,5 @@
+;; new_objects - a collection of types that have been introduced that have no
+;;   analogue in older policy.  Thus, we do not need to map these types to
+;;   previous ones.  Add here to pass checkapi tests.
+(typeattribute new_objects)
+(typeattributeset new_objects (kmsg_debug_device))
diff --git a/private/file_contexts b/private/file_contexts
index 40b66cd9cf4198fe7f688c039cf2d5c567476a3f..85080b5679fa25c1cac8499a38e750fcd8d88365 100644
--- a/private/file_contexts
+++ b/private/file_contexts
@@ -107,6 +107,7 @@
 /dev/ptmx		u:object_r:ptmx_device:s0
 /dev/pvrsrvkm		u:object_r:gpu_device:s0
 /dev/kmsg		u:object_r:kmsg_device:s0
+/dev/kmsg_debug	u:object_r:kmsg_debug_device:s0
 /dev/null		u:object_r:null_device:s0
 /dev/nvhdcp1		u:object_r:video_device:s0
 /dev/random		u:object_r:random_device:s0
diff --git a/public/crash_dump.te b/public/crash_dump.te
index ee617a171cf7fdc90531093b61943d88e65ede2f..c101b34d6b12a6516a11be95890368605976e8bc 100644
--- a/public/crash_dump.te
+++ b/public/crash_dump.te
@@ -15,6 +15,9 @@ dontaudit crash_dump self:capability { sys_ptrace };
 
 userdebug_or_eng(`
   allow crash_dump logd:process { ptrace signal sigchld sigstop sigkill };
+
+  # Let crash_dump write to /dev/kmsg_debug crashes that happen before logd comes up.
+  allow crash_dump kmsg_debug_device:chr_file { open append };
 ')
 
 # Use inherited file descriptors
diff --git a/public/device.te b/public/device.te
index 15799b89a67905f96cf11e1f6ec21f4ab6035828..9fedc184c00eaedab219c64d536be824e2cce3ae 100644
--- a/public/device.te
+++ b/public/device.te
@@ -37,6 +37,7 @@ type mtp_device, dev_type, mlstrustedobject;
 type nfc_device, dev_type;
 type ptmx_device, dev_type, mlstrustedobject;
 type kmsg_device, dev_type;
+type kmsg_debug_device, dev_type;
 type null_device, dev_type, mlstrustedobject;
 type random_device, dev_type, mlstrustedobject;
 type sensors_device, dev_type;
diff --git a/public/init.te b/public/init.te
index 01d308afd61c9833c8416b25d738b0a038fe4cc9..2271618d40039c5c15c8ab80ff5c5b827c023b09 100644
--- a/public/init.te
+++ b/public/init.te
@@ -13,6 +13,10 @@ allow init tmpfs:chr_file { create setattr unlink rw_file_perms };
 # /dev/kmsg
 allow init tmpfs:chr_file relabelfrom;
 allow init kmsg_device:chr_file { write relabelto };
+# /dev/kmsg_debug
+userdebug_or_eng(`
+  allow init kmsg_debug_device:chr_file { write relabelto };
+')
 # /dev/__properties__
 allow init properties_device:dir relabelto;
 allow init properties_serial:file { write relabelto };