Merge branch 'android-msm-pixel-4.19-rvc' into android-msm-pixel-4.19-rvc-qpr1

Bug: 169785565
Change-Id: Ice16d647127f3c8a4014d120154b4a5f9960d602
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index e1b10cc..a147c8d 100644
--- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -490,10 +490,14 @@
 			cut the overhead, others just disable the usage. So
 			only cgroup_disable=memory is actually worthy}
 
-	cgroup_no_v1=	[KNL] Disable one, multiple, all cgroup controllers in v1
-			Format: { controller[,controller...] | "all" }
+	cgroup_no_v1=	[KNL] Disable cgroup controllers and named hierarchies in v1
+			Format: { { controller | "all" | "named" }
+			          [,{ controller | "all" | "named" }...] }
 			Like cgroup_disable, but only applies to cgroup v1;
 			the blacklisted controllers remain available in cgroup2.
+			"all" blacklists all controllers and "named" disables
+			named mounts. Specifying both "all" and "named" disables
+			all v1 hierarchies.
 
 	cgroup.memory=	[KNL] Pass options to the cgroup memory controller.
 			Format: <string>
diff --git a/android/abi_gki_aarch64_redbull b/android/abi_gki_aarch64_redbull
index 97f2313..09c6aa2 100644
--- a/android/abi_gki_aarch64_redbull
+++ b/android/abi_gki_aarch64_redbull
@@ -1314,9 +1314,6 @@
   proc_create
   seq_write
 
-# required by google-battery.ko
-  simple_strtoull
-
 # required by google-bms.ko
   full_name_hash
 
@@ -1570,6 +1567,7 @@
   set_page_dirty_lock
   sg_alloc_table_from_pages
   sysfs_remove_files
+  __tracepoint_gpu_mem_total
   unmapped_area_topdown
   unregister_shrinker
   vm_insert_page
diff --git a/android/abi_gki_aarch64_redbull.xml b/android/abi_gki_aarch64_redbull.xml
index ccc0645..9af9a9f 100644
--- a/android/abi_gki_aarch64_redbull.xml
+++ b/android/abi_gki_aarch64_redbull.xml
@@ -1806,7 +1806,6 @@
       <elf-symbol name='simple_read_from_buffer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x619cb7dd'/>
       <elf-symbol name='simple_setattr' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x2b0a4e73'/>
       <elf-symbol name='simple_statfs' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x6d93430'/>
-      <elf-symbol name='simple_strtoull' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x61b7b126'/>
       <elf-symbol name='simple_write_to_buffer' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xbb4f4766'/>
       <elf-symbol name='single_open' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x869936da'/>
       <elf-symbol name='single_release' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xe7b5c2a2'/>
@@ -2332,6 +2331,7 @@
       <elf-symbol name='__per_cpu_offset' size='256' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x280f9f14'/>
       <elf-symbol name='__stack_chk_guard' size='8' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x8f678b07'/>
       <elf-symbol name='__tracepoint_clock_set_rate' size='48' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xc6628d14'/>
+      <elf-symbol name='__tracepoint_gpu_mem_total' size='48' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x41b4b352'/>
       <elf-symbol name='__tracepoint_smmu_init' size='48' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x114ca641'/>
       <elf-symbol name='__tracepoint_tlbi_end' size='48' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0xfb2ee69b'/>
       <elf-symbol name='__tracepoint_tlbi_start' size='48' type='object-type' binding='global-binding' visibility='default-visibility' is-defined='yes' crc='0x4d01053e'/>
@@ -3981,6 +3981,14 @@
           <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/radix-tree.h' line='101' column='1'/>
         </data-member>
       </union-decl>
+      <union-decl name='key_payload' size-in-bits='256' visibility='default' filepath='include/linux/key.h' line='94' column='1' id='2888d74a'>
+        <data-member access='private'>
+          <var-decl name='rcu_data0' type-id='eaa32e2f' visibility='default' filepath='include/linux/key.h' line='95' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='data' type-id='209ef23f' visibility='default' filepath='include/linux/key.h' line='96' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='callback_head' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/types.h' line='227' column='1' id='e3d8ce29'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='next' type-id='69c138b1' visibility='default' filepath='include/linux/types.h' line='228' column='1'/>
@@ -6211,14 +6219,6 @@
           <var-decl name='bits' type-id='f066dd3c' visibility='default' filepath='include/linux/cpumask.h' line='16' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='key_payload' size-in-bits='256' visibility='default' filepath='include/linux/key.h' line='94' column='1' id='2888d74a'>
-        <data-member access='private'>
-          <var-decl name='rcu_data0' type-id='eaa32e2f' visibility='default' filepath='include/linux/key.h' line='95' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='data' type-id='209ef23f' visibility='default' filepath='include/linux/key.h' line='96' column='1'/>
-        </data-member>
-      </union-decl>
       <class-decl name='__anonymous_struct__9' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/sched.h' line='796' column='1' id='707fa311'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='blocked' type-id='f9b06939' visibility='default' filepath='include/linux/sched.h' line='797' column='1'/>
@@ -13885,17 +13885,6 @@
           <var-decl name='pipe' type-id='15d29711' visibility='default' filepath='include/linux/uio.h' line='39' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='1090' column='1' id='f2cbeae1'>
-        <data-member access='private'>
-          <var-decl name='nfs_fl' type-id='17bacae5' visibility='default' filepath='include/linux/fs.h' line='1091' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='nfs4_fl' type-id='b811a3f5' visibility='default' filepath='include/linux/fs.h' line='1092' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='afs' type-id='3fe10a72' visibility='default' filepath='include/linux/fs.h' line='1096' column='1'/>
-        </data-member>
-      </union-decl>
       <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f4cbee07'>
         <data-member access='private'>
           <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
@@ -14632,7 +14621,7 @@
           <var-decl name='rq_list' type-id='72f469ec' visibility='default' filepath='block/blk-mq.h' line='16' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f2cbeae2'>
+      <union-decl name='__anonymous_union__5' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f2cbeae1'>
         <member-type access='private'>
           <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='99' column='1' id='dc07530e'>
             <data-member access='public' layout-offset-in-bits='0'>
@@ -14716,6 +14705,20 @@
         </data-member>
       </union-decl>
       <union-decl name='__anonymous_union__11' is-anonymous='yes' visibility='default' filepath='include/linux/sched.h' line='1483' column='1' id='a00c90a8'/>
+      <union-decl name='__anonymous_union__14' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1' id='9b0c88c9'>
+        <data-member access='private'>
+          <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='189' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='special_vec' type-id='40af3609' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='completion_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='191' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='192' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='rq_qos_ops' size-in-bits='512' is-struct='yes' visibility='default' filepath='block/blk-rq-qos.h' line='27' column='1' id='59969f99'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='throttle' type-id='9e68f457' visibility='default' filepath='block/blk-rq-qos.h' line='28' column='1'/>
@@ -14861,7 +14864,6 @@
         <enumerator name='HRTIMER_MODE_ABS_PINNED_SOFT' value='6'/>
         <enumerator name='HRTIMER_MODE_REL_PINNED_SOFT' value='7'/>
       </enum-decl>
-      <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/>
       <qualified-type-def type-id='b6993efc' const='yes' id='545b687b'/>
       <pointer-type-def type-id='545b687b' size-in-bits='64' id='1ce53783'/>
       <pointer-type-def type-id='b92c8d0d' size-in-bits='64' id='84c6078d'/>
@@ -14935,12 +14937,6 @@
         <parameter type-id='26a90f95'/>
         <return type-id='26a90f95'/>
       </function-decl>
-      <function-decl name='simple_strtoull' mangled-name='simple_strtoull' filepath='include/linux/kernel.h' line='447' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='simple_strtoull'>
-        <parameter type-id='80f4b756'/>
-        <parameter type-id='9b23c9ad'/>
-        <parameter type-id='f0981eeb'/>
-        <return type-id='3a47d82b'/>
-      </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='block/keyslot-manager.c' language='LANG_C89'>
       <array-type-def dimensions='1' type-id='cb92d198' size-in-bits='infinite' id='5e2617b4'>
@@ -17044,7 +17040,7 @@
           <var-decl name='fs' type-id='a8ce468c' visibility='default' filepath='include/uapi/linux/ethtool.h' line='979' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1472'>
-          <var-decl name='' type-id='9b0c88c9' visibility='default' filepath='include/uapi/linux/ethtool.h' line='980' column='1'/>
+          <var-decl name='' type-id='9b0c88ca' visibility='default' filepath='include/uapi/linux/ethtool.h' line='980' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1504'>
           <var-decl name='rule_locs' type-id='d5016f6f' visibility='default' filepath='include/uapi/linux/ethtool.h' line='984' column='1'/>
@@ -17244,7 +17240,7 @@
           <var-decl name='data' type-id='f41331a9' visibility='default' filepath='include/uapi/linux/ethtool.h' line='859' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__14' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/ethtool.h' line='980' column='1' id='9b0c88c9'>
+      <union-decl name='__anonymous_union__14' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/ethtool.h' line='980' column='1' id='9b0c88ca'>
         <data-member access='private'>
           <var-decl name='rule_cnt' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/ethtool.h' line='981' column='1'/>
         </data-member>
@@ -20818,6 +20814,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/block/zram/zram_drv.c' language='LANG_C89'>
+      <pointer-type-def type-id='26a90f95' size-in-bits='64' id='9b23c9ad'/>
       <qualified-type-def type-id='37ce495e' const='yes' id='1e6236d9'/>
       <pointer-type-def type-id='1e6236d9' size-in-bits='64' id='c79c8089'/>
       <pointer-type-def type-id='37ce495e' size-in-bits='64' id='301185b4'/>
@@ -24555,10 +24552,6 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/gpu/drm/drm_bridge.c' language='LANG_C89'>
-      <class-decl name='drm_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='e96cc76d'/>
-      <class-decl name='drm_pending_vblank_event' is-struct='yes' visibility='default' is-declaration-only='yes' id='64249e24'/>
-      <pointer-type-def type-id='e96cc76d' size-in-bits='64' id='8898134e'/>
-      <pointer-type-def type-id='64249e24' size-in-bits='64' id='6301fad3'/>
       <function-decl name='of_drm_find_bridge' mangled-name='of_drm_find_bridge' filepath='drivers/gpu/drm/drm_bridge.c' line='361' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='of_drm_find_bridge'>
         <parameter type-id='9a537bbf' name='np' filepath='drivers/gpu/drm/drm_bridge.c' line='361' column='1'/>
         <return type-id='8582e5ec'/>
@@ -24626,6 +24619,17 @@
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/gpu/drm/drm_crtc.c' language='LANG_C89'>
       <class-decl name='drm_encoder' is-struct='yes' visibility='default' is-declaration-only='yes' id='d12f4a1d'/>
+      <union-decl name='__anonymous_union__' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/drm/drm_vblank.h' line='57' column='1' id='ac5ab59c'>
+        <data-member access='private'>
+          <var-decl name='base' type-id='9857a465' visibility='default' filepath='include/drm/drm_vblank.h' line='61' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='vbl' type-id='bc6bca7e' visibility='default' filepath='include/drm/drm_vblank.h' line='71' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='seq' type-id='3aca1eaa' visibility='default' filepath='include/drm/drm_vblank.h' line='76' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='drm_mode_modeinfo' size-in-bits='544' is-struct='yes' visibility='default' filepath='include/uapi/drm/drm_mode.h' line='223' column='1' id='9d0ae2a2'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='clock' type-id='3f1a6b60' visibility='default' filepath='include/uapi/drm/drm_mode.h' line='224' column='1'/>
@@ -24980,7 +24984,7 @@
           <var-decl name='checksum' type-id='f9b06939' visibility='default' filepath='include/drm/drm_connector.h' line='1186' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='drm_device' size-in-bits='13824' is-struct='yes' visibility='default' filepath='include/drm/drm_device.h' line='31' column='1' id='e96cc76e'>
+      <class-decl name='drm_device' size-in-bits='13824' is-struct='yes' visibility='default' filepath='include/drm/drm_device.h' line='31' column='1' id='e96cc76d'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='legacy_dev_list' type-id='72f469ec' visibility='default' filepath='include/drm/drm_device.h' line='32' column='1'/>
         </data-member>
@@ -26700,7 +26704,7 @@
           <var-decl name='num_connectors' type-id='b59d7dce' visibility='default' filepath='include/drm/drm_crtc.h' line='1068' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='drm_pending_vblank_event' size-in-bits='960' is-struct='yes' visibility='default' filepath='include/drm/drm_vblank.h' line='41' column='1' id='64249e25'>
+      <class-decl name='drm_pending_vblank_event' size-in-bits='960' is-struct='yes' visibility='default' filepath='include/drm/drm_vblank.h' line='41' column='1' id='64249e24'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='base' type-id='2aa44dc9' visibility='default' filepath='include/drm/drm_vblank.h' line='45' column='1'/>
         </data-member>
@@ -27990,7 +27994,7 @@
       <pointer-type-def type-id='0f47abb9' size-in-bits='64' id='54a031e1'/>
       <pointer-type-def type-id='ea65fb21' size-in-bits='64' id='35078cb9'/>
       <pointer-type-def type-id='fe3cfa56' size-in-bits='64' id='d664ced0'/>
-      <pointer-type-def type-id='e96cc76e' size-in-bits='64' id='8898134d'/>
+      <pointer-type-def type-id='e96cc76d' size-in-bits='64' id='8898134d'/>
       <pointer-type-def type-id='210ca0c0' size-in-bits='64' id='b1097666'/>
       <pointer-type-def type-id='55efd1a3' size-in-bits='64' id='11e02f83'/>
       <pointer-type-def type-id='11e02f83' size-in-bits='64' id='cceb070b'/>
@@ -28025,7 +28029,7 @@
       <pointer-type-def type-id='ae5fc04a' size-in-bits='64' id='b4b06bb8'/>
       <pointer-type-def type-id='970d3828' size-in-bits='64' id='c353cb3e'/>
       <pointer-type-def type-id='b9675ea0' size-in-bits='64' id='c5491078'/>
-      <pointer-type-def type-id='64249e25' size-in-bits='64' id='6301fad2'/>
+      <pointer-type-def type-id='64249e24' size-in-bits='64' id='6301fad2'/>
       <pointer-type-def type-id='60f2213f' size-in-bits='64' id='a6711537'/>
       <pointer-type-def type-id='a1700eb5' size-in-bits='64' id='d0835005'/>
       <pointer-type-def type-id='58313606' size-in-bits='64' id='841501c0'/>
@@ -30760,6 +30764,10 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/gpu/drm/drm_panel.c' language='LANG_C89'>
+      <class-decl name='drm_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='e96cc76e'/>
+      <class-decl name='drm_pending_vblank_event' is-struct='yes' visibility='default' is-declaration-only='yes' id='64249e25'/>
+      <pointer-type-def type-id='e96cc76e' size-in-bits='64' id='8898134e'/>
+      <pointer-type-def type-id='64249e25' size-in-bits='64' id='6301fad3'/>
       <function-decl name='drm_panel_init' mangled-name='drm_panel_init' filepath='drivers/gpu/drm/drm_panel.c' line='48' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_panel_init'>
         <parameter type-id='c5491077' name='panel' filepath='drivers/gpu/drm/drm_panel.c' line='48' column='1'/>
         <return type-id='48b5725f'/>
@@ -31033,10 +31041,10 @@
           <var-decl name='pixel_clock' type-id='23119536' visibility='default' filepath='include/drm/drm_edid.h' line='165' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='16'>
-          <var-decl name='data' type-id='ac5ab59c' visibility='default' filepath='include/drm/drm_edid.h' line='169' column='1'/>
+          <var-decl name='data' type-id='ac5ab59d' visibility='default' filepath='include/drm/drm_edid.h' line='169' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/drm/drm_edid.h' line='166' column='1' id='ac5ab59c'>
+      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/drm/drm_edid.h' line='166' column='1' id='ac5ab59d'>
         <data-member access='private'>
           <var-decl name='pixel_data' type-id='42c5f701' visibility='default' filepath='include/drm/drm_edid.h' line='167' column='1'/>
         </data-member>
@@ -31367,17 +31375,6 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/gpu/drm/drm_vblank.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__2' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/drm/drm_vblank.h' line='57' column='1' id='f9cbf5ea'>
-        <data-member access='private'>
-          <var-decl name='base' type-id='9857a465' visibility='default' filepath='include/drm/drm_vblank.h' line='61' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='vbl' type-id='bc6bca7e' visibility='default' filepath='include/drm/drm_vblank.h' line='71' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='seq' type-id='3aca1eaa' visibility='default' filepath='include/drm/drm_vblank.h' line='76' column='1'/>
-        </data-member>
-      </union-decl>
       <function-decl name='drm_vblank_init' mangled-name='drm_vblank_init' filepath='drivers/gpu/drm/drm_vblank.c' line='435' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='drm_vblank_init'>
         <parameter type-id='8898134d' name='dev' filepath='drivers/gpu/drm/drm_vblank.c' line='435' column='1'/>
         <parameter type-id='f0981eeb' name='num_crtcs' filepath='drivers/gpu/drm/drm_vblank.c' line='435' column='1'/>
@@ -31405,6 +31402,9 @@
         <return type-id='b50a4934'/>
       </function-decl>
     </abi-instr>
+    <abi-instr version='1.0' address-size='64' path='drivers/gpu/trace/trace_gpu_mem.c' language='LANG_C89'>
+      <var-decl name='__tracepoint_gpu_mem_total' type-id='4ca0c298' mangled-name='__tracepoint_gpu_mem_total' visibility='default' filepath='include/trace/events/gpu_mem.h' line='30' column='1' elf-symbol-id='__tracepoint_gpu_mem_total'/>
+    </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/hid/hid-magicmouse.c' language='LANG_C89'>
       <function-decl name='input_mt_report_slot_state' mangled-name='input_mt_report_slot_state' filepath='include/linux/input/mt.h' line='103' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='input_mt_report_slot_state'>
         <parameter type-id='74b427eb'/>
@@ -33337,7 +33337,7 @@
           <var-decl name='replay' type-id='74a8f9e9' visibility='default' filepath='include/uapi/linux/input.h' line='455' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='u' type-id='ac5ab59d' visibility='default' filepath='include/uapi/linux/input.h' line='463' column='1'/>
+          <var-decl name='u' type-id='ac5ab59e' visibility='default' filepath='include/uapi/linux/input.h' line='463' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='ff_trigger' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/uapi/linux/input.h' line='316' column='1' id='bd8e6f06'>
@@ -33356,7 +33356,7 @@
           <var-decl name='delay' type-id='d315442e' visibility='default' filepath='include/uapi/linux/input.h' line='308' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/input.h' line='457' column='1' id='ac5ab59d'>
+      <union-decl name='__anonymous_union__' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/input.h' line='457' column='1' id='ac5ab59e'>
         <data-member access='private'>
           <var-decl name='constant' type-id='777eafbe' visibility='default' filepath='include/uapi/linux/input.h' line='458' column='1'/>
         </data-member>
@@ -34272,7 +34272,7 @@
           <var-decl name='iova_end' type-id='cf29c9b3' visibility='default' filepath='include/linux/io-pgtable.h' line='120' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='' type-id='ac5ab59e' visibility='default' filepath='include/linux/io-pgtable.h' line='123' column='1'/>
+          <var-decl name='' type-id='ac5ab59f' visibility='default' filepath='include/linux/io-pgtable.h' line='123' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='iommu_gather_ops' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/io-pgtable.h' line='41' column='1' id='acda99cf'>
@@ -34292,7 +34292,7 @@
           <var-decl name='free_pages_exact' type-id='3e23f107' visibility='default' filepath='include/linux/io-pgtable.h' line='47' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/io-pgtable.h' line='123' column='1' id='ac5ab59e'>
+      <union-decl name='__anonymous_union__' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/io-pgtable.h' line='123' column='1' id='ac5ab59f'>
         <data-member access='private'>
           <var-decl name='arm_lpae_s1_cfg' type-id='e7f43f7a' visibility='default' filepath='include/linux/io-pgtable.h' line='128' column='1'/>
         </data-member>
@@ -34594,7 +34594,7 @@
       <array-type-def dimensions='1' type-id='c0e2acc9' size-in-bits='704' id='2cc49b73'>
         <subrange length='11' type-id='7ff19f0f' id='847bc017'/>
       </array-type-def>
-      <class-decl name='hotplug_slot' size-in-bits='384' is-struct='yes' visibility='default' is-declaration-only='yes' id='2dfcfaf9'/>
+      <class-decl name='hotplug_slot' is-struct='yes' visibility='default' is-declaration-only='yes' id='2dfcfaf9'/>
       <class-decl name='pci_vpd' is-struct='yes' visibility='default' is-declaration-only='yes' id='059a2256'/>
       <class-decl name='platform_msi_priv_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='5d1d7263'/>
       <array-type-def dimensions='1' type-id='c9d64c0d' size-in-bits='256' id='774e8b2d'>
@@ -34603,7 +34603,7 @@
       <array-type-def dimensions='1' type-id='5218160d' size-in-bits='8448' id='221adaf7'>
         <subrange length='11' type-id='7ff19f0f' id='847bc017'/>
       </array-type-def>
-      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/msi.h' line='81' column='1' id='ac5ab59f'>
+      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/msi.h' line='81' column='1' id='ac5ab5a0'>
         <data-member access='private'>
           <var-decl name='' type-id='e7f43f7b' visibility='default' filepath='include/linux/msi.h' line='83' column='1'/>
         </data-member>
@@ -35082,7 +35082,7 @@
       </class-decl>
       <class-decl name='msi_controller' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/linux/msi.h' line='183' column='1' id='1f8bced9'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='owner' type-id='2730d016' visibility='default' filepath='include/linux/msi.h' line='184' column='1'/>
+          <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/msi.h' line='184' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
           <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='include/linux/msi.h' line='185' column='1'/>
@@ -35413,6 +35413,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/irqchip/irq-gic-v3.c' language='LANG_C89'>
+      <class-decl name='module' is-struct='yes' visibility='default' is-declaration-only='yes' id='29476916'/>
       <class-decl name='msi_desc' size-in-bits='640' is-struct='yes' visibility='default' is-declaration-only='yes' id='d2b46ce8'/>
       <class-decl name='msi_msg' size-in-bits='96' is-struct='yes' visibility='default' is-declaration-only='yes' id='03ba410a'/>
       <array-type-def dimensions='1' type-id='e53d7a90' size-in-bits='infinite' id='a5527824'>
@@ -35929,7 +35930,7 @@
           <var-decl name='parent_irq' type-id='95e97e5e' visibility='default' filepath='include/linux/irqdesc.h' line='105' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3328'>
-          <var-decl name='owner' type-id='2730d016' visibility='default' filepath='include/linux/irqdesc.h' line='106' column='1'/>
+          <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/irqdesc.h' line='106' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3392'>
           <var-decl name='name' type-id='80f4b756' visibility='default' filepath='include/linux/irqdesc.h' line='107' column='1'/>
@@ -36627,7 +36628,7 @@
           <var-decl name='type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2383' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='u' type-id='ac5ab5a0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2391' column='1'/>
+          <var-decl name='u' type-id='ac5ab5a1' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2391' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
           <var-decl name='pending' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2392' column='1'/>
@@ -36645,7 +36646,7 @@
           <var-decl name='reserved' type-id='7f84eb57' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2396' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2384' column='1' id='ac5ab5a0'>
+      <union-decl name='__anonymous_union__' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2384' column='1' id='ac5ab5a1'>
         <data-member access='private'>
           <var-decl name='vsync' type-id='cbe6daf0' visibility='default' filepath='include/uapi/linux/videodev2.h' line='2385' column='1'/>
         </data-member>
@@ -37155,7 +37156,7 @@
           <var-decl name='pipe' type-id='4ffae8c8' visibility='default' filepath='include/media/media-entity.h' line='287' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
-          <var-decl name='info' type-id='f9cbf5eb' visibility='default' filepath='include/media/media-entity.h' line='294' column='1'/>
+          <var-decl name='info' type-id='f9cbf5ea' visibility='default' filepath='include/media/media-entity.h' line='294' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='media_gobj' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/media/media-entity.h' line='65' column='1' id='9fdb75a6'>
@@ -37208,7 +37209,7 @@
           <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/media/media-entity.h' line='142' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='' type-id='ac5ab5a1' visibility='default' filepath='include/media/media-entity.h' line='143' column='1'/>
+          <var-decl name='' type-id='ac5ab5a2' visibility='default' filepath='include/media/media-entity.h' line='143' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
           <var-decl name='' type-id='f6cbf132' visibility='default' filepath='include/media/media-entity.h' line='148' column='1'/>
@@ -37223,7 +37224,7 @@
           <var-decl name='is_backlink' type-id='b50a4934' visibility='default' filepath='include/media/media-entity.h' line='155' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/media-entity.h' line='143' column='1' id='ac5ab5a1'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/media-entity.h' line='143' column='1' id='ac5ab5a2'>
         <data-member access='private'>
           <var-decl name='gobj0' type-id='4077272c' visibility='default' filepath='include/media/media-entity.h' line='144' column='1'/>
         </data-member>
@@ -37733,7 +37734,7 @@
           <var-decl name='' type-id='f3cbec74' visibility='default' filepath='include/media/v4l2-ctrls.h' line='223' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1280'>
-          <var-decl name='' type-id='f2cbeae3' visibility='default' filepath='include/media/v4l2-ctrls.h' line='227' column='1'/>
+          <var-decl name='' type-id='f2cbeae2' visibility='default' filepath='include/media/v4l2-ctrls.h' line='227' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1344'>
           <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/media/v4l2-ctrls.h' line='231' column='1'/>
@@ -39404,13 +39405,13 @@
           <var-decl name='index' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1776' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='' type-id='9b0c88ca' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1777' column='1'/>
+          <var-decl name='' type-id='9b0c88cb' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1777' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='320'>
           <var-decl name='reserved' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1781' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__14' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1777' column='1' id='9b0c88ca'>
+      <union-decl name='__anonymous_union__14' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1777' column='1' id='9b0c88cb'>
         <data-member access='private'>
           <var-decl name='name' type-id='7e67d89d' visibility='default' filepath='include/uapi/linux/videodev2.h' line='1778' column='1'/>
         </data-member>
@@ -42097,7 +42098,7 @@
         <parameter type-id='7359adad'/>
         <return type-id='eaa32e2f'/>
       </function-type>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/v4l2-ctrls.h' line='227' column='1' id='f2cbeae3'>
+      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/v4l2-ctrls.h' line='227' column='1' id='f2cbeae2'>
         <data-member access='private'>
           <var-decl name='qmenu' type-id='13956559' visibility='default' filepath='include/media/v4l2-ctrls.h' line='228' column='1'/>
         </data-member>
@@ -42105,7 +42106,7 @@
           <var-decl name='qmenu_int' type-id='43ae54cf' visibility='default' filepath='include/media/v4l2-ctrls.h' line='229' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/media-entity.h' line='289' column='1' id='f9cbf5eb'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/media-entity.h' line='289' column='1' id='f9cbf5ea'>
         <data-member access='private'>
           <var-decl name='dev' type-id='687f9680' visibility='default' filepath='include/media/media-entity.h' line='293' column='1'/>
         </data-member>
@@ -42120,7 +42121,7 @@
       </union-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/media/v4l2-core/v4l2-ctrls.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/v4l2-ctrls.h' line='223' column='1' id='ac5ab5a2'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/v4l2-ctrls.h' line='223' column='1' id='ac5ab5a3'>
         <data-member access='private'>
           <var-decl name='step' type-id='91ce1af9' visibility='default' filepath='include/media/v4l2-ctrls.h' line='224' column='1'/>
         </data-member>
@@ -42202,7 +42203,7 @@
     <abi-instr version='1.0' address-size='64' path='drivers/media/v4l2-core/v4l2-event.c' language='LANG_C89'>
       <class-decl name='media_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='e4dc0de7'/>
       <class-decl name='v4l2_device' is-struct='yes' visibility='default' is-declaration-only='yes' id='f1828bdd'/>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/media-entity.h' line='289' column='1' id='ac5ab5a3'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/media/media-entity.h' line='289' column='1' id='ac5ab5a4'>
         <data-member access='private'>
           <var-decl name='dev' type-id='687f9680' visibility='default' filepath='include/media/media-entity.h' line='293' column='1'/>
         </data-member>
@@ -42798,6 +42799,14 @@
           <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/skbuff.h' line='681' column='1'/>
         </data-member>
       </union-decl>
+      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='f2cbeae3'>
+        <data-member access='private'>
+          <var-decl name='dev' type-id='68a2d05c' visibility='default' filepath='include/linux/skbuff.h' line='672' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='dev_scratch' type-id='7359adad' visibility='default' filepath='include/linux/skbuff.h' line='677' column='1'/>
+        </data-member>
+      </union-decl>
       <union-decl name='__anonymous_union__6' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f5cbef9d'>
         <data-member access='private'>
           <var-decl name='sk' type-id='f772df6e' visibility='default' filepath='include/linux/skbuff.h' line='685' column='1'/>
@@ -43020,29 +43029,12 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/net/tun.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__6' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='665' column='1' id='f5cbef9e'>
+      <union-decl name='__anonymous_union__11' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='414' column='1' id='a00c90ab'>
         <data-member access='private'>
-          <var-decl name='' type-id='687f967b' visibility='default' filepath='include/linux/skbuff.h' line='666' column='1'/>
+          <var-decl name='sk_send_head' type-id='0fbf3cfd' visibility='default' filepath='include/net/sock.h' line='415' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='rbnode' type-id='2a8a6332' visibility='default' filepath='include/linux/skbuff.h' line='680' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/skbuff.h' line='681' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__14' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='9b0c88cb'>
-        <data-member access='private'>
-          <var-decl name='hashinfo' type-id='d7a1e3c2' visibility='default' filepath='include/net/sock.h' line='1173' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='udp_table' type-id='115daa23' visibility='default' filepath='include/net/sock.h' line='1174' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='raw_hash' type-id='eb2c56dc' visibility='default' filepath='include/net/sock.h' line='1175' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='smc_hash' type-id='aa8162a3' visibility='default' filepath='include/net/sock.h' line='1176' column='1'/>
+          <var-decl name='tcp_rtx_queue' type-id='dec44472' visibility='default' filepath='include/net/sock.h' line='416' column='1'/>
         </data-member>
       </union-decl>
       <function-decl name='netif_tx_stop_all_queues' mangled-name='netif_tx_stop_all_queues' filepath='include/linux/netdevice.h' line='3135' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='netif_tx_stop_all_queues'>
@@ -43435,7 +43427,7 @@
           <var-decl name='sk_receive_queue' type-id='e61c85d0' visibility='default' filepath='include/net/sock.h' line='372' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1792'>
-          <var-decl name='sk_backlog' type-id='cbd99813' visibility='default' filepath='include/net/sock.h' line='386' column='1'/>
+          <var-decl name='sk_backlog' type-id='c8d9935a' visibility='default' filepath='include/net/sock.h' line='386' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1984'>
           <var-decl name='sk_forward_alloc' type-id='95e97e5e' visibility='default' filepath='include/net/sock.h' line='389' column='1'/>
@@ -43453,7 +43445,7 @@
           <var-decl name='sk_filter' type-id='90956edc' visibility='default' filepath='include/net/sock.h' line='397' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2176'>
-          <var-decl name='' type-id='0f11bc93' visibility='default' filepath='include/net/sock.h' line='398' column='1'/>
+          <var-decl name='' type-id='0911b321' visibility='default' filepath='include/net/sock.h' line='398' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2240'>
           <var-decl name='sk_policy' type-id='eb61ae4b' visibility='default' filepath='include/net/sock.h' line='403' column='1'/>
@@ -43480,7 +43472,7 @@
           <var-decl name='sk_tsq_flags' type-id='7359adad' visibility='default' filepath='include/net/sock.h' line='413' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2688'>
-          <var-decl name='' type-id='1011be26' visibility='default' filepath='include/net/sock.h' line='414' column='1'/>
+          <var-decl name='' type-id='0a11b4b4' visibility='default' filepath='include/net/sock.h' line='414' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2752'>
           <var-decl name='sk_write_queue' type-id='e61c85d0' visibility='default' filepath='include/net/sock.h' line='418' column='1'/>
@@ -43695,13 +43687,13 @@
       </class-decl>
       <class-decl name='sock_common' size-in-bits='1088' is-struct='yes' visibility='default' filepath='include/net/sock.h' line='153' column='1' id='5999c5f7'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='ac5ab5a4' visibility='default' filepath='include/net/sock.h' line='157' column='1'/>
+          <var-decl name='' type-id='ac5ab5a5' visibility='default' filepath='include/net/sock.h' line='157' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
           <var-decl name='' type-id='f6cbf134' visibility='default' filepath='include/net/sock.h' line='164' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='96'>
-          <var-decl name='' type-id='f9cbf5ec' visibility='default' filepath='include/net/sock.h' line='169' column='1'/>
+          <var-decl name='' type-id='f9cbf5eb' visibility='default' filepath='include/net/sock.h' line='169' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
           <var-decl name='skc_family' type-id='8efea9e5' visibility='default' filepath='include/net/sock.h' line='177' column='1'/>
@@ -43743,13 +43735,13 @@
           <var-decl name='skc_cookie' type-id='28ee064c' visibility='default' filepath='include/net/sock.h' line='196' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='768'>
-          <var-decl name='' type-id='0f13fb2a' visibility='default' filepath='include/net/sock.h' line='203' column='1'/>
+          <var-decl name='' type-id='1113fe51' visibility='default' filepath='include/net/sock.h' line='203' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='832'>
           <var-decl name='skc_dontcopy_begin' type-id='1fdc7fa6' visibility='default' filepath='include/net/sock.h' line='213' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='832'>
-          <var-decl name='' type-id='0e13f997' visibility='default' filepath='include/net/sock.h' line='215' column='1'/>
+          <var-decl name='' type-id='1013fcbe' visibility='default' filepath='include/net/sock.h' line='215' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
           <var-decl name='skc_tx_queue_mapping' type-id='8efea9e5' visibility='default' filepath='include/net/sock.h' line='219' column='1'/>
@@ -43758,7 +43750,7 @@
           <var-decl name='skc_rx_queue_mapping' type-id='8efea9e5' visibility='default' filepath='include/net/sock.h' line='221' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='992'>
-          <var-decl name='' type-id='19140ae8' visibility='default' filepath='include/net/sock.h' line='223' column='1'/>
+          <var-decl name='' type-id='13140177' visibility='default' filepath='include/net/sock.h' line='223' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1024'>
           <var-decl name='skc_refcnt' type-id='64615833' visibility='default' filepath='include/net/sock.h' line='229' column='1'/>
@@ -43767,7 +43759,7 @@
           <var-decl name='skc_dontcopy_end' type-id='1fdc7fa6' visibility='default' filepath='include/net/sock.h' line='231' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1056'>
-          <var-decl name='' type-id='18140955' visibility='default' filepath='include/net/sock.h' line='232' column='1'/>
+          <var-decl name='' type-id='1213ffe3' visibility='default' filepath='include/net/sock.h' line='232' column='1'/>
         </data-member>
       </class-decl>
       <typedef-decl name='__addrpair' type-id='d3130597' filepath='include/net/sock.h' line='121' column='1' id='d17a6eed'/>
@@ -43934,7 +43926,7 @@
           <var-decl name='twsk_prot' type-id='d68ad8b5' visibility='default' filepath='include/net/sock.h' line='1170' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2816'>
-          <var-decl name='h' type-id='0c13f671' visibility='default' filepath='include/net/sock.h' line='1177' column='1'/>
+          <var-decl name='h' type-id='980c8411' visibility='default' filepath='include/net/sock.h' line='1177' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2880'>
           <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/net/sock.h' line='1179' column='1'/>
@@ -43986,7 +43978,7 @@
           <var-decl name='pipe' type-id='15d29710' visibility='default' filepath='include/linux/uio.h' line='39' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__4' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='666' column='1' id='6b7f9b34'>
+      <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='666' column='1' id='667f9356'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='next' type-id='0fbf3cfd' visibility='default' filepath='include/linux/skbuff.h' line='668' column='1'/>
         </data-member>
@@ -43994,7 +43986,7 @@
           <var-decl name='prev' type-id='0fbf3cfd' visibility='default' filepath='include/linux/skbuff.h' line='669' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='' type-id='a20c93d0' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
+          <var-decl name='' type-id='f4cbee0a' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='xfrm_state' size-in-bits='6272' is-struct='yes' visibility='default' filepath='include/net/xfrm.h' line='136' column='1' id='cb961c69'>
@@ -44002,7 +43994,7 @@
           <var-decl name='xs_net' type-id='c9df1e6c' visibility='default' filepath='include/net/xfrm.h' line='137' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='' type-id='9e0c8d83' visibility='default' filepath='include/net/xfrm.h' line='138' column='1'/>
+          <var-decl name='' type-id='a00c90ac' visibility='default' filepath='include/net/xfrm.h' line='138' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
           <var-decl name='bysrc' type-id='03a4a074' visibility='default' filepath='include/net/xfrm.h' line='142' column='1'/>
@@ -44038,7 +44030,7 @@
           <var-decl name='km' type-id='12872440' visibility='default' filepath='include/net/xfrm.h' line='157' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1600'>
-          <var-decl name='props' type-id='6c7f9cc7' visibility='default' filepath='include/net/xfrm.h' line='172' column='1'/>
+          <var-decl name='props' type-id='6b7f9b34' visibility='default' filepath='include/net/xfrm.h' line='172' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1984'>
           <var-decl name='lft' type-id='4ca5f2ad' visibility='default' filepath='include/net/xfrm.h' line='174' column='1'/>
@@ -44151,8 +44143,8 @@
           <var-decl name='proto' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/xfrm.h' line='28' column='1'/>
         </data-member>
       </class-decl>
-      <typedef-decl name='xfrm_address_t' type-id='970c827e' filepath='include/uapi/linux/xfrm.h' line='19' column='1' id='c210d497'/>
-      <union-decl name='__anonymous_union__18' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/xfrm.h' line='15' column='1' id='970c827e'>
+      <typedef-decl name='xfrm_address_t' type-id='a10c923d' filepath='include/uapi/linux/xfrm.h' line='19' column='1' id='c210d497'/>
+      <union-decl name='__anonymous_union__12' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/xfrm.h' line='15' column='1' id='a10c923d'>
         <data-member access='private'>
           <var-decl name='a4' type-id='78a133c2' visibility='default' filepath='include/uapi/linux/xfrm.h' line='16' column='1'/>
         </data-member>
@@ -44246,7 +44238,7 @@
           <var-decl name='dplen' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/xfrm.h' line='500' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__5' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='160' column='1' id='6c7f9cc7'>
+      <class-decl name='__anonymous_struct__4' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='160' column='1' id='6b7f9b34'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='reqid' type-id='19c2251e' visibility='default' filepath='include/net/xfrm.h' line='161' column='1'/>
         </data-member>
@@ -44521,10 +44513,10 @@
       </class-decl>
       <class-decl name='flowi' size-in-bits='704' is-struct='yes' visibility='default' filepath='include/net/flow.h' line='171' column='1' id='2117397c'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='u' type-id='980c8411' visibility='default' filepath='include/net/flow.h' line='177' column='1'/>
+          <var-decl name='u' type-id='a20c93d0' visibility='default' filepath='include/net/flow.h' line='177' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__19' size-in-bits='704' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='172' column='1' id='980c8411'>
+      <union-decl name='__anonymous_union__13' size-in-bits='704' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='172' column='1' id='a20c93d0'>
         <data-member access='private'>
           <var-decl name='__fl_common' type-id='184ee240' visibility='default' filepath='include/net/flow.h' line='173' column='1'/>
         </data-member>
@@ -44592,13 +44584,13 @@
       </class-decl>
       <union-decl name='flowi_uli' size-in-bits='32' visibility='default' filepath='include/net/flow.h' line='45' column='1' id='76355708'>
         <data-member access='private'>
-          <var-decl name='ports' type-id='697f980d' visibility='default' filepath='include/net/flow.h' line='49' column='1'/>
+          <var-decl name='ports' type-id='6c7f9cc7' visibility='default' filepath='include/net/flow.h' line='49' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='icmpt' type-id='6a7f99a0' visibility='default' filepath='include/net/flow.h' line='54' column='1'/>
+          <var-decl name='icmpt' type-id='697f980d' visibility='default' filepath='include/net/flow.h' line='54' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='dnports' type-id='6f7fa180' visibility='default' filepath='include/net/flow.h' line='59' column='1'/>
+          <var-decl name='dnports' type-id='6a7f99a0' visibility='default' filepath='include/net/flow.h' line='59' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='spi' type-id='78a133c2' visibility='default' filepath='include/net/flow.h' line='61' column='1'/>
@@ -44607,10 +44599,10 @@
           <var-decl name='gre_key' type-id='78a133c2' visibility='default' filepath='include/net/flow.h' line='62' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='mht' type-id='707fa314' visibility='default' filepath='include/net/flow.h' line='66' column='1'/>
+          <var-decl name='mht' type-id='6f7fa180' visibility='default' filepath='include/net/flow.h' line='66' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__6' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='46' column='1' id='697f980d'>
+      <class-decl name='__anonymous_struct__5' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='46' column='1' id='6c7f9cc7'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='dport' type-id='84a5c3d4' visibility='default' filepath='include/net/flow.h' line='47' column='1'/>
         </data-member>
@@ -44618,7 +44610,7 @@
           <var-decl name='sport' type-id='84a5c3d4' visibility='default' filepath='include/net/flow.h' line='48' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__7' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='51' column='1' id='6a7f99a0'>
+      <class-decl name='__anonymous_struct__6' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='51' column='1' id='697f980d'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='type' type-id='8f048e17' visibility='default' filepath='include/net/flow.h' line='52' column='1'/>
         </data-member>
@@ -44626,7 +44618,7 @@
           <var-decl name='code' type-id='8f048e17' visibility='default' filepath='include/net/flow.h' line='53' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__8' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='56' column='1' id='6f7fa180'>
+      <class-decl name='__anonymous_struct__7' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='56' column='1' id='6a7f99a0'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='dport' type-id='23119536' visibility='default' filepath='include/net/flow.h' line='57' column='1'/>
         </data-member>
@@ -44635,7 +44627,7 @@
         </data-member>
       </class-decl>
       <typedef-decl name='__le16' type-id='d315442e' filepath='include/uapi/linux/types.h' line='29' column='1' id='23119536'/>
-      <class-decl name='__anonymous_struct__9' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='64' column='1' id='707fa314'>
+      <class-decl name='__anonymous_struct__8' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/flow.h' line='64' column='1' id='6f7fa180'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='type' type-id='8f048e17' visibility='default' filepath='include/net/flow.h' line='65' column='1'/>
         </data-member>
@@ -44836,7 +44828,7 @@
       </class-decl>
       <class-decl name='xfrm_offload' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/net/xfrm.h' line='1070' column='1' id='1337e978'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='seq' type-id='c9d994ee' visibility='default' filepath='include/net/xfrm.h' line='1075' column='1'/>
+          <var-decl name='seq' type-id='707fa314' visibility='default' filepath='include/net/xfrm.h' line='1075' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
           <var-decl name='flags' type-id='3f1a6b60' visibility='default' filepath='include/net/xfrm.h' line='1077' column='1'/>
@@ -44848,7 +44840,7 @@
           <var-decl name='proto' type-id='8f048e17' visibility='default' filepath='include/net/xfrm.h' line='1097' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__10' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='1072' column='1' id='c9d994ee'>
+      <class-decl name='__anonymous_struct__9' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='1072' column='1' id='707fa314'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='low' type-id='3f1a6b60' visibility='default' filepath='include/net/xfrm.h' line='1073' column='1'/>
         </data-member>
@@ -44952,7 +44944,7 @@
           <var-decl name='ht' type-id='e151255a' visibility='default' filepath='include/net/smc.h' line='18' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__26' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='0f13fb2a'>
+      <union-decl name='__anonymous_union__20' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='1113fe51'>
         <data-member access='private'>
           <var-decl name='skc_flags' type-id='7359adad' visibility='default' filepath='include/net/sock.h' line='204' column='1'/>
         </data-member>
@@ -44964,7 +44956,7 @@
         </data-member>
       </union-decl>
       <typedef-decl name='socket_lock_t' type-id='fd72bfd5' filepath='include/net/sock.h' line='114' column='1' id='40d8a3da'/>
-      <class-decl name='__anonymous_struct__11' size-in-bits='256' is-struct='yes' is-anonymous='yes' naming-typedef-id='40d8a3da' visibility='default' filepath='include/net/sock.h' line='101' column='1' id='fd72bfd5'>
+      <class-decl name='__anonymous_struct__10' size-in-bits='256' is-struct='yes' is-anonymous='yes' naming-typedef-id='40d8a3da' visibility='default' filepath='include/net/sock.h' line='101' column='1' id='fd72bfd5'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='slock' type-id='fb4018a0' visibility='default' filepath='include/net/sock.h' line='102' column='1'/>
         </data-member>
@@ -44975,7 +44967,7 @@
           <var-decl name='wq' type-id='b5ab048f' visibility='default' filepath='include/net/sock.h' line='104' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__12' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='381' column='1' id='cbd99813'>
+      <class-decl name='__anonymous_struct__11' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='381' column='1' id='c8d9935a'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='rmem_alloc' type-id='49178f86' visibility='default' filepath='include/net/sock.h' line='382' column='1'/>
         </data-member>
@@ -45059,7 +45051,7 @@
           <var-decl name='bpf_func' type-id='531a7450' visibility='default' filepath='include/linux/filter.h' line='499' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='' type-id='0a11b4b4' visibility='default' filepath='include/linux/filter.h' line='502' column='1'/>
+          <var-decl name='' type-id='0c11b7da' visibility='default' filepath='include/linux/filter.h' line='502' column='1'/>
         </data-member>
       </class-decl>
       <enum-decl name='bpf_prog_type' filepath='include/uapi/linux/bpf.h' line='132' column='1' id='b80df76a'>
@@ -45172,7 +45164,7 @@
           <var-decl name='offload' type-id='11f19dd0' visibility='default' filepath='include/linux/bpf.h' line='297' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1536'>
-          <var-decl name='' type-id='0911b321' visibility='default' filepath='include/linux/bpf.h' line='298' column='1'/>
+          <var-decl name='' type-id='0b11b647' visibility='default' filepath='include/linux/bpf.h' line='298' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='bpf_prog_ops' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/linux/bpf.h' line='232' column='1' id='9a1fed7b'>
@@ -45190,7 +45182,7 @@
               <var-decl name='key' type-id='d3130597' visibility='default' filepath='include/uapi/linux/bpf.h' line='309' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='128'>
-              <var-decl name='' type-id='0b11b647' visibility='default' filepath='include/uapi/linux/bpf.h' line='310' column='1'/>
+              <var-decl name='' type-id='0d13f804' visibility='default' filepath='include/uapi/linux/bpf.h' line='310' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='192'>
               <var-decl name='flags' type-id='d3130597' visibility='default' filepath='include/uapi/linux/bpf.h' line='314' column='1'/>
@@ -45269,7 +45261,7 @@
         <member-type access='private'>
           <class-decl name='__anonymous_struct__4' size-in-bits='96' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='360' column='1' id='267f487c'>
             <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='' type-id='0c11b7da' visibility='default' filepath='include/uapi/linux/bpf.h' line='361' column='1'/>
+              <var-decl name='' type-id='0c13f671' visibility='default' filepath='include/uapi/linux/bpf.h' line='361' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='32'>
               <var-decl name='next_id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='367' column='1'/>
@@ -45299,25 +45291,25 @@
           </class-decl>
         </member-type>
         <data-member access='private'>
-          <var-decl name='' type-id='cad9967f' visibility='default' filepath='include/uapi/linux/bpf.h' line='288' column='1'/>
+          <var-decl name='' type-id='cbd99813' visibility='default' filepath='include/uapi/linux/bpf.h' line='288' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='test' type-id='cdd99b37' visibility='default' filepath='include/uapi/linux/bpf.h' line='358' column='1'/>
+          <var-decl name='test' type-id='cad9967f' visibility='default' filepath='include/uapi/linux/bpf.h' line='358' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='info' type-id='ccd999a4' visibility='default' filepath='include/uapi/linux/bpf.h' line='375' column='1'/>
+          <var-decl name='info' type-id='cdd99b37' visibility='default' filepath='include/uapi/linux/bpf.h' line='375' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='query' type-id='cfd99e5d' visibility='default' filepath='include/uapi/linux/bpf.h' line='384' column='1'/>
+          <var-decl name='query' type-id='ccd999a4' visibility='default' filepath='include/uapi/linux/bpf.h' line='384' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='raw_tracepoint' type-id='ced99cca' visibility='default' filepath='include/uapi/linux/bpf.h' line='389' column='1'/>
+          <var-decl name='raw_tracepoint' type-id='cfd99e5d' visibility='default' filepath='include/uapi/linux/bpf.h' line='389' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='task_fd_query' type-id='c1d98854' visibility='default' filepath='include/uapi/linux/bpf.h' line='413' column='1'/>
+          <var-decl name='task_fd_query' type-id='ced99cca' visibility='default' filepath='include/uapi/linux/bpf.h' line='413' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__13' size-in-bits='480' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='288' column='1' id='cad9967f'>
+      <class-decl name='__anonymous_struct__12' size-in-bits='480' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='288' column='1' id='cbd99813'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='map_type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='289' column='1'/>
         </data-member>
@@ -45355,7 +45347,7 @@
           <var-decl name='btf_value_type_id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='304' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__30' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='310' column='1' id='0b11b647'>
+      <union-decl name='__anonymous_union__24' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='310' column='1' id='0d13f804'>
         <data-member access='private'>
           <var-decl name='value' type-id='d3130597' visibility='default' filepath='include/uapi/linux/bpf.h' line='311' column='1'/>
         </data-member>
@@ -45363,7 +45355,7 @@
           <var-decl name='next_key' type-id='d3130597' visibility='default' filepath='include/uapi/linux/bpf.h' line='312' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__14' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='349' column='1' id='cdd99b37'>
+      <class-decl name='__anonymous_struct__13' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='349' column='1' id='cad9967f'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='prog_fd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='350' column='1'/>
         </data-member>
@@ -45389,7 +45381,7 @@
           <var-decl name='duration' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='357' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__31' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='361' column='1' id='0c11b7da'>
+      <union-decl name='__anonymous_union__25' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='361' column='1' id='0c13f671'>
         <data-member access='private'>
           <var-decl name='start_id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='362' column='1'/>
         </data-member>
@@ -45403,7 +45395,7 @@
           <var-decl name='btf_id' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='365' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__15' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='371' column='1' id='ccd999a4'>
+      <class-decl name='__anonymous_struct__14' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='371' column='1' id='cdd99b37'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='bpf_fd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='372' column='1'/>
         </data-member>
@@ -45414,7 +45406,7 @@
           <var-decl name='info' type-id='d3130597' visibility='default' filepath='include/uapi/linux/bpf.h' line='374' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__16' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='377' column='1' id='cfd99e5d'>
+      <class-decl name='__anonymous_struct__15' size-in-bits='256' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='377' column='1' id='ccd999a4'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='target_fd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='378' column='1'/>
         </data-member>
@@ -45434,7 +45426,7 @@
           <var-decl name='prog_cnt' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='383' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__17' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='386' column='1' id='ced99cca'>
+      <class-decl name='__anonymous_struct__16' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='386' column='1' id='cfd99e5d'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='name' type-id='d3130597' visibility='default' filepath='include/uapi/linux/bpf.h' line='387' column='1'/>
         </data-member>
@@ -45442,7 +45434,7 @@
           <var-decl name='prog_fd' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='388' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__18' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='399' column='1' id='c1d98854'>
+      <class-decl name='__anonymous_struct__17' size-in-bits='384' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='399' column='1' id='ced99cca'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='pid' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/bpf.h' line='400' column='1'/>
         </data-member>
@@ -45583,6 +45575,23 @@
           <var-decl name='map_check_btf' type-id='047def79' visibility='default' filepath='include/linux/bpf.h' line='52' column='1'/>
         </data-member>
       </class-decl>
+      <union-decl name='__anonymous_union__29' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='18140955'>
+        <data-member access='private'>
+          <var-decl name='i_pipe' type-id='15d29710' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_cdev' type-id='3e6eb939' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='bpf_insn' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/uapi/linux/bpf.h' line='64' column='1' id='8c2bf2b2'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='code' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/bpf.h' line='65' column='1'/>
@@ -45968,6 +45977,164 @@
           <var-decl name='android_kabi_reserved4' type-id='91ce1af9' visibility='default' filepath='include/linux/net.h' line='206' column='1'/>
         </data-member>
       </class-decl>
+      <class-decl name='__anonymous_struct__18' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='c1d98854'>
+        <data-member access='public' layout-offset-in-bits='0'>
+          <var-decl name='mmap' type-id='2ae08426' visibility='default' filepath='include/linux/mm_types.h' line='360' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='64'>
+          <var-decl name='mm_rb' type-id='dec44472' visibility='default' filepath='include/linux/mm_types.h' line='361' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='128'>
+          <var-decl name='vmacache_seqnum' type-id='91ce1af9' visibility='default' filepath='include/linux/mm_types.h' line='362' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='192'>
+          <var-decl name='get_unmapped_area' type-id='d44a8cec' visibility='default' filepath='include/linux/mm_types.h' line='364' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='256'>
+          <var-decl name='mmap_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='368' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='320'>
+          <var-decl name='mmap_legacy_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='369' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='384'>
+          <var-decl name='task_size' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='375' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='448'>
+          <var-decl name='highest_vm_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='376' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='512'>
+          <var-decl name='pgd' type-id='2e97ceaf' visibility='default' filepath='include/linux/mm_types.h' line='377' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='576'>
+          <var-decl name='mm_users' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='388' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='608'>
+          <var-decl name='mm_count' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='397' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='640'>
+          <var-decl name='pgtables_bytes' type-id='f22a8abb' visibility='default' filepath='include/linux/mm_types.h' line='400' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='704'>
+          <var-decl name='map_count' type-id='95e97e5e' visibility='default' filepath='include/linux/mm_types.h' line='402' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='736'>
+          <var-decl name='page_table_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='404' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='768'>
+          <var-decl name='mmap_sem' type-id='f19fdb93' visibility='default' filepath='include/linux/mm_types.h' line='407' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1152'>
+          <var-decl name='mmlist' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='409' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1280'>
+          <var-decl name='hiwater_rss' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='416' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1344'>
+          <var-decl name='hiwater_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='417' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1408'>
+          <var-decl name='total_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='419' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1472'>
+          <var-decl name='locked_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='420' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1536'>
+          <var-decl name='pinned_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='421' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1600'>
+          <var-decl name='data_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='422' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1664'>
+          <var-decl name='exec_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='423' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1728'>
+          <var-decl name='stack_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='424' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1792'>
+          <var-decl name='def_flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='425' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1856'>
+          <var-decl name='arg_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='427' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1920'>
+          <var-decl name='start_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1984'>
+          <var-decl name='end_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2048'>
+          <var-decl name='start_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2112'>
+          <var-decl name='end_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2176'>
+          <var-decl name='start_brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2240'>
+          <var-decl name='brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2304'>
+          <var-decl name='start_stack' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2368'>
+          <var-decl name='arg_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2432'>
+          <var-decl name='arg_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2496'>
+          <var-decl name='env_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2560'>
+          <var-decl name='env_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2624'>
+          <var-decl name='saved_auxv' type-id='d964a553' visibility='default' filepath='include/linux/mm_types.h' line='432' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5568'>
+          <var-decl name='rss_stat' type-id='2235a2cb' visibility='default' filepath='include/linux/mm_types.h' line='438' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5888'>
+          <var-decl name='binfmt' type-id='7cc59444' visibility='default' filepath='include/linux/mm_types.h' line='440' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5952'>
+          <var-decl name='context' type-id='0eb9c3fd' visibility='default' filepath='include/linux/mm_types.h' line='443' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6144'>
+          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='445' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6208'>
+          <var-decl name='core_state' type-id='90ad83aa' visibility='default' filepath='include/linux/mm_types.h' line='447' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6272'>
+          <var-decl name='membarrier_state' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='449' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6304'>
+          <var-decl name='ioctx_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='452' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6336'>
+          <var-decl name='ioctx_table' type-id='122191b2' visibility='default' filepath='include/linux/mm_types.h' line='453' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6400'>
+          <var-decl name='owner' type-id='f23e2572' visibility='default' filepath='include/linux/mm_types.h' line='466' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6464'>
+          <var-decl name='user_ns' type-id='c0ced321' visibility='default' filepath='include/linux/mm_types.h' line='468' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6528'>
+          <var-decl name='exe_file' type-id='77e79a4b' visibility='default' filepath='include/linux/mm_types.h' line='471' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6592'>
+          <var-decl name='tlb_flush_pending' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='497' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6656'>
+          <var-decl name='uprobes_state' type-id='6308a819' visibility='default' filepath='include/linux/mm_types.h' line='502' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6720'>
+          <var-decl name='async_put_work' type-id='ef9025d0' visibility='default' filepath='include/linux/mm_types.h' line='506' column='1'/>
+        </data-member>
+      </class-decl>
       <typedef-decl name='read_descriptor_t' type-id='2890e7d8' filepath='include/linux/fs.h' line='349' column='1' id='2d58d013'/>
       <class-decl name='__anonymous_struct__19' size-in-bits='256' is-struct='yes' is-anonymous='yes' naming-typedef-id='2d58d013' visibility='default' filepath='include/linux/fs.h' line='341' column='1' id='2890e7d8'>
         <data-member access='public' layout-offset-in-bits='0'>
@@ -45977,13 +46144,13 @@
           <var-decl name='count' type-id='b59d7dce' visibility='default' filepath='include/linux/fs.h' line='343' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='arg' type-id='0d11b96d' visibility='default' filepath='include/linux/fs.h' line='347' column='1'/>
+          <var-decl name='arg' type-id='1011be26' visibility='default' filepath='include/linux/fs.h' line='347' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
           <var-decl name='error' type-id='95e97e5e' visibility='default' filepath='include/linux/fs.h' line='348' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__36' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='344' column='1' id='0d11b96d'>
+      <union-decl name='__anonymous_union__35' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='344' column='1' id='1011be26'>
         <data-member access='private'>
           <var-decl name='buf' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='345' column='1'/>
         </data-member>
@@ -45992,34 +46159,34 @@
         </data-member>
       </union-decl>
       <typedef-decl name='sk_read_actor_t' type-id='0c197ddf' filepath='include/linux/net.h' line='131' column='1' id='514d4e0e'/>
-      <class-decl name='sock_cgroup_data' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='788' column='1' id='8544f103'>
+      <class-decl name='sock_cgroup_data' size-in-bits='64' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='794' column='1' id='8544f103'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='0e11bb00' visibility='default' filepath='include/linux/cgroup-defs.h' line='789' column='1'/>
+          <var-decl name='' type-id='0d11b96d' visibility='default' filepath='include/linux/cgroup-defs.h' line='795' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__37' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='789' column='1' id='0e11bb00'>
+      <union-decl name='__anonymous_union__36' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='795' column='1' id='0d11b96d'>
         <data-member access='private'>
-          <var-decl name='' type-id='b7d2bcd1' visibility='default' filepath='include/linux/cgroup-defs.h' line='791' column='1'/>
+          <var-decl name='' type-id='b7d2bcd1' visibility='default' filepath='include/linux/cgroup-defs.h' line='797' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='val' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='805' column='1'/>
+          <var-decl name='val' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='811' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__20' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='791' column='1' id='b7d2bcd1'>
+      <class-decl name='__anonymous_struct__20' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='797' column='1' id='b7d2bcd1'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='is_data' type-id='f9b06939' visibility='default' filepath='include/linux/cgroup-defs.h' line='792' column='1'/>
+          <var-decl name='is_data' type-id='f9b06939' visibility='default' filepath='include/linux/cgroup-defs.h' line='798' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='8'>
-          <var-decl name='padding' type-id='f9b06939' visibility='default' filepath='include/linux/cgroup-defs.h' line='793' column='1'/>
+          <var-decl name='padding' type-id='f9b06939' visibility='default' filepath='include/linux/cgroup-defs.h' line='799' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='16'>
-          <var-decl name='prioidx' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='794' column='1'/>
+          <var-decl name='prioidx' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='800' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='32'>
-          <var-decl name='classid' type-id='19c2251e' visibility='default' filepath='include/linux/cgroup-defs.h' line='795' column='1'/>
+          <var-decl name='classid' type-id='19c2251e' visibility='default' filepath='include/linux/cgroup-defs.h' line='801' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__38' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/ip.h' line='123' column='1' id='1311c2df'>
+      <union-decl name='__anonymous_union__37' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/ip.h' line='123' column='1' id='0e11bb00'>
         <data-member access='private'>
           <var-decl name='destructor' type-id='841969d0' visibility='default' filepath='include/net/ip.h' line='124' column='1'/>
         </data-member>
@@ -46746,12 +46913,12 @@
       </class-decl>
       <class-decl name='tcf_result' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/net/sch_generic.h' line='234' column='1' id='68d8e236'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='1411c472' visibility='default' filepath='include/net/sch_generic.h' line='235' column='1'/>
+          <var-decl name='' type-id='1311c2df' visibility='default' filepath='include/net/sch_generic.h' line='235' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__39' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='235' column='1' id='1411c472'>
+      <union-decl name='__anonymous_union__38' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='235' column='1' id='1311c2df'>
         <member-type access='private'>
-          <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='243' column='1' id='3d5b784d'>
+          <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='243' column='1' id='c7ef6a8a'>
             <data-member access='public' layout-offset-in-bits='0'>
               <var-decl name='ingress' type-id='b50a4934' visibility='default' filepath='include/net/sch_generic.h' line='244' column='1'/>
             </data-member>
@@ -47235,12 +47402,20 @@
           <var-decl name='tail' type-id='0fbf3cfd' visibility='default' filepath='include/net/sch_generic.h' line='49' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='' type-id='0d04ed7a' visibility='default' filepath='include/net/sch_generic.h' line='50' column='1'/>
+          <var-decl name='' type-id='1411c472' visibility='default' filepath='include/net/sch_generic.h' line='50' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='160'>
           <var-decl name='lock' type-id='fb4018a0' visibility='default' filepath='include/net/sch_generic.h' line='54' column='1'/>
         </data-member>
       </class-decl>
+      <union-decl name='__anonymous_union__39' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='50' column='1' id='1411c472'>
+        <data-member access='private'>
+          <var-decl name='qlen' type-id='19c2251e' visibility='default' filepath='include/net/sch_generic.h' line='51' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='atomic_qlen' type-id='49178f86' visibility='default' filepath='include/net/sch_generic.h' line='52' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='__anonymous_struct__22' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='346' column='1' id='b9d2bff7'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='chain' type-id='45305972' visibility='default' filepath='include/net/sch_generic.h' line='347' column='1'/>
@@ -47263,7 +47438,7 @@
         <enumerator name='RTNL_LINK_INITIALIZED' value='0'/>
         <enumerator name='RTNL_LINK_INITIALIZING' value='1'/>
       </enum-decl>
-      <union-decl name='__anonymous_union__41' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netdevice.h' line='2026' column='1' id='0c04ebe7'>
+      <union-decl name='__anonymous_union__40' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netdevice.h' line='2026' column='1' id='0d04ed7a'>
         <data-member access='private'>
           <var-decl name='ml_priv' type-id='eaa32e2f' visibility='default' filepath='include/linux/netdevice.h' line='2027' column='1'/>
         </data-member>
@@ -48484,7 +48659,7 @@
         <parameter type-id='19c2251e'/>
         <return type-id='eaa32e2f'/>
       </function-type>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='157' column='1' id='ac5ab5a4'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='157' column='1' id='ac5ab5a5'>
         <data-member access='private'>
           <var-decl name='skc_addrpair' type-id='d17a6eed' visibility='default' filepath='include/net/sock.h' line='158' column='1'/>
         </data-member>
@@ -48492,7 +48667,7 @@
           <var-decl name='' type-id='687f9681' visibility='default' filepath='include/net/sock.h' line='159' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='169' column='1' id='f9cbf5ec'>
+      <union-decl name='__anonymous_union__2' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='169' column='1' id='f9cbf5eb'>
         <data-member access='private'>
           <var-decl name='skc_portpair' type-id='e7c2a649' visibility='default' filepath='include/net/sock.h' line='170' column='1'/>
         </data-member>
@@ -48500,7 +48675,7 @@
           <var-decl name='' type-id='657f91c5' visibility='default' filepath='include/net/sock.h' line='171' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__17' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='138' column='1' id='9e0c8d83'>
+      <union-decl name='__anonymous_union__11' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='138' column='1' id='a00c90ac'>
         <data-member access='private'>
           <var-decl name='gclist' type-id='03a4a074' visibility='default' filepath='include/net/xfrm.h' line='139' column='1'/>
         </data-member>
@@ -48516,7 +48691,7 @@
           <var-decl name='skc_portaddr_node' type-id='03a4a074' visibility='default' filepath='include/net/sock.h' line='186' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__27' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='215' column='1' id='0e13f997'>
+      <union-decl name='__anonymous_union__21' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='215' column='1' id='1013fcbe'>
         <data-member access='private'>
           <var-decl name='skc_node' type-id='03a4a074' visibility='default' filepath='include/net/sock.h' line='216' column='1'/>
         </data-member>
@@ -48524,7 +48699,7 @@
           <var-decl name='skc_nulls_node' type-id='5bd248e7' visibility='default' filepath='include/net/sock.h' line='217' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__25' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='0c13f671'>
+      <union-decl name='__anonymous_union__19' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='980c8411'>
         <data-member access='private'>
           <var-decl name='hashinfo' type-id='d7a1e3c2' visibility='default' filepath='include/net/sock.h' line='1173' column='1'/>
         </data-member>
@@ -48538,7 +48713,7 @@
           <var-decl name='smc_hash' type-id='aa8162a3' visibility='default' filepath='include/net/sock.h' line='1176' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__28' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='223' column='1' id='19140ae8'>
+      <union-decl name='__anonymous_union__22' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='223' column='1' id='13140177'>
         <data-member access='private'>
           <var-decl name='skc_incoming_cpu' type-id='95e97e5e' visibility='default' filepath='include/net/sock.h' line='224' column='1'/>
         </data-member>
@@ -48549,7 +48724,7 @@
           <var-decl name='skc_tw_rcv_nxt' type-id='19c2251e' visibility='default' filepath='include/net/sock.h' line='226' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__13' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='a20c93d0'>
+      <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='f4cbee0a'>
         <data-member access='private'>
           <var-decl name='dev' type-id='68a2d05c' visibility='default' filepath='include/linux/skbuff.h' line='672' column='1'/>
         </data-member>
@@ -48557,7 +48732,7 @@
           <var-decl name='dev_scratch' type-id='7359adad' visibility='default' filepath='include/linux/skbuff.h' line='677' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__35' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='414' column='1' id='1011be26'>
+      <union-decl name='__anonymous_union__33' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='414' column='1' id='0a11b4b4'>
         <data-member access='private'>
           <var-decl name='sk_send_head' type-id='0fbf3cfd' visibility='default' filepath='include/net/sock.h' line='415' column='1'/>
         </data-member>
@@ -48565,7 +48740,7 @@
           <var-decl name='tcp_rtx_queue' type-id='dec44472' visibility='default' filepath='include/net/sock.h' line='416' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__33' is-anonymous='yes' visibility='default' filepath='include/linux/filter.h' line='502' column='1' id='0a11b4b4'>
+      <union-decl name='__anonymous_union__31' is-anonymous='yes' visibility='default' filepath='include/linux/filter.h' line='502' column='1' id='0c11b7da'>
         <data-member access='private'>
           <var-decl name='insns' type-id='4967766c' visibility='default' filepath='include/linux/filter.h' line='503' column='1'/>
         </data-member>
@@ -48573,7 +48748,7 @@
           <var-decl name='insnsi' type-id='b50399da' visibility='default' filepath='include/linux/filter.h' line='504' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__34' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='0f11bc93'>
+      <union-decl name='__anonymous_union__32' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='0911b321'>
         <data-member access='private'>
           <var-decl name='sk_wq' type-id='99f34ac1' visibility='default' filepath='include/net/sock.h' line='399' column='1'/>
         </data-member>
@@ -48581,15 +48756,7 @@
           <var-decl name='sk_wq_raw' type-id='99f34ac1' visibility='default' filepath='include/net/sock.h' line='400' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__40' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='50' column='1' id='0d04ed7a'>
-        <data-member access='private'>
-          <var-decl name='qlen' type-id='19c2251e' visibility='default' filepath='include/net/sch_generic.h' line='51' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='atomic_qlen' type-id='49178f86' visibility='default' filepath='include/net/sch_generic.h' line='52' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__29' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='232' column='1' id='18140955'>
+      <union-decl name='__anonymous_union__23' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='232' column='1' id='1213ffe3'>
         <data-member access='private'>
           <var-decl name='skc_rxhash' type-id='19c2251e' visibility='default' filepath='include/net/sock.h' line='233' column='1'/>
         </data-member>
@@ -48608,7 +48775,7 @@
           <var-decl name='skc_u16hashes' type-id='810b4a17' visibility='default' filepath='include/net/sock.h' line='166' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__32' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/bpf.h' line='298' column='1' id='0911b321'>
+      <union-decl name='__anonymous_union__30' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/bpf.h' line='298' column='1' id='0b11b647'>
         <data-member access='private'>
           <var-decl name='work' type-id='ef9025d0' visibility='default' filepath='include/linux/bpf.h' line='299' column='1'/>
         </data-member>
@@ -49017,62 +49184,6 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/pci/pci.c' language='LANG_C89'>
-      <class-decl name='hotplug_slot_ops' size-in-bits='704' is-struct='yes' visibility='default' filepath='include/linux/pci_hotplug.h' line='48' column='1' id='8d2c0dd2'>
-        <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/pci_hotplug.h' line='49' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='mod_name' type-id='80f4b756' visibility='default' filepath='include/linux/pci_hotplug.h' line='50' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='enable_slot' type-id='1617c63b' visibility='default' filepath='include/linux/pci_hotplug.h' line='51' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='disable_slot' type-id='1617c63b' visibility='default' filepath='include/linux/pci_hotplug.h' line='52' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='set_attention_status' type-id='4b81d8e7' visibility='default' filepath='include/linux/pci_hotplug.h' line='53' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='320'>
-          <var-decl name='hardware_test' type-id='b3f54aba' visibility='default' filepath='include/linux/pci_hotplug.h' line='54' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='get_power_status' type-id='db02d786' visibility='default' filepath='include/linux/pci_hotplug.h' line='55' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='get_attention_status' type-id='db02d786' visibility='default' filepath='include/linux/pci_hotplug.h' line='56' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='get_latch_status' type-id='db02d786' visibility='default' filepath='include/linux/pci_hotplug.h' line='57' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='get_adapter_status' type-id='db02d786' visibility='default' filepath='include/linux/pci_hotplug.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='reset_slot' type-id='3801bb42' visibility='default' filepath='include/linux/pci_hotplug.h' line='59' column='1'/>
-        </data-member>
-      </class-decl>
-      <class-decl name='hotplug_slot_info' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/linux/pci_hotplug.h' line='71' column='1' id='df8b174a'>
-        <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='power_status' type-id='f9b06939' visibility='default' filepath='include/linux/pci_hotplug.h' line='72' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='8'>
-          <var-decl name='attention_status' type-id='f9b06939' visibility='default' filepath='include/linux/pci_hotplug.h' line='73' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='16'>
-          <var-decl name='latch_status' type-id='f9b06939' visibility='default' filepath='include/linux/pci_hotplug.h' line='74' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='24'>
-          <var-decl name='adapter_status' type-id='f9b06939' visibility='default' filepath='include/linux/pci_hotplug.h' line='75' column='1'/>
-        </data-member>
-      </class-decl>
-      <pointer-type-def type-id='df8b174a' size-in-bits='64' id='c14deb08'/>
-      <pointer-type-def type-id='8d2c0dd2' size-in-bits='64' id='9e69d260'/>
-      <pointer-type-def type-id='d9435f47' size-in-bits='64' id='1617c63b'/>
-      <pointer-type-def type-id='b6b1bef0' size-in-bits='64' id='3801bb42'/>
-      <pointer-type-def type-id='9d9db488' size-in-bits='64' id='b3f54aba'/>
-      <pointer-type-def type-id='025c78c3' size-in-bits='64' id='4b81d8e7'/>
-      <pointer-type-def type-id='ad4c5814' size-in-bits='64' id='db02d786'/>
       <function-decl name='pcim_enable_device' mangled-name='pcim_enable_device' filepath='drivers/pci/pci.c' line='1733' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='pcim_enable_device'>
         <parameter type-id='85196e3f' name='pdev' filepath='drivers/pci/pci.c' line='1733' column='1'/>
         <return type-id='95e97e5e'/>
@@ -49094,30 +49205,6 @@
         <parameter type-id='85196e3f' name='dev' filepath='drivers/pci/pci.c' line='4089' column='1'/>
         <return type-id='48b5725f'/>
       </function-decl>
-      <function-type size-in-bits='64' id='d9435f47'>
-        <parameter type-id='b47b0d41'/>
-        <return type-id='95e97e5e'/>
-      </function-type>
-      <function-type size-in-bits='64' id='b6b1bef0'>
-        <parameter type-id='b47b0d41'/>
-        <parameter type-id='95e97e5e'/>
-        <return type-id='95e97e5e'/>
-      </function-type>
-      <function-type size-in-bits='64' id='9d9db488'>
-        <parameter type-id='b47b0d41'/>
-        <parameter type-id='19c2251e'/>
-        <return type-id='95e97e5e'/>
-      </function-type>
-      <function-type size-in-bits='64' id='025c78c3'>
-        <parameter type-id='b47b0d41'/>
-        <parameter type-id='f9b06939'/>
-        <return type-id='95e97e5e'/>
-      </function-type>
-      <function-type size-in-bits='64' id='ad4c5814'>
-        <parameter type-id='b47b0d41'/>
-        <parameter type-id='8bff8096'/>
-        <return type-id='95e97e5e'/>
-      </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/pci/probe.c' language='LANG_C89'>
       <function-decl name='bus_find_device' mangled-name='bus_find_device' filepath='include/linux/device.h' line='184' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='bus_find_device'>
@@ -49450,7 +49537,7 @@
           <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='drivers/pinctrl/core.h' line='56' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='896'>
-          <var-decl name='owner' type-id='2730d016' visibility='default' filepath='drivers/pinctrl/core.h' line='57' column='1'/>
+          <var-decl name='owner' type-id='2730d015' visibility='default' filepath='drivers/pinctrl/core.h' line='57' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
           <var-decl name='driver_data' type-id='eaa32e2f' visibility='default' filepath='drivers/pinctrl/core.h' line='58' column='1'/>
@@ -49488,7 +49575,7 @@
           <var-decl name='confops' type-id='ddf6796c' visibility='default' filepath='include/linux/pinctrl/pinctrl.h' line='135' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='owner' type-id='2730d016' visibility='default' filepath='include/linux/pinctrl/pinctrl.h' line='136' column='1'/>
+          <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/linux/pinctrl/pinctrl.h' line='136' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
           <var-decl name='num_custom_params' type-id='f0981eeb' visibility='default' filepath='include/linux/pinctrl/pinctrl.h' line='138' column='1'/>
@@ -49545,7 +49632,7 @@
           <var-decl name='ctrl_dev_name' type-id='80f4b756' visibility='default' filepath='include/linux/pinctrl/machine.h' line='72' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='data' type-id='ac5ab5a5' visibility='default' filepath='include/linux/pinctrl/machine.h' line='76' column='1'/>
+          <var-decl name='data' type-id='ac5ab5a6' visibility='default' filepath='include/linux/pinctrl/machine.h' line='76' column='1'/>
         </data-member>
       </class-decl>
       <enum-decl name='pinctrl_map_type' filepath='include/linux/pinctrl/machine.h' line='19' column='1' id='95da6d1c'>
@@ -49556,7 +49643,7 @@
         <enumerator name='PIN_MAP_TYPE_CONFIGS_PIN' value='3'/>
         <enumerator name='PIN_MAP_TYPE_CONFIGS_GROUP' value='4'/>
       </enum-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/pinctrl/machine.h' line='73' column='1' id='ac5ab5a5'>
+      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/pinctrl/machine.h' line='73' column='1' id='ac5ab5a6'>
         <data-member access='private'>
           <var-decl name='mux' type-id='ad4dd73d' visibility='default' filepath='include/linux/pinctrl/machine.h' line='74' column='1'/>
         </data-member>
@@ -51462,7 +51549,7 @@
       </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/scsi/scsi.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='ac5ab5a6'>
+      <union-decl name='__anonymous_union__' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='ac5ab5a7'>
         <data-member access='private'>
           <var-decl name='' type-id='6f7fa17e' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
         </data-member>
@@ -51492,7 +51579,7 @@
           <var-decl name='priv' type-id='24ae0315' visibility='default' filepath='include/linux/blkdev.h' line='204' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__6' size-in-bits='1792' is-anonymous='yes' visibility='default' filepath='include/linux/elevator.h' line='148' column='1' id='f5cbef9f'>
+      <union-decl name='__anonymous_union__6' size-in-bits='1792' is-anonymous='yes' visibility='default' filepath='include/linux/elevator.h' line='148' column='1' id='f5cbef9e'>
         <data-member access='private'>
           <var-decl name='sq' type-id='248921ec' visibility='default' filepath='include/linux/elevator.h' line='149' column='1'/>
         </data-member>
@@ -51526,7 +51613,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/scsi/scsi_lib.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='178' column='1' id='ac5ab5a7'>
+      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='178' column='1' id='ac5ab5a8'>
         <data-member access='private'>
           <var-decl name='hash' type-id='03a4a074' visibility='default' filepath='include/linux/blkdev.h' line='179' column='1'/>
         </data-member>
@@ -51548,7 +51635,7 @@
           <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='192' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='201' column='1' id='f9cbf5ed'>
+      <union-decl name='__anonymous_union__2' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='201' column='1' id='f9cbf5ec'>
         <data-member access='private'>
           <var-decl name='elv' type-id='e7f43f7d' visibility='default' filepath='include/linux/blkdev.h' line='205' column='1'/>
         </data-member>
@@ -51670,7 +51757,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='drivers/scsi/scsi_scan.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='896' is-anonymous='yes' visibility='default' filepath='include/scsi/scsi_host.h' line='563' column='1' id='ac5ab5a8'>
+      <union-decl name='__anonymous_union__' size-in-bits='896' is-anonymous='yes' visibility='default' filepath='include/scsi/scsi_host.h' line='563' column='1' id='ac5ab5a9'>
         <data-member access='private'>
           <var-decl name='bqt' type-id='7ea88d03' visibility='default' filepath='include/scsi/scsi_host.h' line='564' column='1'/>
         </data-member>
@@ -53474,7 +53561,7 @@
           <var-decl name='dummy' type-id='657f91c6' visibility='default' filepath='include/linux/spi/spi-mem.h' line='104' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='data' type-id='667f9356' visibility='default' filepath='include/linux/spi/spi-mem.h' line='114' column='1'/>
+          <var-decl name='data' type-id='667f9357' visibility='default' filepath='include/linux/spi/spi-mem.h' line='114' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='__anonymous_struct__' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/spi/spi-mem.h' line='90' column='1' id='e7f43f7f'>
@@ -53504,7 +53591,7 @@
           <var-decl name='buswidth' type-id='f9b06939' visibility='default' filepath='include/linux/spi/spi-mem.h' line='103' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/spi/spi-mem.h' line='106' column='1' id='667f9356'>
+      <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/spi/spi-mem.h' line='106' column='1' id='667f9357'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='buswidth' type-id='f9b06939' visibility='default' filepath='include/linux/spi/spi-mem.h' line='107' column='1'/>
         </data-member>
@@ -53515,7 +53602,7 @@
           <var-decl name='nbytes' type-id='f0981eeb' visibility='default' filepath='include/linux/spi/spi-mem.h' line='109' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='buf' type-id='ac5ab5a9' visibility='default' filepath='include/linux/spi/spi-mem.h' line='113' column='1'/>
+          <var-decl name='buf' type-id='ac5ab5aa' visibility='default' filepath='include/linux/spi/spi-mem.h' line='113' column='1'/>
         </data-member>
       </class-decl>
       <enum-decl name='spi_mem_data_dir' filepath='include/linux/spi/spi-mem.h' line='63' column='1' id='af2d0d95'>
@@ -53523,7 +53610,7 @@
         <enumerator name='SPI_MEM_DATA_IN' value='0'/>
         <enumerator name='SPI_MEM_DATA_OUT' value='1'/>
       </enum-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/spi/spi-mem.h' line='110' column='1' id='ac5ab5a9'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/spi/spi-mem.h' line='110' column='1' id='ac5ab5aa'>
         <data-member access='private'>
           <var-decl name='in' type-id='eaa32e2f' visibility='default' filepath='include/linux/spi/spi-mem.h' line='111' column='1'/>
         </data-member>
@@ -53955,7 +54042,7 @@
           <var-decl name='transfers_split_maxsize' type-id='7359adad' visibility='default' filepath='include/linux/spi/spi.h' line='82' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f9cbf5ee'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f9cbf5ed'>
         <data-member access='private'>
           <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
         </data-member>
@@ -54629,6 +54716,8 @@
       <array-type-def dimensions='1' type-id='a84c031d' size-in-bits='8' id='89feb1ec'>
         <subrange length='1' type-id='7ff19f0f' id='52f813b4'/>
       </array-type-def>
+      <class-decl name='dev_pagemap' is-struct='yes' visibility='default' is-declaration-only='yes' id='8e586c5d'/>
+      <class-decl name='iov_iter' is-struct='yes' visibility='default' is-declaration-only='yes' id='f2b4d089'/>
       <array-type-def dimensions='1' type-id='002ac4a6' size-in-bits='16' id='4d050576'>
         <subrange length='2' type-id='7ff19f0f' id='52efc4ef'/>
       </array-type-def>
@@ -54961,7 +55050,7 @@
       </class-decl>
       <class-decl name='tty_buffer' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/linux/tty.h' line='58' column='1' id='2f351d1f'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='ac5ab5aa' visibility='default' filepath='include/linux/tty.h' line='59' column='1'/>
+          <var-decl name='' type-id='ac5ab5ab' visibility='default' filepath='include/linux/tty.h' line='59' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
           <var-decl name='used' type-id='95e97e5e' visibility='default' filepath='include/linux/tty.h' line='63' column='1'/>
@@ -54982,7 +55071,7 @@
           <var-decl name='data' type-id='c99b5ecd' visibility='default' filepath='include/linux/tty.h' line='69' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/tty.h' line='59' column='1' id='ac5ab5aa'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/tty.h' line='59' column='1' id='ac5ab5ab'>
         <data-member access='private'>
           <var-decl name='next' type-id='a150e667' visibility='default' filepath='include/linux/tty.h' line='60' column='1'/>
         </data-member>
@@ -55221,6 +55310,23 @@
           <var-decl name='count' type-id='f0981eeb' visibility='default' filepath='include/linux/cdev.h' line='20' column='1'/>
         </data-member>
       </class-decl>
+      <union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f3cbec77'>
+        <data-member access='private'>
+          <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_cdev' type-id='3e6eb93a' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='tty_operations' size-in-bits='2048' is-struct='yes' visibility='default' filepath='include/linux/tty_driver.h' line='253' column='1' id='b8553c6b'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='lookup' type-id='dd354844' visibility='default' filepath='include/linux/tty_driver.h' line='254' column='1'/>
@@ -55729,6 +55835,7 @@
       <pointer-type-def type-id='6e03f2ca' size-in-bits='64' id='103756a0'/>
       <qualified-type-def type-id='95388a16' const='yes' id='f92f0413'/>
       <pointer-type-def type-id='f92f0413' size-in-bits='64' id='7e03a5bb'/>
+      <pointer-type-def type-id='8e586c5d' size-in-bits='64' id='b1a5e68b'/>
       <pointer-type-def type-id='0da72d62' size-in-bits='64' id='304a6cc4'/>
       <pointer-type-def type-id='1b343ea9' size-in-bits='64' id='c859c465'/>
       <pointer-type-def type-id='92a295b4' size-in-bits='64' id='57c9915e'/>
@@ -55752,10 +55859,12 @@
       <pointer-type-def type-id='e1d0c03e' size-in-bits='64' id='bee2fad0'/>
       <pointer-type-def type-id='2b18e57b' size-in-bits='64' id='6850d327'/>
       <pointer-type-def type-id='eac2b7d9' size-in-bits='64' id='34fdc91d'/>
+      <pointer-type-def type-id='f2b4d089' size-in-bits='64' id='4fa10f9f'/>
       <pointer-type-def type-id='2f8662b5' size-in-bits='64' id='e55856e5'/>
       <pointer-type-def type-id='e55856e5' size-in-bits='64' id='d910a7dd'/>
       <pointer-type-def type-id='bcdf2bd6' size-in-bits='64' id='3361d578'/>
       <pointer-type-def type-id='b8a3dbd4' size-in-bits='64' id='0b8da5f6'/>
+      <pointer-type-def type-id='29476916' size-in-bits='64' id='2730d016'/>
       <pointer-type-def type-id='8816ddc1' size-in-bits='64' id='f1c1e0f9'/>
       <pointer-type-def type-id='fc72f170' size-in-bits='64' id='48268ca6'/>
       <pointer-type-def type-id='cc72711f' size-in-bits='64' id='a72a4e27'/>
@@ -61552,7 +61661,7 @@
           <var-decl name='class_flag' type-id='95e97e5e' visibility='default' filepath='include/linux/fb.h' line='503' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5760'>
-          <var-decl name='' type-id='ac5ab5ab' visibility='default' filepath='include/linux/fb.h' line='507' column='1'/>
+          <var-decl name='' type-id='ac5ab5ac' visibility='default' filepath='include/linux/fb.h' line='507' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5824'>
           <var-decl name='screen_size' type-id='7359adad' visibility='default' filepath='include/linux/fb.h' line='511' column='1'/>
@@ -62113,7 +62222,7 @@
           <var-decl name='flags' type-id='19c2251e' visibility='default' filepath='include/linux/fb.h' line='176' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fb.h' line='507' column='1' id='ac5ab5ab'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fb.h' line='507' column='1' id='ac5ab5ac'>
         <data-member access='private'>
           <var-decl name='screen_base' type-id='26a90f95' visibility='default' filepath='include/linux/fb.h' line='508' column='1'/>
         </data-member>
@@ -63000,6 +63109,23 @@
       </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/inode.c' language='LANG_C89'>
+      <union-decl name='__anonymous_union__8' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='ffcbff5b'>
+        <data-member access='private'>
+          <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_cdev' type-id='3e6eb93a' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
+        </data-member>
+      </union-decl>
       <pointer-type-def type-id='805f2c4a' size-in-bits='64' id='1b7a05dc'/>
       <function-decl name='unlock_new_inode' mangled-name='unlock_new_inode' filepath='fs/inode.c' line='976' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='unlock_new_inode'>
         <parameter type-id='7e666abe' name='inode' filepath='fs/inode.c' line='976' column='1'/>
@@ -63036,7 +63162,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/kernfs/symlink.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/kernfs.h' line='150' column='1' id='ac5ab5ac'>
+      <union-decl name='__anonymous_union__' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/kernfs.h' line='150' column='1' id='ac5ab5ad'>
         <data-member access='private'>
           <var-decl name='dir' type-id='4303ca40' visibility='default' filepath='include/linux/kernfs.h' line='151' column='1'/>
         </data-member>
@@ -63058,8 +63184,264 @@
       <array-type-def dimensions='1' type-id='bd54fe1a' size-in-bits='256' id='5d4602e8'>
         <subrange length='4' type-id='7ff19f0f' id='16fe7105'/>
       </array-type-def>
+      <union-decl name='__anonymous_union__5' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/backing-dev-defs.h' line='160' column='1' id='f2cbeae5'>
+        <data-member access='private'>
+          <var-decl name='release_work' type-id='ef9025d0' visibility='default' filepath='include/linux/backing-dev-defs.h' line='161' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/linux/backing-dev-defs.h' line='162' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f4cbee0b'>
+        <data-member access='private'>
+          <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_cdev' type-id='3e6eb939' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__8' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='ffcbff5c'>
+        <member-type access='private'>
+          <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='99' column='1' id='93327075'>
+            <data-member access='public' layout-offset-in-bits='0'>
+              <var-decl name='' type-id='fecbfdc7' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
+            </data-member>
+            <data-member access='public' layout-offset-in-bits='128'>
+              <var-decl name='slab_cache' type-id='f3b4aca8' visibility='default' filepath='include/linux/mm_types.h' line='113' column='1'/>
+            </data-member>
+            <data-member access='public' layout-offset-in-bits='192'>
+              <var-decl name='freelist' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='115' column='1'/>
+            </data-member>
+            <data-member access='public' layout-offset-in-bits='256'>
+              <var-decl name='' type-id='9f0c8f18' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1'/>
+            </data-member>
+          </class-decl>
+        </member-type>
+        <member-type access='private'>
+          <class-decl name='__anonymous_struct__1' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='139' column='1' id='fc66bb0c'>
+            <data-member access='public' layout-offset-in-bits='0'>
+              <var-decl name='_pt_pad_1' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='140' column='1'/>
+            </data-member>
+            <data-member access='public' layout-offset-in-bits='64'>
+              <var-decl name='pmd_huge_pte' type-id='c28b9700' visibility='default' filepath='include/linux/mm_types.h' line='141' column='1'/>
+            </data-member>
+            <data-member access='public' layout-offset-in-bits='128'>
+              <var-decl name='_pt_pad_2' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='142' column='1'/>
+            </data-member>
+            <data-member access='public' layout-offset-in-bits='192'>
+              <var-decl name='' type-id='a00c90ad' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
+            </data-member>
+            <data-member access='public' layout-offset-in-bits='256'>
+              <var-decl name='ptl' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='150' column='1'/>
+            </data-member>
+          </class-decl>
+        </member-type>
+        <data-member access='private'>
+          <var-decl name='' type-id='e7f43f80' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/mm_types.h' line='161' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__9' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='fecbfdc7'>
+        <data-member access='private'>
+          <var-decl name='slab_list' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='101' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='' type-id='687f9683' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__11' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='a00c90ad'>
+        <data-member access='private'>
+          <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/>
+        </data-member>
+      </union-decl>
+      <class-decl name='__anonymous_struct__2' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='657f91c7'>
+        <data-member access='public' layout-offset-in-bits='0'>
+          <var-decl name='mmap' type-id='2ae08426' visibility='default' filepath='include/linux/mm_types.h' line='360' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='64'>
+          <var-decl name='mm_rb' type-id='dec44472' visibility='default' filepath='include/linux/mm_types.h' line='361' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='128'>
+          <var-decl name='vmacache_seqnum' type-id='91ce1af9' visibility='default' filepath='include/linux/mm_types.h' line='362' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='192'>
+          <var-decl name='get_unmapped_area' type-id='d44a8cec' visibility='default' filepath='include/linux/mm_types.h' line='364' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='256'>
+          <var-decl name='mmap_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='368' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='320'>
+          <var-decl name='mmap_legacy_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='369' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='384'>
+          <var-decl name='task_size' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='375' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='448'>
+          <var-decl name='highest_vm_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='376' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='512'>
+          <var-decl name='pgd' type-id='2e97ceaf' visibility='default' filepath='include/linux/mm_types.h' line='377' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='576'>
+          <var-decl name='mm_users' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='388' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='608'>
+          <var-decl name='mm_count' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='397' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='640'>
+          <var-decl name='pgtables_bytes' type-id='f22a8abb' visibility='default' filepath='include/linux/mm_types.h' line='400' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='704'>
+          <var-decl name='map_count' type-id='95e97e5e' visibility='default' filepath='include/linux/mm_types.h' line='402' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='736'>
+          <var-decl name='page_table_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='404' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='768'>
+          <var-decl name='mmap_sem' type-id='f19fdb93' visibility='default' filepath='include/linux/mm_types.h' line='407' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1152'>
+          <var-decl name='mmlist' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='409' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1280'>
+          <var-decl name='hiwater_rss' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='416' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1344'>
+          <var-decl name='hiwater_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='417' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1408'>
+          <var-decl name='total_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='419' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1472'>
+          <var-decl name='locked_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='420' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1536'>
+          <var-decl name='pinned_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='421' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1600'>
+          <var-decl name='data_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='422' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1664'>
+          <var-decl name='exec_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='423' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1728'>
+          <var-decl name='stack_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='424' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1792'>
+          <var-decl name='def_flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='425' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1856'>
+          <var-decl name='arg_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='427' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1920'>
+          <var-decl name='start_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1984'>
+          <var-decl name='end_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2048'>
+          <var-decl name='start_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2112'>
+          <var-decl name='end_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2176'>
+          <var-decl name='start_brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2240'>
+          <var-decl name='brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2304'>
+          <var-decl name='start_stack' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2368'>
+          <var-decl name='arg_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2432'>
+          <var-decl name='arg_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2496'>
+          <var-decl name='env_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2560'>
+          <var-decl name='env_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2624'>
+          <var-decl name='saved_auxv' type-id='d964a553' visibility='default' filepath='include/linux/mm_types.h' line='432' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5568'>
+          <var-decl name='rss_stat' type-id='2235a2cb' visibility='default' filepath='include/linux/mm_types.h' line='438' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5888'>
+          <var-decl name='binfmt' type-id='7cc59444' visibility='default' filepath='include/linux/mm_types.h' line='440' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5952'>
+          <var-decl name='context' type-id='0eb9c3fd' visibility='default' filepath='include/linux/mm_types.h' line='443' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6144'>
+          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='445' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6208'>
+          <var-decl name='core_state' type-id='90ad83aa' visibility='default' filepath='include/linux/mm_types.h' line='447' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6272'>
+          <var-decl name='membarrier_state' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='449' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6304'>
+          <var-decl name='ioctx_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='452' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6336'>
+          <var-decl name='ioctx_table' type-id='122191b2' visibility='default' filepath='include/linux/mm_types.h' line='453' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6400'>
+          <var-decl name='owner' type-id='f23e2572' visibility='default' filepath='include/linux/mm_types.h' line='466' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6464'>
+          <var-decl name='user_ns' type-id='c0ced321' visibility='default' filepath='include/linux/mm_types.h' line='468' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6528'>
+          <var-decl name='exe_file' type-id='77e79a4b' visibility='default' filepath='include/linux/mm_types.h' line='471' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6592'>
+          <var-decl name='tlb_flush_pending' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='497' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6656'>
+          <var-decl name='uprobes_state' type-id='6308a819' visibility='default' filepath='include/linux/mm_types.h' line='502' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6720'>
+          <var-decl name='async_put_work' type-id='ef9025d0' visibility='default' filepath='include/linux/mm_types.h' line='506' column='1'/>
+        </data-member>
+      </class-decl>
+      <union-decl name='__anonymous_union__16' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1' id='9d0c8bf1'>
+        <data-member access='private'>
+          <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='189' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='special_vec' type-id='40af3609' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='completion_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='191' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='192' column='1'/>
+        </data-member>
+      </union-decl>
       <typedef-decl name='__kernel_fsid_t' type-id='39d018c6' filepath='include/uapi/asm-generic/posix_types.h' line='81' column='1' id='ac895711'/>
-      <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='ac895711' visibility='default' filepath='include/uapi/asm-generic/posix_types.h' line='79' column='1' id='39d018c6'>
+      <class-decl name='__anonymous_struct__3' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='ac895711' visibility='default' filepath='include/uapi/asm-generic/posix_types.h' line='79' column='1' id='39d018c6'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='val' type-id='e4266c7e' visibility='default' filepath='include/uapi/asm-generic/posix_types.h' line='80' column='1'/>
         </data-member>
@@ -63083,6 +63465,17 @@
         <parameter type-id='b53e8dbb' name='ppos' filepath='fs/libfs.c' line='217' column='1'/>
         <return type-id='79a0948f'/>
       </function-decl>
+      <union-decl name='__anonymous_union__10' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1' id='9f0c8f18'>
+        <data-member access='private'>
+          <var-decl name='s_mem' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='117' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='counters' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='118' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='' type-id='39e10100' visibility='default' filepath='include/linux/mm_types.h' line='119' column='1'/>
+        </data-member>
+      </union-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/locks.c' language='LANG_C89'>
       <function-decl name='__break_lease' mangled-name='__break_lease' filepath='fs/locks.c' line='1444' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__break_lease'>
@@ -63093,15 +63486,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/namei.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/backing-dev-defs.h' line='160' column='1' id='f6cbf136'>
-        <data-member access='private'>
-          <var-decl name='release_work' type-id='ef9025d0' visibility='default' filepath='include/linux/backing-dev-defs.h' line='161' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/linux/backing-dev-defs.h' line='162' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fsnotify_backend.h' line='283' column='1' id='f3cbec77'>
+      <union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fsnotify_backend.h' line='283' column='1' id='f3cbec78'>
         <data-member access='private'>
           <var-decl name='obj' type-id='c66f5ec5' visibility='default' filepath='include/linux/fsnotify_backend.h' line='285' column='1'/>
         </data-member>
@@ -63188,6 +63573,7 @@
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/overlayfs/super.c' language='LANG_C89'>
       <class-decl name='iomap' is-struct='yes' visibility='default' is-declaration-only='yes' id='3b326cb5'/>
+      <class-decl name='pipe_inode_info' is-struct='yes' visibility='default' is-declaration-only='yes' id='bed94323'/>
       <array-type-def dimensions='1' type-id='05438640' size-in-bits='infinite' id='a51f6b3c'>
         <subrange length='infinite' type-id='7ff19f0f' id='031f2035'/>
       </array-type-def>
@@ -63241,10 +63627,10 @@
           <var-decl name='e_perm' type-id='8efea9e5' visibility='default' filepath='include/linux/posix_acl.h' line='20' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='32'>
-          <var-decl name='' type-id='ac5ab5ad' visibility='default' filepath='include/linux/posix_acl.h' line='21' column='1'/>
+          <var-decl name='' type-id='ac5ab5ae' visibility='default' filepath='include/linux/posix_acl.h' line='21' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/posix_acl.h' line='21' column='1' id='ac5ab5ad'>
+      <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/posix_acl.h' line='21' column='1' id='ac5ab5ae'>
         <data-member access='private'>
           <var-decl name='e_uid' type-id='d80b72e6' visibility='default' filepath='include/linux/posix_acl.h' line='22' column='1'/>
         </data-member>
@@ -63254,21 +63640,21 @@
       </union-decl>
       <class-decl name='fid' size-in-bits='160' is-struct='yes' visibility='default' filepath='include/linux/exportfs.h' line='113' column='1' id='2437c5c4'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='f6cbf137' visibility='default' filepath='include/linux/exportfs.h' line='114' column='1'/>
+          <var-decl name='' type-id='f6cbf136' visibility='default' filepath='include/linux/exportfs.h' line='114' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='160' is-anonymous='yes' visibility='default' filepath='include/linux/exportfs.h' line='114' column='1' id='f6cbf137'>
+      <union-decl name='__anonymous_union__1' size-in-bits='160' is-anonymous='yes' visibility='default' filepath='include/linux/exportfs.h' line='114' column='1' id='f6cbf136'>
         <data-member access='private'>
-          <var-decl name='i32' type-id='687f9683' visibility='default' filepath='include/linux/exportfs.h' line='120' column='1'/>
+          <var-decl name='i32' type-id='687f9684' visibility='default' filepath='include/linux/exportfs.h' line='120' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='udf' type-id='657f91c7' visibility='default' filepath='include/linux/exportfs.h' line='128' column='1'/>
+          <var-decl name='udf' type-id='657f91c8' visibility='default' filepath='include/linux/exportfs.h' line='128' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='raw' type-id='d5016f6f' visibility='default' filepath='include/linux/exportfs.h' line='129' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/exportfs.h' line='115' column='1' id='687f9683'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/exportfs.h' line='115' column='1' id='687f9684'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='ino' type-id='19c2251e' visibility='default' filepath='include/linux/exportfs.h' line='116' column='1'/>
         </data-member>
@@ -63282,7 +63668,7 @@
           <var-decl name='parent_gen' type-id='19c2251e' visibility='default' filepath='include/linux/exportfs.h' line='119' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='160' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/exportfs.h' line='121' column='1' id='657f91c7'>
+      <class-decl name='__anonymous_struct__2' size-in-bits='160' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/exportfs.h' line='121' column='1' id='657f91c8'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='block' type-id='19c2251e' visibility='default' filepath='include/linux/exportfs.h' line='122' column='1'/>
         </data-member>
@@ -63302,7 +63688,7 @@
           <var-decl name='parent_generation' type-id='19c2251e' visibility='default' filepath='include/linux/exportfs.h' line='127' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__6' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f5cbefa0'>
+      <union-decl name='__anonymous_union__6' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f5cbef9f'>
         <data-member access='private'>
           <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
         </data-member>
@@ -63336,6 +63722,7 @@
       <pointer-type-def type-id='657fbd80' size-in-bits='64' id='547aa7d2'/>
       <pointer-type-def type-id='3b326cb5' size-in-bits='64' id='07751825'/>
       <pointer-type-def type-id='60efdfd3' size-in-bits='64' id='5bfdb453'/>
+      <pointer-type-def type-id='bed94323' size-in-bits='64' id='15d29711'/>
       <pointer-type-def type-id='637cfeaf' size-in-bits='64' id='74c91557'/>
       <pointer-type-def type-id='916c4095' size-in-bits='64' id='439be051'/>
       <pointer-type-def type-id='19e88834' size-in-bits='64' id='549da824'/>
@@ -63512,18 +63899,18 @@
       </array-type-def>
       <class-decl name='flex_array' size-in-bits='32768' is-struct='yes' visibility='default' filepath='include/linux/flex_array.h' line='21' column='1' id='c61fec7c'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='ac5ab5ae' visibility='default' filepath='include/linux/flex_array.h' line='22' column='1'/>
+          <var-decl name='' type-id='ac5ab5af' visibility='default' filepath='include/linux/flex_array.h' line='22' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='32768' is-anonymous='yes' visibility='default' filepath='include/linux/flex_array.h' line='22' column='1' id='ac5ab5ae'>
+      <union-decl name='__anonymous_union__' size-in-bits='32768' is-anonymous='yes' visibility='default' filepath='include/linux/flex_array.h' line='22' column='1' id='ac5ab5af'>
         <data-member access='private'>
-          <var-decl name='' type-id='e7f43f80' visibility='default' filepath='include/linux/flex_array.h' line='23' column='1'/>
+          <var-decl name='' type-id='e7f43f81' visibility='default' filepath='include/linux/flex_array.h' line='23' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='padding' type-id='d16c6df4' visibility='default' filepath='include/linux/flex_array.h' line='34' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/flex_array.h' line='23' column='1' id='e7f43f80'>
+      <class-decl name='__anonymous_struct__' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/flex_array.h' line='23' column='1' id='e7f43f81'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='element_size' type-id='95e97e5e' visibility='default' filepath='include/linux/flex_array.h' line='24' column='1'/>
         </data-member>
@@ -63584,220 +63971,6 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/proc/cmdline.c' language='LANG_C89'>
-      <class-decl name='dev_pagemap' is-struct='yes' visibility='default' is-declaration-only='yes' id='8e586c5d'/>
-      <class-decl name='iov_iter' is-struct='yes' visibility='default' is-declaration-only='yes' id='f2b4d089'/>
-      <class-decl name='module' is-struct='yes' visibility='default' is-declaration-only='yes' id='29476916'/>
-      <class-decl name='pipe_inode_info' is-struct='yes' visibility='default' is-declaration-only='yes' id='bed94323'/>
-      <class-decl name='__anonymous_struct__' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='e7f43f81'>
-        <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='mmap' type-id='2ae08426' visibility='default' filepath='include/linux/mm_types.h' line='360' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='mm_rb' type-id='dec44472' visibility='default' filepath='include/linux/mm_types.h' line='361' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='vmacache_seqnum' type-id='91ce1af9' visibility='default' filepath='include/linux/mm_types.h' line='362' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='get_unmapped_area' type-id='d44a8cec' visibility='default' filepath='include/linux/mm_types.h' line='364' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='mmap_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='368' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='320'>
-          <var-decl name='mmap_legacy_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='369' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='task_size' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='375' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='highest_vm_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='376' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='pgd' type-id='2e97ceaf' visibility='default' filepath='include/linux/mm_types.h' line='377' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='mm_users' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='388' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='608'>
-          <var-decl name='mm_count' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='397' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='pgtables_bytes' type-id='f22a8abb' visibility='default' filepath='include/linux/mm_types.h' line='400' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='704'>
-          <var-decl name='map_count' type-id='95e97e5e' visibility='default' filepath='include/linux/mm_types.h' line='402' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='736'>
-          <var-decl name='page_table_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='404' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='768'>
-          <var-decl name='mmap_sem' type-id='f19fdb93' visibility='default' filepath='include/linux/mm_types.h' line='407' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1152'>
-          <var-decl name='mmlist' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='409' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1280'>
-          <var-decl name='hiwater_rss' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='416' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1344'>
-          <var-decl name='hiwater_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='417' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1408'>
-          <var-decl name='total_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='419' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1472'>
-          <var-decl name='locked_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='420' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1536'>
-          <var-decl name='pinned_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='421' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1600'>
-          <var-decl name='data_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='422' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1664'>
-          <var-decl name='exec_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='423' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1728'>
-          <var-decl name='stack_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='424' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1792'>
-          <var-decl name='def_flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='425' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1856'>
-          <var-decl name='arg_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='427' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1920'>
-          <var-decl name='start_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1984'>
-          <var-decl name='end_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2048'>
-          <var-decl name='start_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2112'>
-          <var-decl name='end_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2176'>
-          <var-decl name='start_brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2240'>
-          <var-decl name='brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2304'>
-          <var-decl name='start_stack' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2368'>
-          <var-decl name='arg_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2432'>
-          <var-decl name='arg_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2496'>
-          <var-decl name='env_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2560'>
-          <var-decl name='env_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2624'>
-          <var-decl name='saved_auxv' type-id='d964a553' visibility='default' filepath='include/linux/mm_types.h' line='432' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='5568'>
-          <var-decl name='rss_stat' type-id='2235a2cb' visibility='default' filepath='include/linux/mm_types.h' line='438' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='5888'>
-          <var-decl name='binfmt' type-id='7cc59444' visibility='default' filepath='include/linux/mm_types.h' line='440' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='5952'>
-          <var-decl name='context' type-id='0eb9c3fd' visibility='default' filepath='include/linux/mm_types.h' line='443' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6144'>
-          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='445' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6208'>
-          <var-decl name='core_state' type-id='90ad83aa' visibility='default' filepath='include/linux/mm_types.h' line='447' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6272'>
-          <var-decl name='membarrier_state' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='449' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6304'>
-          <var-decl name='ioctx_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='452' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6336'>
-          <var-decl name='ioctx_table' type-id='122191b2' visibility='default' filepath='include/linux/mm_types.h' line='453' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6400'>
-          <var-decl name='owner' type-id='f23e2572' visibility='default' filepath='include/linux/mm_types.h' line='466' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6464'>
-          <var-decl name='user_ns' type-id='c0ced320' visibility='default' filepath='include/linux/mm_types.h' line='468' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6528'>
-          <var-decl name='exe_file' type-id='77e79a4b' visibility='default' filepath='include/linux/mm_types.h' line='471' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6592'>
-          <var-decl name='tlb_flush_pending' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='497' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6656'>
-          <var-decl name='uprobes_state' type-id='6308a819' visibility='default' filepath='include/linux/mm_types.h' line='502' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6720'>
-          <var-decl name='async_put_work' type-id='ef9025d0' visibility='default' filepath='include/linux/mm_types.h' line='506' column='1'/>
-        </data-member>
-      </class-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f8cbf458'>
-        <member-type access='private'>
-          <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='139' column='1' id='1ca43828'>
-            <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='_pt_pad_1' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='140' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='64'>
-              <var-decl name='pmd_huge_pte' type-id='c28b9700' visibility='default' filepath='include/linux/mm_types.h' line='141' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='128'>
-              <var-decl name='_pt_pad_2' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='142' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='192'>
-              <var-decl name='' type-id='f3cbec78' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='256'>
-              <var-decl name='ptl' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='150' column='1'/>
-            </data-member>
-          </class-decl>
-        </member-type>
-        <member-type access='private'>
-          <class-decl name='__anonymous_struct__1' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='153' column='1' id='2f844f5b'>
-            <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='pgmap' type-id='b1a5e68b' visibility='default' filepath='include/linux/mm_types.h' line='155' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='64'>
-              <var-decl name='hmm_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='156' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='128'>
-              <var-decl name='_zd_pad_1' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='157' column='1'/>
-            </data-member>
-          </class-decl>
-        </member-type>
-        <data-member access='private'>
-          <var-decl name='' type-id='6f7fa17e' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/mm_types.h' line='161' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f3cbec78'>
-        <data-member access='private'>
-          <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/>
-        </data-member>
-      </union-decl>
-      <pointer-type-def type-id='8e586c5d' size-in-bits='64' id='b1a5e68b'/>
-      <pointer-type-def type-id='f2b4d089' size-in-bits='64' id='4fa10f9f'/>
-      <pointer-type-def type-id='29476916' size-in-bits='64' id='2730d016'/>
-      <pointer-type-def type-id='bed94323' size-in-bits='64' id='15d29711'/>
       <function-decl name='seq_puts' mangled-name='seq_puts' filepath='include/linux/seq_file.h' line='120' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='seq_puts'>
         <parameter type-id='f8dc9df0'/>
         <parameter type-id='80f4b756'/>
@@ -63812,7 +63985,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/proc/generic.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='fs/proc/internal.h' line='48' column='1' id='ac5ab5af'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='fs/proc/internal.h' line='48' column='1' id='ac5ab5b0'>
         <data-member access='private'>
           <var-decl name='seq_ops' type-id='943a1b48' visibility='default' filepath='fs/proc/internal.h' line='49' column='1'/>
         </data-member>
@@ -64007,7 +64180,7 @@
           <var-decl name='type' type-id='fec738e2' visibility='default' filepath='include/linux/property.h' line='233' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='' type-id='ac5ab5b0' visibility='default' filepath='include/linux/property.h' line='234' column='1'/>
+          <var-decl name='' type-id='ac5ab5b1' visibility='default' filepath='include/linux/property.h' line='234' column='1'/>
         </data-member>
       </class-decl>
       <enum-decl name='dev_prop_type' filepath='include/linux/property.h' line='21' column='1' id='fec738e2'>
@@ -64019,15 +64192,15 @@
         <enumerator name='DEV_PROP_STRING' value='4'/>
         <enumerator name='DEV_PROP_MAX' value='5'/>
       </enum-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/property.h' line='234' column='1' id='ac5ab5b0'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/property.h' line='234' column='1' id='ac5ab5b1'>
         <data-member access='private'>
-          <var-decl name='pointer' type-id='f6cbf138' visibility='default' filepath='include/linux/property.h' line='241' column='1'/>
+          <var-decl name='pointer' type-id='f6cbf137' visibility='default' filepath='include/linux/property.h' line='241' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='value' type-id='f9cbf5ef' visibility='default' filepath='include/linux/property.h' line='248' column='1'/>
+          <var-decl name='value' type-id='f9cbf5ee' visibility='default' filepath='include/linux/property.h' line='248' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/property.h' line='235' column='1' id='f6cbf138'>
+      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/property.h' line='235' column='1' id='f6cbf137'>
         <data-member access='private'>
           <var-decl name='u8_data' type-id='bbaf3419' visibility='default' filepath='include/linux/property.h' line='236' column='1'/>
         </data-member>
@@ -64044,7 +64217,7 @@
           <var-decl name='str' type-id='13956559' visibility='default' filepath='include/linux/property.h' line='240' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/property.h' line='242' column='1' id='f9cbf5ef'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/property.h' line='242' column='1' id='f9cbf5ee'>
         <data-member access='private'>
           <var-decl name='u8_data' type-id='f9b06939' visibility='default' filepath='include/linux/property.h' line='243' column='1'/>
         </data-member>
@@ -64278,7 +64451,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='fs/readdir.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f8cbf459'>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f8cbf458'>
         <data-member access='private'>
           <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
         </data-member>
@@ -64671,7 +64844,7 @@
           <var-decl name='tm_ref' type-id='49178f86' visibility='default' filepath='include/linux/trace_events.h' line='393' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__6' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f5cbefa1'>
+      <union-decl name='__anonymous_union__6' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f5cbefa0'>
         <data-member access='private'>
           <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
         </data-member>
@@ -64961,13 +65134,13 @@
           <var-decl name='inheritable' type-id='7496b151' visibility='default' filepath='kernel/audit.h' line='66' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='' type-id='ac5ab5b1' visibility='default' filepath='kernel/audit.h' line='67' column='1'/>
+          <var-decl name='' type-id='ac5ab5b2' visibility='default' filepath='kernel/audit.h' line='67' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
           <var-decl name='ambient' type-id='7496b151' visibility='default' filepath='kernel/audit.h' line='71' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='67' column='1' id='ac5ab5b1'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='67' column='1' id='ac5ab5b2'>
         <data-member access='private'>
           <var-decl name='fE' type-id='f0981eeb' visibility='default' filepath='kernel/audit.h' line='68' column='1'/>
         </data-member>
@@ -64983,18 +65156,18 @@
           <var-decl name='__data' type-id='1f1c2468' visibility='default' filepath='include/uapi/linux/socket.h' line='17' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='576' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='157' column='1' id='f6cbf139'>
+      <union-decl name='__anonymous_union__1' size-in-bits='576' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='157' column='1' id='f6cbf138'>
         <data-member access='private'>
           <var-decl name='socketcall' type-id='e7f43f82' visibility='default' filepath='kernel/audit.h' line='161' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='ipc' type-id='687f9684' visibility='default' filepath='kernel/audit.h' line='172' column='1'/>
+          <var-decl name='ipc' type-id='687f9685' visibility='default' filepath='kernel/audit.h' line='172' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='mq_getsetattr' type-id='657f91c8' visibility='default' filepath='kernel/audit.h' line='176' column='1'/>
+          <var-decl name='mq_getsetattr' type-id='657f91c9' visibility='default' filepath='kernel/audit.h' line='176' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='mq_notify' type-id='667f9357' visibility='default' filepath='kernel/audit.h' line='180' column='1'/>
+          <var-decl name='mq_notify' type-id='667f9358' visibility='default' filepath='kernel/audit.h' line='180' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='mq_sendrecv' type-id='6b7f9b35' visibility='default' filepath='kernel/audit.h' line='186' column='1'/>
@@ -65023,7 +65196,7 @@
           <var-decl name='args' type-id='613ff906' visibility='default' filepath='kernel/audit.h' line='160' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='162' column='1' id='687f9684'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='162' column='1' id='687f9685'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='uid' type-id='d80b72e6' visibility='default' filepath='kernel/audit.h' line='163' column='1'/>
         </data-member>
@@ -65052,7 +65225,7 @@
           <var-decl name='qbytes' type-id='7359adad' visibility='default' filepath='kernel/audit.h' line='171' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='173' column='1' id='657f91c8'>
+      <class-decl name='__anonymous_struct__2' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='173' column='1' id='657f91c9'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='mqdes' type-id='a4bb20dd' visibility='default' filepath='kernel/audit.h' line='174' column='1'/>
         </data-member>
@@ -65079,7 +65252,7 @@
           <var-decl name='__reserved' type-id='d8aa8ab0' visibility='default' filepath='include/uapi/linux/mqueue.h' line='33' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__3' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='177' column='1' id='667f9357'>
+      <class-decl name='__anonymous_struct__3' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/audit.h' line='177' column='1' id='667f9358'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='mqdes' type-id='a4bb20dd' visibility='default' filepath='kernel/audit.h' line='178' column='1'/>
         </data-member>
@@ -65186,7 +65359,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='kernel/bpf/inode.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f9cbf5f0'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f9cbf5ef'>
         <data-member access='private'>
           <var-decl name='i_pipe' type-id='15d29710' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
         </data-member>
@@ -65578,6 +65751,164 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='kernel/dma/mapping.c' language='LANG_C89'>
+      <class-decl name='__anonymous_struct__' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='e7f43f83'>
+        <data-member access='public' layout-offset-in-bits='0'>
+          <var-decl name='mmap' type-id='2ae08426' visibility='default' filepath='include/linux/mm_types.h' line='360' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='64'>
+          <var-decl name='mm_rb' type-id='dec44472' visibility='default' filepath='include/linux/mm_types.h' line='361' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='128'>
+          <var-decl name='vmacache_seqnum' type-id='91ce1af9' visibility='default' filepath='include/linux/mm_types.h' line='362' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='192'>
+          <var-decl name='get_unmapped_area' type-id='d44a8cec' visibility='default' filepath='include/linux/mm_types.h' line='364' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='256'>
+          <var-decl name='mmap_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='368' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='320'>
+          <var-decl name='mmap_legacy_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='369' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='384'>
+          <var-decl name='task_size' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='375' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='448'>
+          <var-decl name='highest_vm_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='376' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='512'>
+          <var-decl name='pgd' type-id='2e97ceaf' visibility='default' filepath='include/linux/mm_types.h' line='377' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='576'>
+          <var-decl name='mm_users' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='388' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='608'>
+          <var-decl name='mm_count' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='397' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='640'>
+          <var-decl name='pgtables_bytes' type-id='f22a8abb' visibility='default' filepath='include/linux/mm_types.h' line='400' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='704'>
+          <var-decl name='map_count' type-id='95e97e5e' visibility='default' filepath='include/linux/mm_types.h' line='402' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='736'>
+          <var-decl name='page_table_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='404' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='768'>
+          <var-decl name='mmap_sem' type-id='f19fdb93' visibility='default' filepath='include/linux/mm_types.h' line='407' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1152'>
+          <var-decl name='mmlist' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='409' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1280'>
+          <var-decl name='hiwater_rss' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='416' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1344'>
+          <var-decl name='hiwater_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='417' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1408'>
+          <var-decl name='total_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='419' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1472'>
+          <var-decl name='locked_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='420' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1536'>
+          <var-decl name='pinned_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='421' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1600'>
+          <var-decl name='data_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='422' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1664'>
+          <var-decl name='exec_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='423' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1728'>
+          <var-decl name='stack_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='424' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1792'>
+          <var-decl name='def_flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='425' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1856'>
+          <var-decl name='arg_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='427' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1920'>
+          <var-decl name='start_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1984'>
+          <var-decl name='end_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2048'>
+          <var-decl name='start_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2112'>
+          <var-decl name='end_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2176'>
+          <var-decl name='start_brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2240'>
+          <var-decl name='brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2304'>
+          <var-decl name='start_stack' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2368'>
+          <var-decl name='arg_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2432'>
+          <var-decl name='arg_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2496'>
+          <var-decl name='env_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2560'>
+          <var-decl name='env_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2624'>
+          <var-decl name='saved_auxv' type-id='d964a553' visibility='default' filepath='include/linux/mm_types.h' line='432' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5568'>
+          <var-decl name='rss_stat' type-id='2235a2cb' visibility='default' filepath='include/linux/mm_types.h' line='438' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5888'>
+          <var-decl name='binfmt' type-id='7cc59444' visibility='default' filepath='include/linux/mm_types.h' line='440' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5952'>
+          <var-decl name='context' type-id='0eb9c3fd' visibility='default' filepath='include/linux/mm_types.h' line='443' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6144'>
+          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='445' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6208'>
+          <var-decl name='core_state' type-id='90ad83aa' visibility='default' filepath='include/linux/mm_types.h' line='447' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6272'>
+          <var-decl name='membarrier_state' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='449' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6304'>
+          <var-decl name='ioctx_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='452' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6336'>
+          <var-decl name='ioctx_table' type-id='122191b2' visibility='default' filepath='include/linux/mm_types.h' line='453' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6400'>
+          <var-decl name='owner' type-id='f23e2572' visibility='default' filepath='include/linux/mm_types.h' line='466' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6464'>
+          <var-decl name='user_ns' type-id='c0ced320' visibility='default' filepath='include/linux/mm_types.h' line='468' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6528'>
+          <var-decl name='exe_file' type-id='77e79a4b' visibility='default' filepath='include/linux/mm_types.h' line='471' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6592'>
+          <var-decl name='tlb_flush_pending' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='497' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6656'>
+          <var-decl name='uprobes_state' type-id='6308a819' visibility='default' filepath='include/linux/mm_types.h' line='502' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6720'>
+          <var-decl name='async_put_work' type-id='ef9025d0' visibility='default' filepath='include/linux/mm_types.h' line='506' column='1'/>
+        </data-member>
+      </class-decl>
       <function-decl name='dmam_alloc_coherent' mangled-name='dmam_alloc_coherent' filepath='kernel/dma/mapping.c' line='60' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='dmam_alloc_coherent'>
         <parameter type-id='fa0b179b' name='dev' filepath='kernel/dma/mapping.c' line='60' column='1'/>
         <parameter type-id='b59d7dce' name='size' filepath='kernel/dma/mapping.c' line='60' column='1'/>
@@ -65703,10 +66034,10 @@
           <var-decl name='capabilities' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='518' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='' type-id='687f9685' visibility='default' filepath='include/uapi/linux/perf_event.h' line='519' column='1'/>
+          <var-decl name='' type-id='687f9686' visibility='default' filepath='include/uapi/linux/perf_event.h' line='519' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='519' column='1' id='687f9685'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='519' column='1' id='687f9686'>
         <data-member access='public' layout-offset-in-bits='63'>
           <var-decl name='cap_bit0' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='520' column='1'/>
         </data-member>
@@ -65726,7 +66057,7 @@
           <var-decl name='cap_____res' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='526' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/trace_events.h' line='256' column='1' id='f2cbeae5'>
+      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/trace_events.h' line='256' column='1' id='f2cbeae6'>
         <data-member access='private'>
           <var-decl name='name' type-id='26a90f95' visibility='default' filepath='include/linux/trace_events.h' line='257' column='1'/>
         </data-member>
@@ -65861,11 +66192,11 @@
           <var-decl name='mremap' type-id='46d78c8b' visibility='default' filepath='include/linux/mm_types.h' line='649' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f6cbf13a'>
+      <union-decl name='__anonymous_union__1' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f6cbf139'>
         <member-type access='private'>
           <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='99' column='1' id='70494aaa'>
             <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='' type-id='f9cbf5f1' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
+              <var-decl name='' type-id='f9cbf5f0' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='128'>
               <var-decl name='slab_cache' type-id='f3b4aca8' visibility='default' filepath='include/linux/mm_types.h' line='113' column='1'/>
@@ -65874,7 +66205,7 @@
               <var-decl name='freelist' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='115' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='256'>
-              <var-decl name='' type-id='f8cbf45a' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1'/>
+              <var-decl name='' type-id='f8cbf459' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1'/>
             </data-member>
           </class-decl>
         </member-type>
@@ -65918,7 +66249,7 @@
           <var-decl name='private' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='97' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f9cbf5f1'>
+      <union-decl name='__anonymous_union__2' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f9cbf5f0'>
         <data-member access='private'>
           <var-decl name='slab_list' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='101' column='1'/>
         </data-member>
@@ -65967,7 +66298,7 @@
           <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1' id='f8cbf45a'>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1' id='f8cbf459'>
         <data-member access='private'>
           <var-decl name='s_mem' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='117' column='1'/>
         </data-member>
@@ -66005,7 +66336,7 @@
       <array-type-def dimensions='1' type-id='77e79a4b' size-in-bits='4096' id='d2c516bd'>
         <subrange length='64' type-id='7ff19f0f' id='b10be967'/>
       </array-type-def>
-      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f8cbf45b'>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f8cbf45a'>
         <data-member access='private'>
           <var-decl name='i_pipe' type-id='15d29710' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
         </data-member>
@@ -66686,7 +67017,7 @@
       </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='kernel/params.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/moduleparam.h' line='78' column='1' id='ac5ab5b2'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/moduleparam.h' line='78' column='1' id='ac5ab5b3'>
         <data-member access='private'>
           <var-decl name='arg' type-id='eaa32e2f' visibility='default' filepath='include/linux/moduleparam.h' line='79' column='1'/>
         </data-member>
@@ -66778,11 +67109,11 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='kernel/pid.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='ac5ab5b3'>
+      <union-decl name='__anonymous_union__' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='ac5ab5b4'>
         <member-type access='private'>
           <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='99' column='1' id='5b23ea11'>
             <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='' type-id='f6cbf13b' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
+              <var-decl name='' type-id='f6cbf13a' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='128'>
               <var-decl name='slab_cache' type-id='f3b4aca8' visibility='default' filepath='include/linux/mm_types.h' line='113' column='1'/>
@@ -66791,7 +67122,7 @@
               <var-decl name='freelist' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='115' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='256'>
-              <var-decl name='' type-id='f9cbf5f2' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1'/>
+              <var-decl name='' type-id='f9cbf5f1' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1'/>
             </data-member>
           </class-decl>
         </member-type>
@@ -66807,7 +67138,7 @@
               <var-decl name='_pt_pad_2' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='142' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='192'>
-              <var-decl name='' type-id='f8cbf45c' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
+              <var-decl name='' type-id='f8cbf45b' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='256'>
               <var-decl name='ptl' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='150' column='1'/>
@@ -66815,13 +67146,13 @@
           </class-decl>
         </member-type>
         <data-member access='private'>
-          <var-decl name='' type-id='e7f43f83' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
+          <var-decl name='' type-id='e7f43f80' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/mm_types.h' line='161' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1' id='e7f43f83'>
+      <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1' id='e7f43f80'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='lru' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='87' column='1'/>
         </data-member>
@@ -66835,15 +67166,15 @@
           <var-decl name='private' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='97' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f6cbf13b'>
+      <union-decl name='__anonymous_union__1' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f6cbf13a'>
         <data-member access='private'>
           <var-decl name='slab_list' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='101' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='' type-id='687f9686' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1'/>
+          <var-decl name='' type-id='687f9683' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1' id='687f9686'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1' id='687f9683'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='next' type-id='02f11ed4' visibility='default' filepath='include/linux/mm_types.h' line='103' column='1'/>
         </data-member>
@@ -66863,7 +67194,7 @@
         <parameter type-id='ce78cf46' name='type' filepath='kernel/pid.c' line='382' column='1'/>
         <return type-id='f23e2572'/>
       </function-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f8cbf45c'>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f8cbf45b'>
         <data-member access='private'>
           <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
         </data-member>
@@ -66871,7 +67202,7 @@
           <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1' id='f9cbf5f2'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1' id='f9cbf5f1'>
         <data-member access='private'>
           <var-decl name='s_mem' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='117' column='1'/>
         </data-member>
@@ -67387,21 +67718,21 @@
         <parameter type-id='7359adad'/>
         <return type-id='26a90f95'/>
       </function-decl>
-      <function-decl name='sched_isolate_cpu' mangled-name='sched_isolate_cpu' filepath='kernel/sched/core.c' line='6728' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_isolate_cpu'>
-        <parameter type-id='95e97e5e' name='cpu' filepath='kernel/sched/core.c' line='6728' column='1'/>
+      <function-decl name='sched_isolate_cpu' mangled-name='sched_isolate_cpu' filepath='kernel/sched/core.c' line='6801' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_isolate_cpu'>
+        <parameter type-id='95e97e5e' name='cpu' filepath='kernel/sched/core.c' line='6801' column='1'/>
         <return type-id='95e97e5e'/>
       </function-decl>
-      <function-decl name='sched_unisolate_cpu_unlocked' mangled-name='sched_unisolate_cpu_unlocked' filepath='kernel/sched/core.c' line='6806' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_unisolate_cpu_unlocked'>
-        <parameter type-id='95e97e5e' name='cpu' filepath='kernel/sched/core.c' line='6806' column='1'/>
+      <function-decl name='sched_unisolate_cpu_unlocked' mangled-name='sched_unisolate_cpu_unlocked' filepath='kernel/sched/core.c' line='6879' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_unisolate_cpu_unlocked'>
+        <parameter type-id='95e97e5e' name='cpu' filepath='kernel/sched/core.c' line='6879' column='1'/>
         <return type-id='95e97e5e'/>
       </function-decl>
-      <function-decl name='sched_unisolate_cpu' mangled-name='sched_unisolate_cpu' filepath='kernel/sched/core.c' line='6845' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_unisolate_cpu'>
-        <parameter type-id='95e97e5e' name='cpu' filepath='kernel/sched/core.c' line='6845' column='1'/>
+      <function-decl name='sched_unisolate_cpu' mangled-name='sched_unisolate_cpu' filepath='kernel/sched/core.c' line='6918' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sched_unisolate_cpu'>
+        <parameter type-id='95e97e5e' name='cpu' filepath='kernel/sched/core.c' line='6918' column='1'/>
         <return type-id='95e97e5e'/>
       </function-decl>
-      <function-decl name='set_task_boost' mangled-name='set_task_boost' filepath='kernel/sched/core.c' line='8560' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='set_task_boost'>
-        <parameter type-id='95e97e5e' name='boost' filepath='kernel/sched/core.c' line='8560' column='1'/>
-        <parameter type-id='91ce1af9' name='period' filepath='kernel/sched/core.c' line='8560' column='1'/>
+      <function-decl name='set_task_boost' mangled-name='set_task_boost' filepath='kernel/sched/core.c' line='8633' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='set_task_boost'>
+        <parameter type-id='95e97e5e' name='boost' filepath='kernel/sched/core.c' line='8633' column='1'/>
+        <parameter type-id='91ce1af9' name='period' filepath='kernel/sched/core.c' line='8633' column='1'/>
         <return type-id='95e97e5e'/>
       </function-decl>
       <function-decl name='trace_print_flags_seq' mangled-name='trace_print_flags_seq' filepath='include/linux/trace_events.h' line='19' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='trace_print_flags_seq'>
@@ -67561,8 +67892,8 @@
       <class-decl name='rt6_info' is-struct='yes' visibility='default' is-declaration-only='yes' id='384b6d85'/>
       <class-decl name='rt6_statistics' size-in-bits='224' is-struct='yes' visibility='default' is-declaration-only='yes' id='aa112583'/>
       <class-decl name='sctp_mib' is-struct='yes' visibility='default' is-declaration-only='yes' id='bf394b70'/>
-      <class-decl name='seg6_pernet_data' is-struct='yes' visibility='default' is-declaration-only='yes' id='990cce78'/>
-      <class-decl name='tcp_congestion_ops' size-in-bits='1216' is-struct='yes' visibility='default' is-declaration-only='yes' id='54718f09'/>
+      <class-decl name='seg6_pernet_data' size-in-bits='320' is-struct='yes' visibility='default' is-declaration-only='yes' id='990cce78'/>
+      <class-decl name='tcp_congestion_ops' is-struct='yes' visibility='default' is-declaration-only='yes' id='54718f09'/>
       <class-decl name='tcp_fastopen_context' is-struct='yes' visibility='default' is-declaration-only='yes' id='f77d4717'/>
       <class-decl name='timer_rand_state' is-struct='yes' visibility='default' is-declaration-only='yes' id='f308a7ce'/>
       <class-decl name='trace_array' size-in-bits='2112' is-struct='yes' visibility='default' is-declaration-only='yes' id='e27b4e90'/>
@@ -67940,7 +68271,7 @@
           <var-decl name='blkcg_node' type-id='72f469ec' visibility='default' filepath='include/linux/backing-dev-defs.h' line='158' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5696'>
-          <var-decl name='' type-id='19140ae9' visibility='default' filepath='include/linux/backing-dev-defs.h' line='160' column='1'/>
+          <var-decl name='' type-id='19140ae8' visibility='default' filepath='include/linux/backing-dev-defs.h' line='160' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='backing_dev_info' size-in-bits='8512' is-struct='yes' visibility='default' filepath='include/linux/backing-dev-defs.h' line='167' column='1' id='c0badb3c'>
@@ -68145,242 +68476,242 @@
           <var-decl name='android_kabi_reserved2' type-id='91ce1af9' visibility='default' filepath='include/linux/workqueue.h' line='127' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup_subsys_state' size-in-bits='2176' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='121' column='1' id='7f3df443'>
+      <class-decl name='cgroup_subsys_state' size-in-bits='2176' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='127' column='1' id='7f3df443'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='cgroup' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='123' column='1'/>
+          <var-decl name='cgroup' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='129' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='ss' type-id='dc91d125' visibility='default' filepath='include/linux/cgroup-defs.h' line='126' column='1'/>
+          <var-decl name='ss' type-id='dc91d125' visibility='default' filepath='include/linux/cgroup-defs.h' line='132' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='refcnt' type-id='818799b4' visibility='default' filepath='include/linux/cgroup-defs.h' line='129' column='1'/>
+          <var-decl name='refcnt' type-id='818799b4' visibility='default' filepath='include/linux/cgroup-defs.h' line='135' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='sibling' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='132' column='1'/>
+          <var-decl name='sibling' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='138' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='704'>
-          <var-decl name='children' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='133' column='1'/>
+          <var-decl name='children' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='139' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='832'>
-          <var-decl name='rstat_css_node' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='136' column='1'/>
+          <var-decl name='rstat_css_node' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='142' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
-          <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='142' column='1'/>
+          <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='148' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='992'>
-          <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='144' column='1'/>
+          <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='150' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1024'>
-          <var-decl name='serial_nr' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='152' column='1'/>
+          <var-decl name='serial_nr' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='158' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1088'>
-          <var-decl name='online_cnt' type-id='49178f86' visibility='default' filepath='include/linux/cgroup-defs.h' line='158' column='1'/>
+          <var-decl name='online_cnt' type-id='49178f86' visibility='default' filepath='include/linux/cgroup-defs.h' line='164' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1152'>
-          <var-decl name='destroy_work' type-id='ef9025d0' visibility='default' filepath='include/linux/cgroup-defs.h' line='161' column='1'/>
+          <var-decl name='destroy_work' type-id='ef9025d0' visibility='default' filepath='include/linux/cgroup-defs.h' line='167' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1536'>
-          <var-decl name='destroy_rwork' type-id='7c0b9fdb' visibility='default' filepath='include/linux/cgroup-defs.h' line='162' column='1'/>
+          <var-decl name='destroy_rwork' type-id='7c0b9fdb' visibility='default' filepath='include/linux/cgroup-defs.h' line='168' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2112'>
-          <var-decl name='parent' type-id='cfff5953' visibility='default' filepath='include/linux/cgroup-defs.h' line='168' column='1'/>
+          <var-decl name='parent' type-id='cfff5953' visibility='default' filepath='include/linux/cgroup-defs.h' line='174' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup' size-in-bits='17856' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='339' column='1' id='ab9643dd'>
+      <class-decl name='cgroup' size-in-bits='17856' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='345' column='1' id='ab9643dd'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='self' type-id='7f3df443' visibility='default' filepath='include/linux/cgroup-defs.h' line='341' column='1'/>
+          <var-decl name='self' type-id='7f3df443' visibility='default' filepath='include/linux/cgroup-defs.h' line='347' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2176'>
-          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/cgroup-defs.h' line='343' column='1'/>
+          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/cgroup-defs.h' line='349' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2240'>
-          <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='353' column='1'/>
+          <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='359' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2272'>
-          <var-decl name='level' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='361' column='1'/>
+          <var-decl name='level' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='367' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2304'>
-          <var-decl name='max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='364' column='1'/>
+          <var-decl name='max_depth' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='370' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2336'>
-          <var-decl name='nr_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='377' column='1'/>
+          <var-decl name='nr_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='383' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2368'>
-          <var-decl name='nr_dying_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='378' column='1'/>
+          <var-decl name='nr_dying_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='384' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2400'>
-          <var-decl name='max_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='379' column='1'/>
+          <var-decl name='max_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='385' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2432'>
-          <var-decl name='nr_populated_csets' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='392' column='1'/>
+          <var-decl name='nr_populated_csets' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='398' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2464'>
-          <var-decl name='nr_populated_domain_children' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='393' column='1'/>
+          <var-decl name='nr_populated_domain_children' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='399' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2496'>
-          <var-decl name='nr_populated_threaded_children' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='394' column='1'/>
+          <var-decl name='nr_populated_threaded_children' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='400' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2528'>
-          <var-decl name='nr_threaded_children' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='396' column='1'/>
+          <var-decl name='nr_threaded_children' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='402' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2560'>
-          <var-decl name='kn' type-id='150efd3f' visibility='default' filepath='include/linux/cgroup-defs.h' line='398' column='1'/>
+          <var-decl name='kn' type-id='150efd3f' visibility='default' filepath='include/linux/cgroup-defs.h' line='404' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2624'>
-          <var-decl name='procs_file' type-id='37a4ee40' visibility='default' filepath='include/linux/cgroup-defs.h' line='399' column='1'/>
+          <var-decl name='procs_file' type-id='37a4ee40' visibility='default' filepath='include/linux/cgroup-defs.h' line='405' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3200'>
-          <var-decl name='events_file' type-id='37a4ee40' visibility='default' filepath='include/linux/cgroup-defs.h' line='400' column='1'/>
+          <var-decl name='events_file' type-id='37a4ee40' visibility='default' filepath='include/linux/cgroup-defs.h' line='406' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3776'>
-          <var-decl name='subtree_control' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='409' column='1'/>
+          <var-decl name='subtree_control' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='415' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3792'>
-          <var-decl name='subtree_ss_mask' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='410' column='1'/>
+          <var-decl name='subtree_ss_mask' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='416' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3808'>
-          <var-decl name='old_subtree_control' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='411' column='1'/>
+          <var-decl name='old_subtree_control' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='417' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3824'>
-          <var-decl name='old_subtree_ss_mask' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='412' column='1'/>
+          <var-decl name='old_subtree_ss_mask' type-id='1dc6a898' visibility='default' filepath='include/linux/cgroup-defs.h' line='418' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3840'>
-          <var-decl name='subsys' type-id='75781a60' visibility='default' filepath='include/linux/cgroup-defs.h' line='415' column='1'/>
+          <var-decl name='subsys' type-id='75781a60' visibility='default' filepath='include/linux/cgroup-defs.h' line='421' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='4288'>
-          <var-decl name='root' type-id='aede2cf0' visibility='default' filepath='include/linux/cgroup-defs.h' line='417' column='1'/>
+          <var-decl name='root' type-id='aede2cf0' visibility='default' filepath='include/linux/cgroup-defs.h' line='423' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='4352'>
-          <var-decl name='cset_links' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='423' column='1'/>
+          <var-decl name='cset_links' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='429' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='4480'>
-          <var-decl name='e_csets' type-id='a8e439b9' visibility='default' filepath='include/linux/cgroup-defs.h' line='432' column='1'/>
+          <var-decl name='e_csets' type-id='a8e439b9' visibility='default' filepath='include/linux/cgroup-defs.h' line='438' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5376'>
-          <var-decl name='dom_cgrp' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='441' column='1'/>
+          <var-decl name='dom_cgrp' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='447' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5440'>
-          <var-decl name='old_dom_cgrp' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='442' column='1'/>
+          <var-decl name='old_dom_cgrp' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='448' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5504'>
-          <var-decl name='rstat_cpu' type-id='d8e759a7' visibility='default' filepath='include/linux/cgroup-defs.h' line='445' column='1'/>
+          <var-decl name='rstat_cpu' type-id='d8e759a7' visibility='default' filepath='include/linux/cgroup-defs.h' line='451' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5568'>
-          <var-decl name='rstat_css_list' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='446' column='1'/>
+          <var-decl name='rstat_css_list' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='452' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5696'>
-          <var-decl name='pending_bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='449' column='1'/>
+          <var-decl name='pending_bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='455' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5888'>
-          <var-decl name='bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='450' column='1'/>
+          <var-decl name='bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='456' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='6080'>
-          <var-decl name='prev_cputime' type-id='9c7bf560' visibility='default' filepath='include/linux/cgroup-defs.h' line='451' column='1'/>
+          <var-decl name='prev_cputime' type-id='9c7bf560' visibility='default' filepath='include/linux/cgroup-defs.h' line='457' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='6272'>
-          <var-decl name='pidlists' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='457' column='1'/>
+          <var-decl name='pidlists' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='463' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='6400'>
-          <var-decl name='pidlist_mutex' type-id='925167dc' visibility='default' filepath='include/linux/cgroup-defs.h' line='458' column='1'/>
+          <var-decl name='pidlist_mutex' type-id='925167dc' visibility='default' filepath='include/linux/cgroup-defs.h' line='464' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='6656'>
-          <var-decl name='offline_waitq' type-id='b5ab048f' visibility='default' filepath='include/linux/cgroup-defs.h' line='461' column='1'/>
+          <var-decl name='offline_waitq' type-id='b5ab048f' visibility='default' filepath='include/linux/cgroup-defs.h' line='467' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='6848'>
-          <var-decl name='release_agent_work' type-id='ef9025d0' visibility='default' filepath='include/linux/cgroup-defs.h' line='464' column='1'/>
+          <var-decl name='release_agent_work' type-id='ef9025d0' visibility='default' filepath='include/linux/cgroup-defs.h' line='470' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='7232'>
-          <var-decl name='psi' type-id='12878ab3' visibility='default' filepath='include/linux/cgroup-defs.h' line='467' column='1'/>
+          <var-decl name='psi' type-id='12878ab3' visibility='default' filepath='include/linux/cgroup-defs.h' line='473' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='12672'>
-          <var-decl name='bpf' type-id='b80e3996' visibility='default' filepath='include/linux/cgroup-defs.h' line='470' column='1'/>
+          <var-decl name='bpf' type-id='b80e3996' visibility='default' filepath='include/linux/cgroup-defs.h' line='476' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='17472'>
-          <var-decl name='congestion_count' type-id='49178f86' visibility='default' filepath='include/linux/cgroup-defs.h' line='473' column='1'/>
+          <var-decl name='congestion_count' type-id='49178f86' visibility='default' filepath='include/linux/cgroup-defs.h' line='479' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='17504'>
-          <var-decl name='freezer' type-id='ad50988b' visibility='default' filepath='include/linux/cgroup-defs.h' line='476' column='1'/>
+          <var-decl name='freezer' type-id='ad50988b' visibility='default' filepath='include/linux/cgroup-defs.h' line='482' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='17664'>
-          <var-decl name='android_kabi_reserved1' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='478' column='1'/>
+          <var-decl name='android_kabi_reserved1' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='484' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='17728'>
-          <var-decl name='android_kabi_reserved2' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='479' column='1'/>
+          <var-decl name='android_kabi_reserved2' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='485' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='17792'>
-          <var-decl name='android_kabi_reserved3' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='480' column='1'/>
+          <var-decl name='android_kabi_reserved3' type-id='91ce1af9' visibility='default' filepath='include/linux/cgroup-defs.h' line='486' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='17856'>
-          <var-decl name='ancestor_ids' type-id='1fdc7fa6' visibility='default' filepath='include/linux/cgroup-defs.h' line='483' column='1'/>
+          <var-decl name='ancestor_ids' type-id='1fdc7fa6' visibility='default' filepath='include/linux/cgroup-defs.h' line='489' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup_file' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='107' column='1' id='37a4ee40'>
+      <class-decl name='cgroup_file' size-in-bits='576' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='113' column='1' id='37a4ee40'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='kn' type-id='150efd3f' visibility='default' filepath='include/linux/cgroup-defs.h' line='109' column='1'/>
+          <var-decl name='kn' type-id='150efd3f' visibility='default' filepath='include/linux/cgroup-defs.h' line='115' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='notified_at' type-id='7359adad' visibility='default' filepath='include/linux/cgroup-defs.h' line='110' column='1'/>
+          <var-decl name='notified_at' type-id='7359adad' visibility='default' filepath='include/linux/cgroup-defs.h' line='116' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='notify_timer' type-id='abe41e67' visibility='default' filepath='include/linux/cgroup-defs.h' line='111' column='1'/>
+          <var-decl name='notify_timer' type-id='abe41e67' visibility='default' filepath='include/linux/cgroup-defs.h' line='117' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup_root' size-in-bits='51712' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='491' column='1' id='66f1e832'>
+      <class-decl name='cgroup_root' size-in-bits='51712' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='497' column='1' id='66f1e832'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='kf_root' type-id='e18defdb' visibility='default' filepath='include/linux/cgroup-defs.h' line='492' column='1'/>
+          <var-decl name='kf_root' type-id='e18defdb' visibility='default' filepath='include/linux/cgroup-defs.h' line='498' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='subsys_mask' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='495' column='1'/>
+          <var-decl name='subsys_mask' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='501' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='96'>
-          <var-decl name='hierarchy_id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='498' column='1'/>
+          <var-decl name='hierarchy_id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='504' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='cgrp' type-id='ab9643dd' visibility='default' filepath='include/linux/cgroup-defs.h' line='501' column='1'/>
+          <var-decl name='cgrp' type-id='ab9643dd' visibility='default' filepath='include/linux/cgroup-defs.h' line='507' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='17984'>
-          <var-decl name='cgrp_ancestor_id_storage' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='504' column='1'/>
+          <var-decl name='cgrp_ancestor_id_storage' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='510' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='18016'>
-          <var-decl name='nr_cgrps' type-id='49178f86' visibility='default' filepath='include/linux/cgroup-defs.h' line='507' column='1'/>
+          <var-decl name='nr_cgrps' type-id='49178f86' visibility='default' filepath='include/linux/cgroup-defs.h' line='513' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='18048'>
-          <var-decl name='root_list' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='510' column='1'/>
+          <var-decl name='root_list' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='516' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='18176'>
-          <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='513' column='1'/>
+          <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='519' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='18240'>
-          <var-decl name='cgroup_idr' type-id='37ce495e' visibility='default' filepath='include/linux/cgroup-defs.h' line='516' column='1'/>
+          <var-decl name='cgroup_idr' type-id='37ce495e' visibility='default' filepath='include/linux/cgroup-defs.h' line='522' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='18432'>
-          <var-decl name='release_agent_path' type-id='d16c6df4' visibility='default' filepath='include/linux/cgroup-defs.h' line='519' column='1'/>
+          <var-decl name='release_agent_path' type-id='d16c6df4' visibility='default' filepath='include/linux/cgroup-defs.h' line='525' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='51200'>
-          <var-decl name='name' type-id='59daf3ef' visibility='default' filepath='include/linux/cgroup-defs.h' line='522' column='1'/>
+          <var-decl name='name' type-id='59daf3ef' visibility='default' filepath='include/linux/cgroup-defs.h' line='528' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup_rstat_cpu' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='291' column='1' id='a73d96cf'>
+      <class-decl name='cgroup_rstat_cpu' size-in-bits='512' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='297' column='1' id='a73d96cf'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='bsync' type-id='e4d85780' visibility='default' filepath='include/linux/cgroup-defs.h' line='296' column='1'/>
+          <var-decl name='bsync' type-id='e4d85780' visibility='default' filepath='include/linux/cgroup-defs.h' line='302' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='297' column='1'/>
+          <var-decl name='bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='303' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='last_bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='303' column='1'/>
+          <var-decl name='last_bstat' type-id='cfd8587e' visibility='default' filepath='include/linux/cgroup-defs.h' line='309' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='updated_children' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='316' column='1'/>
+          <var-decl name='updated_children' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='322' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='updated_next' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='317' column='1'/>
+          <var-decl name='updated_next' type-id='46ff135d' visibility='default' filepath='include/linux/cgroup-defs.h' line='323' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='u64_stats_sync' is-struct='yes' visibility='default' filepath='include/linux/u64_stats_sync.h' line='65' column='1' id='e4d85780'/>
-      <class-decl name='cgroup_base_stat' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='267' column='1' id='cfd8587e'>
+      <class-decl name='cgroup_base_stat' size-in-bits='192' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='273' column='1' id='cfd8587e'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='cputime' type-id='ad6873f4' visibility='default' filepath='include/linux/cgroup-defs.h' line='268' column='1'/>
+          <var-decl name='cputime' type-id='ad6873f4' visibility='default' filepath='include/linux/cgroup-defs.h' line='274' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='psi_group' size-in-bits='5440' is-struct='yes' visibility='default' filepath='include/linux/psi_types.h' line='128' column='1' id='12878ab3'>
@@ -68801,7 +69132,7 @@
           <var-decl name='dl_nr_running' type-id='7359adad' visibility='default' filepath='kernel/sched/sched.h' line='709' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='earliest_dl' type-id='657f91c9' visibility='default' filepath='kernel/sched/sched.h' line='721' column='1'/>
+          <var-decl name='earliest_dl' type-id='657f91ca' visibility='default' filepath='kernel/sched/sched.h' line='721' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='320'>
           <var-decl name='dl_nr_migratory' type-id='7359adad' visibility='default' filepath='kernel/sched/sched.h' line='723' column='1'/>
@@ -68825,7 +69156,7 @@
           <var-decl name='bw_ratio' type-id='91ce1af9' visibility='default' filepath='kernel/sched/sched.h' line='758' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/sched/sched.h' line='718' column='1' id='657f91c9'>
+      <class-decl name='__anonymous_struct__2' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='kernel/sched/sched.h' line='718' column='1' id='657f91ca'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='curr' type-id='91ce1af9' visibility='default' filepath='kernel/sched/sched.h' line='719' column='1'/>
         </data-member>
@@ -68833,7 +69164,7 @@
           <var-decl name='next' type-id='91ce1af9' visibility='default' filepath='kernel/sched/sched.h' line='720' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__3' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='667f9358'>
+      <class-decl name='__anonymous_struct__3' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='667f9359'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='mmap' type-id='2ae08426' visibility='default' filepath='include/linux/mm_types.h' line='360' column='1'/>
         </data-member>
@@ -69117,10 +69448,10 @@
           <var-decl name='nr_extents' type-id='19c2251e' visibility='default' filepath='include/linux/user_namespace.h' line='25' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='' type-id='f9cbf5f3' visibility='default' filepath='include/linux/user_namespace.h' line='26' column='1'/>
+          <var-decl name='' type-id='f9cbf5f2' visibility='default' filepath='include/linux/user_namespace.h' line='26' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/linux/user_namespace.h' line='26' column='1' id='f9cbf5f3'>
+      <union-decl name='__anonymous_union__2' size-in-bits='512' is-anonymous='yes' visibility='default' filepath='include/linux/user_namespace.h' line='26' column='1' id='f9cbf5f2'>
         <data-member access='private'>
           <var-decl name='extent' type-id='df6d2206' visibility='default' filepath='include/linux/user_namespace.h' line='27' column='1'/>
         </data-member>
@@ -69165,7 +69496,7 @@
       </class-decl>
       <class-decl name='ctl_table_header' size-in-bits='640' is-struct='yes' visibility='default' filepath='include/linux/sysctl.h' line='140' column='1' id='ed51618b'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='f8cbf45d' visibility='default' filepath='include/linux/sysctl.h' line='142' column='1'/>
+          <var-decl name='' type-id='f8cbf45c' visibility='default' filepath='include/linux/sysctl.h' line='142' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
           <var-decl name='unregistering' type-id='389faaf7' visibility='default' filepath='include/linux/sysctl.h' line='151' column='1'/>
@@ -69189,7 +69520,7 @@
           <var-decl name='inodes' type-id='e151255a' visibility='default' filepath='include/linux/sysctl.h' line='157' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/sysctl.h' line='142' column='1' id='f8cbf45d'>
+      <union-decl name='__anonymous_union__3' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/sysctl.h' line='142' column='1' id='f8cbf45c'>
         <data-member access='private'>
           <var-decl name='' type-id='6c7f9cc9' visibility='default' filepath='include/linux/sysctl.h' line='143' column='1'/>
         </data-member>
@@ -69296,7 +69627,7 @@
       </class-decl>
       <class-decl name='pt_regs' size-in-bits='2560' is-struct='yes' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='148' column='1' id='0d029111'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='f2cbeae6' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='149' column='1'/>
+          <var-decl name='' type-id='f2cbeae7' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='149' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2176'>
           <var-decl name='orig_x0' type-id='91ce1af9' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='158' column='1'/>
@@ -69317,7 +69648,7 @@
           <var-decl name='stackframe' type-id='24a375b2' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='169' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='2176' is-anonymous='yes' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='149' column='1' id='f2cbeae6'>
+      <union-decl name='__anonymous_union__5' size-in-bits='2176' is-anonymous='yes' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='149' column='1' id='f2cbeae7'>
         <data-member access='private'>
           <var-decl name='user_regs' type-id='cedec667' visibility='default' filepath='arch/arm64/include/asm/ptrace.h' line='150' column='1'/>
         </data-member>
@@ -69669,7 +70000,7 @@
           <var-decl name='name' type-id='26a90f95' visibility='default' filepath='include/linux/sched/topology.h' line='140' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2240'>
-          <var-decl name='' type-id='f5cbefa2' visibility='default' filepath='include/linux/sched/topology.h' line='142' column='1'/>
+          <var-decl name='' type-id='f5cbefa1' visibility='default' filepath='include/linux/sched/topology.h' line='142' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2368'>
           <var-decl name='shared' type-id='774b23cf' visibility='default' filepath='include/linux/sched/topology.h' line='146' column='1'/>
@@ -69733,7 +70064,7 @@
           <var-decl name='cpumask' type-id='c99b5ecd' visibility='default' filepath='kernel/sched/sched.h' line='1527' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__6' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/sched/topology.h' line='142' column='1' id='f5cbefa2'>
+      <union-decl name='__anonymous_union__6' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/sched/topology.h' line='142' column='1' id='f5cbefa1'>
         <data-member access='private'>
           <var-decl name='private' type-id='eaa32e2f' visibility='default' filepath='include/linux/sched/topology.h' line='143' column='1'/>
         </data-member>
@@ -69914,7 +70245,7 @@
       </class-decl>
       <class-decl name='pin_cookie' is-struct='yes' visibility='default' filepath='include/linux/lockdep.h' line='453' column='1' id='3cb90f9b'/>
       <class-decl name='cfs_bandwidth' is-struct='yes' visibility='default' filepath='kernel/sched/sched.h' line='400' column='1' id='68e4a3af'/>
-      <union-decl name='__anonymous_union__7' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/restart_block.h' line='27' column='1' id='f4cbee0a'>
+      <union-decl name='__anonymous_union__7' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/restart_block.h' line='27' column='1' id='f4cbee0c'>
         <data-member access='private'>
           <var-decl name='futex' type-id='c1d98853' visibility='default' filepath='include/linux/restart_block.h' line='36' column='1'/>
         </data-member>
@@ -70672,7 +71003,7 @@
           <var-decl name='node' type-id='f68e0adc' visibility='default' filepath='include/net/inet_frag.h' line='72' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='key' type-id='ffcbff5b' visibility='default' filepath='include/net/inet_frag.h' line='76' column='1'/>
+          <var-decl name='key' type-id='ffcbff5d' visibility='default' filepath='include/net/inet_frag.h' line='76' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
           <var-decl name='timer' type-id='abe41e67' visibility='default' filepath='include/net/inet_frag.h' line='77' column='1'/>
@@ -70722,7 +71053,7 @@
           <var-decl name='next' type-id='3cc8739a' visibility='default' filepath='include/linux/rhashtable-types.h' line='18' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__8' size-in-bits='352' is-anonymous='yes' visibility='default' filepath='include/net/inet_frag.h' line='73' column='1' id='ffcbff5b'>
+      <union-decl name='__anonymous_union__8' size-in-bits='352' is-anonymous='yes' visibility='default' filepath='include/net/inet_frag.h' line='73' column='1' id='ffcbff5d'>
         <data-member access='private'>
           <var-decl name='v4' type-id='c3a8bbbc' visibility='default' filepath='include/net/inet_frag.h' line='74' column='1'/>
         </data-member>
@@ -71693,21 +72024,21 @@
           <var-decl name='rbits6' type-id='f9b06939' visibility='default' filepath='include/net/netns/xfrm.h' line='28' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup_namespace' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/linux/cgroup.h' line='859' column='1' id='e54806c6'>
+      <class-decl name='cgroup_namespace' size-in-bits='448' is-struct='yes' visibility='default' filepath='include/linux/cgroup.h' line='850' column='1' id='e54806c6'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='count' type-id='64615833' visibility='default' filepath='include/linux/cgroup.h' line='860' column='1'/>
+          <var-decl name='count' type-id='64615833' visibility='default' filepath='include/linux/cgroup.h' line='851' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='ns' type-id='99f367f2' visibility='default' filepath='include/linux/cgroup.h' line='861' column='1'/>
+          <var-decl name='ns' type-id='99f367f2' visibility='default' filepath='include/linux/cgroup.h' line='852' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='user_ns' type-id='c0ced321' visibility='default' filepath='include/linux/cgroup.h' line='862' column='1'/>
+          <var-decl name='user_ns' type-id='c0ced321' visibility='default' filepath='include/linux/cgroup.h' line='853' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='320'>
-          <var-decl name='ucounts' type-id='b1d4934a' visibility='default' filepath='include/linux/cgroup.h' line='863' column='1'/>
+          <var-decl name='ucounts' type-id='b1d4934a' visibility='default' filepath='include/linux/cgroup.h' line='854' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='root_cset' type-id='85d57723' visibility='default' filepath='include/linux/cgroup.h' line='864' column='1'/>
+          <var-decl name='root_cset' type-id='85d57723' visibility='default' filepath='include/linux/cgroup.h' line='855' column='1'/>
         </data-member>
       </class-decl>
       <class-decl name='bio_list' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/bio.h' line='623' column='1' id='096280bf'>
@@ -71783,7 +72114,7 @@
           <var-decl name='bi_skip_dm_default_key' type-id='b50a4934' visibility='default' filepath='include/linux/blk_types.h' line='191' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1032'>
-          <var-decl name='' type-id='970c827f' visibility='default' filepath='include/linux/blk_types.h' line='195' column='1'/>
+          <var-decl name='' type-id='970c827e' visibility='default' filepath='include/linux/blk_types.h' line='195' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1040'>
           <var-decl name='bi_vcnt' type-id='8efea9e5' visibility='default' filepath='include/linux/blk_types.h' line='201' column='1'/>
@@ -72359,10 +72690,10 @@
           <var-decl name='queuelist' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='169' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='' type-id='fecbfdc7' visibility='default' filepath='include/linux/blkdev.h' line='178' column='1'/>
+          <var-decl name='' type-id='fecbfdc8' visibility='default' filepath='include/linux/blkdev.h' line='178' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='768'>
-          <var-decl name='' type-id='9f0c8f18' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1'/>
+          <var-decl name='' type-id='9f0c8f19' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
           <var-decl name='' type-id='a20c93d1' visibility='default' filepath='include/linux/blkdev.h' line='201' column='1'/>
@@ -72410,7 +72741,7 @@
           <var-decl name='timeout_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='253' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1920'>
-          <var-decl name='' type-id='9d0c8bf1' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1'/>
+          <var-decl name='' type-id='9d0c8bf2' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='2176'>
           <var-decl name='end_io' type-id='5afdaa66' visibility='default' filepath='include/linux/blkdev.h' line='263' column='1'/>
@@ -73166,7 +73497,7 @@
           <var-decl name='icq_cache' type-id='f3b4aca8' visibility='default' filepath='include/linux/elevator.h' line='145' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='ops' type-id='9e0c8d84' visibility='default' filepath='include/linux/elevator.h' line='151' column='1'/>
+          <var-decl name='ops' type-id='9e0c8d83' visibility='default' filepath='include/linux/elevator.h' line='151' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1856'>
           <var-decl name='icq_size' type-id='b59d7dce' visibility='default' filepath='include/linux/elevator.h' line='152' column='1'/>
@@ -74347,16 +74678,16 @@
           <var-decl name='__reserved_1' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='375' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='' type-id='1113fe51' visibility='default' filepath='include/uapi/linux/perf_event.h' line='377' column='1'/>
+          <var-decl name='' type-id='1113fe52' visibility='default' filepath='include/uapi/linux/perf_event.h' line='377' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='416'>
           <var-decl name='bp_type' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/perf_event.h' line='382' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='' type-id='1013fcbe' visibility='default' filepath='include/uapi/linux/perf_event.h' line='383' column='1'/>
+          <var-decl name='' type-id='1013fcbf' visibility='default' filepath='include/uapi/linux/perf_event.h' line='383' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='' type-id='13140177' visibility='default' filepath='include/uapi/linux/perf_event.h' line='389' column='1'/>
+          <var-decl name='' type-id='13140178' visibility='default' filepath='include/uapi/linux/perf_event.h' line='389' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
           <var-decl name='branch_sample_type' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='395' column='1'/>
@@ -74391,7 +74722,7 @@
           <var-decl name='sample_freq' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='329' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__20' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='377' column='1' id='1113fe51'>
+      <union-decl name='__anonymous_union__20' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='377' column='1' id='1113fe52'>
         <data-member access='private'>
           <var-decl name='wakeup_events' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/perf_event.h' line='378' column='1'/>
         </data-member>
@@ -74399,7 +74730,7 @@
           <var-decl name='wakeup_watermark' type-id='3f1a6b60' visibility='default' filepath='include/uapi/linux/perf_event.h' line='379' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__21' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='383' column='1' id='1013fcbe'>
+      <union-decl name='__anonymous_union__21' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='383' column='1' id='1013fcbf'>
         <data-member access='private'>
           <var-decl name='bp_addr' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='384' column='1'/>
         </data-member>
@@ -74413,7 +74744,7 @@
           <var-decl name='config1' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='387' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__22' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='389' column='1' id='13140177'>
+      <union-decl name='__anonymous_union__22' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/uapi/linux/perf_event.h' line='389' column='1' id='13140178'>
         <data-member access='private'>
           <var-decl name='bp_len' type-id='d3130597' visibility='default' filepath='include/uapi/linux/perf_event.h' line='390' column='1'/>
         </data-member>
@@ -74429,7 +74760,7 @@
       </union-decl>
       <class-decl name='hw_perf_event' size-in-bits='1536' is-struct='yes' visibility='default' filepath='include/linux/perf_event.h' line='121' column='1' id='b594b0c9'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='1213ffe3' visibility='default' filepath='include/linux/perf_event.h' line='123' column='1'/>
+          <var-decl name='' type-id='1213ffe4' visibility='default' filepath='include/linux/perf_event.h' line='123' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='768'>
           <var-decl name='target' type-id='f23e2572' visibility='default' filepath='include/linux/perf_event.h' line='171' column='1'/>
@@ -74634,7 +74965,7 @@
       </class-decl>
       <class-decl name='perf_raw_frag' size-in-bits='224' is-struct='yes' visibility='default' filepath='include/linux/perf_event.h' line='77' column='1' id='a5007ad0'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='0d13f804' visibility='default' filepath='include/linux/perf_event.h' line='78' column='1'/>
+          <var-decl name='' type-id='0d13f805' visibility='default' filepath='include/linux/perf_event.h' line='78' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
           <var-decl name='copy' type-id='b468b440' visibility='default' filepath='include/linux/perf_event.h' line='82' column='1'/>
@@ -74646,7 +74977,7 @@
           <var-decl name='size' type-id='19c2251e' visibility='default' filepath='include/linux/perf_event.h' line='84' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__24' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/perf_event.h' line='78' column='1' id='0d13f804'>
+      <union-decl name='__anonymous_union__24' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/perf_event.h' line='78' column='1' id='0d13f805'>
         <data-member access='private'>
           <var-decl name='next' type-id='2aa2e156' visibility='default' filepath='include/linux/perf_event.h' line='79' column='1'/>
         </data-member>
@@ -75021,178 +75352,178 @@
           <var-decl name='inactive' type-id='380c7edc' visibility='default' filepath='include/linux/bpf-cgroup.h' line='64' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup_freezer_state' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='320' column='1' id='ad50988b'>
+      <class-decl name='cgroup_freezer_state' size-in-bits='128' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='326' column='1' id='ad50988b'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='freeze' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='322' column='1'/>
+          <var-decl name='freeze' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='328' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='32'>
-          <var-decl name='e_freeze' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='325' column='1'/>
+          <var-decl name='e_freeze' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='331' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='nr_frozen_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='330' column='1'/>
+          <var-decl name='nr_frozen_descendants' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='336' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='96'>
-          <var-decl name='nr_frozen_tasks' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='336' column='1'/>
+          <var-decl name='nr_frozen_tasks' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='342' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cgroup_subsys' size-in-bits='1920' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='621' column='1' id='1d115fd5'>
+      <class-decl name='cgroup_subsys' size-in-bits='1920' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='627' column='1' id='1d115fd5'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='css_alloc' type-id='a87691ee' visibility='default' filepath='include/linux/cgroup-defs.h' line='622' column='1'/>
+          <var-decl name='css_alloc' type-id='a87691ee' visibility='default' filepath='include/linux/cgroup-defs.h' line='628' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='css_online' type-id='8bdbbb63' visibility='default' filepath='include/linux/cgroup-defs.h' line='623' column='1'/>
+          <var-decl name='css_online' type-id='8bdbbb63' visibility='default' filepath='include/linux/cgroup-defs.h' line='629' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='css_offline' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='624' column='1'/>
+          <var-decl name='css_offline' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='630' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='css_released' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='625' column='1'/>
+          <var-decl name='css_released' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='631' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='css_free' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='626' column='1'/>
+          <var-decl name='css_free' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='632' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='320'>
-          <var-decl name='css_reset' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='627' column='1'/>
+          <var-decl name='css_reset' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='633' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='css_rstat_flush' type-id='fe17c379' visibility='default' filepath='include/linux/cgroup-defs.h' line='628' column='1'/>
+          <var-decl name='css_rstat_flush' type-id='fe17c379' visibility='default' filepath='include/linux/cgroup-defs.h' line='634' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='css_extra_stat_show' type-id='f22a42d7' visibility='default' filepath='include/linux/cgroup-defs.h' line='629' column='1'/>
+          <var-decl name='css_extra_stat_show' type-id='f22a42d7' visibility='default' filepath='include/linux/cgroup-defs.h' line='635' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='can_attach' type-id='354bcec3' visibility='default' filepath='include/linux/cgroup-defs.h' line='632' column='1'/>
+          <var-decl name='can_attach' type-id='354bcec3' visibility='default' filepath='include/linux/cgroup-defs.h' line='638' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='cancel_attach' type-id='6484073c' visibility='default' filepath='include/linux/cgroup-defs.h' line='633' column='1'/>
+          <var-decl name='cancel_attach' type-id='6484073c' visibility='default' filepath='include/linux/cgroup-defs.h' line='639' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='attach' type-id='6484073c' visibility='default' filepath='include/linux/cgroup-defs.h' line='634' column='1'/>
+          <var-decl name='attach' type-id='6484073c' visibility='default' filepath='include/linux/cgroup-defs.h' line='640' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='704'>
-          <var-decl name='post_attach' type-id='953b12f8' visibility='default' filepath='include/linux/cgroup-defs.h' line='635' column='1'/>
+          <var-decl name='post_attach' type-id='953b12f8' visibility='default' filepath='include/linux/cgroup-defs.h' line='641' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='768'>
-          <var-decl name='can_fork' type-id='2c2624ea' visibility='default' filepath='include/linux/cgroup-defs.h' line='636' column='1'/>
+          <var-decl name='can_fork' type-id='2c2624ea' visibility='default' filepath='include/linux/cgroup-defs.h' line='642' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='832'>
-          <var-decl name='cancel_fork' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='637' column='1'/>
+          <var-decl name='cancel_fork' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='643' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='896'>
-          <var-decl name='fork' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='638' column='1'/>
+          <var-decl name='fork' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='644' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
-          <var-decl name='exit' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='639' column='1'/>
+          <var-decl name='exit' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='645' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1024'>
-          <var-decl name='release' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='640' column='1'/>
+          <var-decl name='release' type-id='1c9e19fb' visibility='default' filepath='include/linux/cgroup-defs.h' line='646' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1088'>
-          <var-decl name='bind' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='641' column='1'/>
+          <var-decl name='bind' type-id='f65daff2' visibility='default' filepath='include/linux/cgroup-defs.h' line='647' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='7'>
-          <var-decl name='early_init' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='643' column='1'/>
+          <var-decl name='early_init' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='649' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='6'>
-          <var-decl name='implicit_on_dfl' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='656' column='1'/>
+          <var-decl name='implicit_on_dfl' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='662' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5'>
-          <var-decl name='threaded' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='668' column='1'/>
+          <var-decl name='threaded' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='674' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='4'>
-          <var-decl name='broken_hierarchy' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='682' column='1'/>
+          <var-decl name='broken_hierarchy' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='688' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='3'>
-          <var-decl name='warned_broken_hierarchy' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='683' column='1'/>
+          <var-decl name='warned_broken_hierarchy' type-id='b50a4934' visibility='default' filepath='include/linux/cgroup-defs.h' line='689' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1184'>
-          <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='686' column='1'/>
+          <var-decl name='id' type-id='95e97e5e' visibility='default' filepath='include/linux/cgroup-defs.h' line='692' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1216'>
-          <var-decl name='name' type-id='80f4b756' visibility='default' filepath='include/linux/cgroup-defs.h' line='687' column='1'/>
+          <var-decl name='name' type-id='80f4b756' visibility='default' filepath='include/linux/cgroup-defs.h' line='693' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1280'>
-          <var-decl name='legacy_name' type-id='80f4b756' visibility='default' filepath='include/linux/cgroup-defs.h' line='690' column='1'/>
+          <var-decl name='legacy_name' type-id='80f4b756' visibility='default' filepath='include/linux/cgroup-defs.h' line='696' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1344'>
-          <var-decl name='root' type-id='aede2cf0' visibility='default' filepath='include/linux/cgroup-defs.h' line='693' column='1'/>
+          <var-decl name='root' type-id='aede2cf0' visibility='default' filepath='include/linux/cgroup-defs.h' line='699' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1408'>
-          <var-decl name='css_idr' type-id='37ce495e' visibility='default' filepath='include/linux/cgroup-defs.h' line='696' column='1'/>
+          <var-decl name='css_idr' type-id='37ce495e' visibility='default' filepath='include/linux/cgroup-defs.h' line='702' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1600'>
-          <var-decl name='cfts' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='702' column='1'/>
+          <var-decl name='cfts' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='708' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1728'>
-          <var-decl name='dfl_cftypes' type-id='03054cfa' visibility='default' filepath='include/linux/cgroup-defs.h' line='708' column='1'/>
+          <var-decl name='dfl_cftypes' type-id='03054cfa' visibility='default' filepath='include/linux/cgroup-defs.h' line='714' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1792'>
-          <var-decl name='legacy_cftypes' type-id='03054cfa' visibility='default' filepath='include/linux/cgroup-defs.h' line='709' column='1'/>
+          <var-decl name='legacy_cftypes' type-id='03054cfa' visibility='default' filepath='include/linux/cgroup-defs.h' line='715' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1856'>
-          <var-decl name='depends_on' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='718' column='1'/>
+          <var-decl name='depends_on' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='724' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='cftype' size-in-bits='1728' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='532' column='1' id='ea2ebeac'>
+      <class-decl name='cftype' size-in-bits='1728' is-struct='yes' visibility='default' filepath='include/linux/cgroup-defs.h' line='538' column='1' id='ea2ebeac'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='name' type-id='59daf3ef' visibility='default' filepath='include/linux/cgroup-defs.h' line='538' column='1'/>
+          <var-decl name='name' type-id='59daf3ef' visibility='default' filepath='include/linux/cgroup-defs.h' line='544' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='private' type-id='7359adad' visibility='default' filepath='include/linux/cgroup-defs.h' line='539' column='1'/>
+          <var-decl name='private' type-id='7359adad' visibility='default' filepath='include/linux/cgroup-defs.h' line='545' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='max_write_len' type-id='b59d7dce' visibility='default' filepath='include/linux/cgroup-defs.h' line='545' column='1'/>
+          <var-decl name='max_write_len' type-id='b59d7dce' visibility='default' filepath='include/linux/cgroup-defs.h' line='551' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='548' column='1'/>
+          <var-decl name='flags' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='554' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='672'>
-          <var-decl name='file_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='556' column='1'/>
+          <var-decl name='file_offset' type-id='f0981eeb' visibility='default' filepath='include/linux/cgroup-defs.h' line='562' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='704'>
-          <var-decl name='ss' type-id='dc91d125' visibility='default' filepath='include/linux/cgroup-defs.h' line='562' column='1'/>
+          <var-decl name='ss' type-id='dc91d125' visibility='default' filepath='include/linux/cgroup-defs.h' line='568' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='768'>
-          <var-decl name='node' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='563' column='1'/>
+          <var-decl name='node' type-id='72f469ec' visibility='default' filepath='include/linux/cgroup-defs.h' line='569' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='896'>
-          <var-decl name='kf_ops' type-id='1f2a8949' visibility='default' filepath='include/linux/cgroup-defs.h' line='564' column='1'/>
+          <var-decl name='kf_ops' type-id='1f2a8949' visibility='default' filepath='include/linux/cgroup-defs.h' line='570' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
-          <var-decl name='open' type-id='964d2eb6' visibility='default' filepath='include/linux/cgroup-defs.h' line='566' column='1'/>
+          <var-decl name='open' type-id='964d2eb6' visibility='default' filepath='include/linux/cgroup-defs.h' line='572' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1024'>
-          <var-decl name='release' type-id='f1825e09' visibility='default' filepath='include/linux/cgroup-defs.h' line='567' column='1'/>
+          <var-decl name='release' type-id='f1825e09' visibility='default' filepath='include/linux/cgroup-defs.h' line='573' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1088'>
-          <var-decl name='read_u64' type-id='ad13fd93' visibility='default' filepath='include/linux/cgroup-defs.h' line='573' column='1'/>
+          <var-decl name='read_u64' type-id='ad13fd93' visibility='default' filepath='include/linux/cgroup-defs.h' line='579' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1152'>
-          <var-decl name='read_s64' type-id='ae18a37d' visibility='default' filepath='include/linux/cgroup-defs.h' line='577' column='1'/>
+          <var-decl name='read_s64' type-id='ae18a37d' visibility='default' filepath='include/linux/cgroup-defs.h' line='583' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1216'>
-          <var-decl name='seq_show' type-id='0131eb61' visibility='default' filepath='include/linux/cgroup-defs.h' line='580' column='1'/>
+          <var-decl name='seq_show' type-id='0131eb61' visibility='default' filepath='include/linux/cgroup-defs.h' line='586' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1280'>
-          <var-decl name='seq_start' type-id='a46b05a0' visibility='default' filepath='include/linux/cgroup-defs.h' line='583' column='1'/>
+          <var-decl name='seq_start' type-id='a46b05a0' visibility='default' filepath='include/linux/cgroup-defs.h' line='589' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1344'>
-          <var-decl name='seq_next' type-id='b6ba26fa' visibility='default' filepath='include/linux/cgroup-defs.h' line='584' column='1'/>
+          <var-decl name='seq_next' type-id='b6ba26fa' visibility='default' filepath='include/linux/cgroup-defs.h' line='590' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1408'>
-          <var-decl name='seq_stop' type-id='6ba28d1c' visibility='default' filepath='include/linux/cgroup-defs.h' line='585' column='1'/>
+          <var-decl name='seq_stop' type-id='6ba28d1c' visibility='default' filepath='include/linux/cgroup-defs.h' line='591' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1472'>
-          <var-decl name='write_u64' type-id='3e9fac96' visibility='default' filepath='include/linux/cgroup-defs.h' line='592' column='1'/>
+          <var-decl name='write_u64' type-id='3e9fac96' visibility='default' filepath='include/linux/cgroup-defs.h' line='598' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1536'>
-          <var-decl name='write_s64' type-id='2b0348f0' visibility='default' filepath='include/linux/cgroup-defs.h' line='597' column='1'/>
+          <var-decl name='write_s64' type-id='2b0348f0' visibility='default' filepath='include/linux/cgroup-defs.h' line='603' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1600'>
-          <var-decl name='write' type-id='17b1add7' visibility='default' filepath='include/linux/cgroup-defs.h' line='606' column='1'/>
+          <var-decl name='write' type-id='17b1add7' visibility='default' filepath='include/linux/cgroup-defs.h' line='612' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1664'>
-          <var-decl name='poll' type-id='b347e5ac' visibility='default' filepath='include/linux/cgroup-defs.h' line='609' column='1'/>
+          <var-decl name='poll' type-id='b347e5ac' visibility='default' filepath='include/linux/cgroup-defs.h' line='615' column='1'/>
         </data-member>
       </class-decl>
       <typedef-decl name='poll_queue_proc' type-id='4aecccbd' filepath='include/linux/poll.h' line='37' column='1' id='650104ba'/>
@@ -76210,7 +76541,7 @@
         <parameter type-id='eaa32e2f'/>
         <return type-id='eaa32e2f'/>
       </function-type>
-      <union-decl name='__anonymous_union__16' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1' id='9d0c8bf1'>
+      <union-decl name='__anonymous_union__16' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='255' column='1' id='9d0c8bf2'>
         <data-member access='private'>
           <var-decl name='csd' type-id='bb75ea85' visibility='default' filepath='include/linux/blkdev.h' line='256' column='1'/>
         </data-member>
@@ -76226,7 +76557,7 @@
           <var-decl name='tp' type-id='08e531de' visibility='default' filepath='include/linux/trace_events.h' line='259' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__17' size-in-bits='1792' is-anonymous='yes' visibility='default' filepath='include/linux/elevator.h' line='148' column='1' id='9e0c8d84'>
+      <union-decl name='__anonymous_union__17' size-in-bits='1792' is-anonymous='yes' visibility='default' filepath='include/linux/elevator.h' line='148' column='1' id='9e0c8d83'>
         <data-member access='private'>
           <var-decl name='sq' type-id='248921ec' visibility='default' filepath='include/linux/elevator.h' line='149' column='1'/>
         </data-member>
@@ -76234,7 +76565,7 @@
           <var-decl name='mq' type-id='386fe521' visibility='default' filepath='include/linux/elevator.h' line='150' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__9' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='178' column='1' id='fecbfdc7'>
+      <union-decl name='__anonymous_union__9' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='178' column='1' id='fecbfdc8'>
         <data-member access='private'>
           <var-decl name='hash' type-id='03a4a074' visibility='default' filepath='include/linux/blkdev.h' line='179' column='1'/>
         </data-member>
@@ -76242,7 +76573,7 @@
           <var-decl name='ipi_list' type-id='72f469ec' visibility='default' filepath='include/linux/blkdev.h' line='180' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__10' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1' id='9f0c8f18'>
+      <union-decl name='__anonymous_union__10' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1' id='9f0c8f19'>
         <data-member access='private'>
           <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='189' column='1'/>
         </data-member>
@@ -76264,7 +76595,7 @@
           <var-decl name='flush' type-id='c8d99358' visibility='default' filepath='include/linux/blkdev.h' line='211' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__23' size-in-bits='768' is-anonymous='yes' visibility='default' filepath='include/linux/perf_event.h' line='123' column='1' id='1213ffe3'>
+      <union-decl name='__anonymous_union__23' size-in-bits='768' is-anonymous='yes' visibility='default' filepath='include/linux/perf_event.h' line='123' column='1' id='1213ffe4'>
         <member-type access='private'>
           <class-decl name='__anonymous_struct__' size-in-bits='576' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/perf_event.h' line='137' column='1' id='e225be82'>
             <data-member access='public' layout-offset-in-bits='0'>
@@ -76322,7 +76653,7 @@
           <var-decl name='' type-id='cdd99b38' visibility='default' filepath='include/linux/perf_event.h' line='124' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__28' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/backing-dev-defs.h' line='160' column='1' id='19140ae9'>
+      <union-decl name='__anonymous_union__28' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/backing-dev-defs.h' line='160' column='1' id='19140ae8'>
         <data-member access='private'>
           <var-decl name='release_work' type-id='ef9025d0' visibility='default' filepath='include/linux/backing-dev-defs.h' line='161' column='1'/>
         </data-member>
@@ -76330,7 +76661,7 @@
           <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/linux/backing-dev-defs.h' line='162' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__18' is-anonymous='yes' visibility='default' filepath='include/linux/blk_types.h' line='195' column='1' id='970c827f'/>
+      <union-decl name='__anonymous_union__18' is-anonymous='yes' visibility='default' filepath='include/linux/blk_types.h' line='195' column='1' id='970c827e'/>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='kernel/sched/wait.c' language='LANG_C89'>
       <pointer-type-def type-id='fe794aa9' size-in-bits='64' id='ba9aa326'/>
@@ -76387,10 +76718,10 @@
         <parameter type-id='1eb56b1e'/>
         <return type-id='3a47d82b'/>
       </function-decl>
-      <function-decl name='sigprocmask' mangled-name='sigprocmask' filepath='kernel/signal.c' line='2797' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sigprocmask'>
-        <parameter type-id='95e97e5e' name='how' filepath='kernel/signal.c' line='2797' column='1'/>
-        <parameter type-id='9e80f729' name='set' filepath='kernel/signal.c' line='2797' column='1'/>
-        <parameter type-id='9e80f729' name='oldset' filepath='kernel/signal.c' line='2797' column='1'/>
+      <function-decl name='sigprocmask' mangled-name='sigprocmask' filepath='kernel/signal.c' line='2858' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='sigprocmask'>
+        <parameter type-id='95e97e5e' name='how' filepath='kernel/signal.c' line='2858' column='1'/>
+        <parameter type-id='9e80f729' name='set' filepath='kernel/signal.c' line='2858' column='1'/>
+        <parameter type-id='9e80f729' name='oldset' filepath='kernel/signal.c' line='2858' column='1'/>
         <return type-id='95e97e5e'/>
       </function-decl>
     </abi-instr>
@@ -77051,7 +77382,18 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='kernel/trace/bpf_trace.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f6cbf13c'>
+      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='665' column='1' id='ac5ab5b5'>
+        <data-member access='private'>
+          <var-decl name='' type-id='687f967b' visibility='default' filepath='include/linux/skbuff.h' line='666' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='rbnode' type-id='2a8a6332' visibility='default' filepath='include/linux/skbuff.h' line='680' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/skbuff.h' line='681' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f6cbf13b'>
         <data-member access='private'>
           <var-decl name='sk' type-id='f772df6d' visibility='default' filepath='include/linux/skbuff.h' line='685' column='1'/>
         </data-member>
@@ -77357,7 +77699,7 @@
       </class-decl>
       <class-decl name='worker' size-in-bits='1152' is-struct='yes' visibility='default' filepath='kernel/workqueue_internal.h' line='24' column='1' id='146df21f'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='ac5ab5b4' visibility='default' filepath='kernel/workqueue_internal.h' line='26' column='1'/>
+          <var-decl name='' type-id='ac5ab5b6' visibility='default' filepath='kernel/workqueue_internal.h' line='26' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
           <var-decl name='current_work' type-id='83c1bde6' visibility='default' filepath='kernel/workqueue_internal.h' line='31' column='1'/>
@@ -77399,7 +77741,7 @@
           <var-decl name='last_func' type-id='72666d3f' visibility='default' filepath='kernel/workqueue_internal.h' line='58' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='kernel/workqueue_internal.h' line='26' column='1' id='ac5ab5b4'>
+      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='kernel/workqueue_internal.h' line='26' column='1' id='ac5ab5b6'>
         <data-member access='private'>
           <var-decl name='entry' type-id='72f469ec' visibility='default' filepath='kernel/workqueue_internal.h' line='27' column='1'/>
         </data-member>
@@ -78109,7 +78451,7 @@
           <var-decl name='node' type-id='8da21f13' visibility='default' filepath='include/linux/radix-tree.h' line='159' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/uio.h' line='35' column='1' id='ac5ab5b5'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/uio.h' line='35' column='1' id='ac5ab5b7'>
         <data-member access='private'>
           <var-decl name='iov' type-id='2c556848' visibility='default' filepath='include/linux/uio.h' line='36' column='1'/>
         </data-member>
@@ -78123,7 +78465,7 @@
           <var-decl name='pipe' type-id='15d29711' visibility='default' filepath='include/linux/uio.h' line='39' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='768' is-anonymous='yes' visibility='default' filepath='include/linux/perf_event.h' line='123' column='1' id='f9cbf5f4'>
+      <union-decl name='__anonymous_union__2' size-in-bits='768' is-anonymous='yes' visibility='default' filepath='include/linux/perf_event.h' line='123' column='1' id='f9cbf5f3'>
         <data-member access='private'>
           <var-decl name='' type-id='cdd99b38' visibility='default' filepath='include/linux/perf_event.h' line='124' column='1'/>
         </data-member>
@@ -78185,7 +78527,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='mm/memory.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f6cbf13d'>
+      <union-decl name='__anonymous_union__1' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f6cbf13c'>
         <member-type access='private'>
           <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='139' column='1' id='70494aab'>
             <data-member access='public' layout-offset-in-bits='0'>
@@ -78198,7 +78540,7 @@
               <var-decl name='_pt_pad_2' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='142' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='192'>
-              <var-decl name='' type-id='f9cbf5f5' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
+              <var-decl name='' type-id='f9cbf5f4' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='256'>
               <var-decl name='ptl' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='150' column='1'/>
@@ -78212,7 +78554,7 @@
           <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/mm_types.h' line='161' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f9cbf5f5'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f9cbf5f4'>
         <data-member access='private'>
           <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
         </data-member>
@@ -78380,6 +78722,23 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='mm/shmem.c' language='LANG_C89'>
+      <union-decl name='__anonymous_union__6' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f5cbefa2'>
+        <data-member access='private'>
+          <var-decl name='i_pipe' type-id='15d29710' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_cdev' type-id='3e6eb939' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
+        </data-member>
+      </union-decl>
       <function-decl name='shmem_truncate_range' mangled-name='shmem_truncate_range' filepath='mm/shmem.c' line='993' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='shmem_truncate_range'>
         <parameter type-id='7e666abe' name='inode' filepath='mm/shmem.c' line='993' column='1'/>
         <parameter type-id='69bf7bee' name='lstart' filepath='mm/shmem.c' line='993' column='1'/>
@@ -78420,12 +78779,12 @@
           <var-decl name='partial' type-id='02f11ed4' visibility='default' filepath='include/linux/slub_def.h' line='46' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f6cbf13e'>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f8cbf45d'>
         <data-member access='private'>
-          <var-decl name='slab_list' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='101' column='1'/>
+          <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='' type-id='3ce105b9' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1'/>
+          <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/>
         </data-member>
       </union-decl>
       <class-decl name='kmem_cache_order_objects' size-in-bits='32' is-struct='yes' visibility='default' filepath='include/linux/slub_def.h' line='75' column='1' id='dfc42026'>
@@ -78438,10 +78797,10 @@
           <var-decl name='root_cache' type-id='f3b4aca8' visibility='default' filepath='include/linux/slab.h' line='633' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='' type-id='f2cbeae7' visibility='default' filepath='include/linux/slab.h' line='634' column='1'/>
+          <var-decl name='' type-id='f2cbeae8' visibility='default' filepath='include/linux/slab.h' line='634' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='768' is-anonymous='yes' visibility='default' filepath='include/linux/slab.h' line='634' column='1' id='f2cbeae7'>
+      <union-decl name='__anonymous_union__5' size-in-bits='768' is-anonymous='yes' visibility='default' filepath='include/linux/slab.h' line='634' column='1' id='f2cbeae8'>
         <member-type access='private'>
           <class-decl name='__anonymous_struct__' size-in-bits='768' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/slab.h' line='641' column='1' id='dc07530f'>
             <data-member access='public' layout-offset-in-bits='0'>
@@ -78552,254 +78911,6 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='mm/truncate.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__6' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f5cbefa4'>
-        <member-type access='private'>
-          <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='99' column='1' id='433df9b7'>
-            <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='' type-id='f4cbee0b' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='128'>
-              <var-decl name='slab_cache' type-id='f3b4aca8' visibility='default' filepath='include/linux/mm_types.h' line='113' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='192'>
-              <var-decl name='freelist' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='115' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='256'>
-              <var-decl name='' type-id='ffcbff5c' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1'/>
-            </data-member>
-          </class-decl>
-        </member-type>
-        <member-type access='private'>
-          <class-decl name='__anonymous_struct__1' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='139' column='1' id='608fcdf2'>
-            <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='_pt_pad_1' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='140' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='64'>
-              <var-decl name='pmd_huge_pte' type-id='c28b9700' visibility='default' filepath='include/linux/mm_types.h' line='141' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='128'>
-              <var-decl name='_pt_pad_2' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='142' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='192'>
-              <var-decl name='' type-id='fecbfdc8' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='256'>
-              <var-decl name='ptl' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='150' column='1'/>
-            </data-member>
-          </class-decl>
-        </member-type>
-        <data-member access='private'>
-          <var-decl name='' type-id='e7f43f83' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/mm_types.h' line='161' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__7' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f4cbee0b'>
-        <data-member access='private'>
-          <var-decl name='slab_list' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='101' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='' type-id='687f9686' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__9' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='fecbfdc8'>
-        <data-member access='private'>
-          <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/>
-        </data-member>
-      </union-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='657f91ca'>
-        <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='mmap' type-id='2ae08426' visibility='default' filepath='include/linux/mm_types.h' line='360' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='mm_rb' type-id='dec44472' visibility='default' filepath='include/linux/mm_types.h' line='361' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='vmacache_seqnum' type-id='91ce1af9' visibility='default' filepath='include/linux/mm_types.h' line='362' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='get_unmapped_area' type-id='d44a8cec' visibility='default' filepath='include/linux/mm_types.h' line='364' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='mmap_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='368' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='320'>
-          <var-decl name='mmap_legacy_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='369' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='384'>
-          <var-decl name='task_size' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='375' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='highest_vm_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='376' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='pgd' type-id='2e97ceaf' visibility='default' filepath='include/linux/mm_types.h' line='377' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='mm_users' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='388' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='608'>
-          <var-decl name='mm_count' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='397' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='pgtables_bytes' type-id='f22a8abb' visibility='default' filepath='include/linux/mm_types.h' line='400' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='704'>
-          <var-decl name='map_count' type-id='95e97e5e' visibility='default' filepath='include/linux/mm_types.h' line='402' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='736'>
-          <var-decl name='page_table_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='404' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='768'>
-          <var-decl name='mmap_sem' type-id='f19fdb93' visibility='default' filepath='include/linux/mm_types.h' line='407' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1152'>
-          <var-decl name='mmlist' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='409' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1280'>
-          <var-decl name='hiwater_rss' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='416' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1344'>
-          <var-decl name='hiwater_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='417' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1408'>
-          <var-decl name='total_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='419' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1472'>
-          <var-decl name='locked_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='420' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1536'>
-          <var-decl name='pinned_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='421' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1600'>
-          <var-decl name='data_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='422' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1664'>
-          <var-decl name='exec_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='423' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1728'>
-          <var-decl name='stack_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='424' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1792'>
-          <var-decl name='def_flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='425' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1856'>
-          <var-decl name='arg_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='427' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1920'>
-          <var-decl name='start_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1984'>
-          <var-decl name='end_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2048'>
-          <var-decl name='start_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2112'>
-          <var-decl name='end_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2176'>
-          <var-decl name='start_brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2240'>
-          <var-decl name='brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2304'>
-          <var-decl name='start_stack' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2368'>
-          <var-decl name='arg_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2432'>
-          <var-decl name='arg_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2496'>
-          <var-decl name='env_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2560'>
-          <var-decl name='env_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='2624'>
-          <var-decl name='saved_auxv' type-id='d964a553' visibility='default' filepath='include/linux/mm_types.h' line='432' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='5568'>
-          <var-decl name='rss_stat' type-id='2235a2cb' visibility='default' filepath='include/linux/mm_types.h' line='438' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='5888'>
-          <var-decl name='binfmt' type-id='7cc59444' visibility='default' filepath='include/linux/mm_types.h' line='440' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='5952'>
-          <var-decl name='context' type-id='0eb9c3fd' visibility='default' filepath='include/linux/mm_types.h' line='443' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6144'>
-          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='445' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6208'>
-          <var-decl name='core_state' type-id='90ad83aa' visibility='default' filepath='include/linux/mm_types.h' line='447' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6272'>
-          <var-decl name='membarrier_state' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='449' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6304'>
-          <var-decl name='ioctx_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='452' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6336'>
-          <var-decl name='ioctx_table' type-id='122191b2' visibility='default' filepath='include/linux/mm_types.h' line='453' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6400'>
-          <var-decl name='owner' type-id='f23e2572' visibility='default' filepath='include/linux/mm_types.h' line='466' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6464'>
-          <var-decl name='user_ns' type-id='c0ced321' visibility='default' filepath='include/linux/mm_types.h' line='468' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6528'>
-          <var-decl name='exe_file' type-id='77e79a4b' visibility='default' filepath='include/linux/mm_types.h' line='471' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6592'>
-          <var-decl name='tlb_flush_pending' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='497' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6656'>
-          <var-decl name='uprobes_state' type-id='6308a819' visibility='default' filepath='include/linux/mm_types.h' line='502' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='6720'>
-          <var-decl name='async_put_work' type-id='ef9025d0' visibility='default' filepath='include/linux/mm_types.h' line='506' column='1'/>
-        </data-member>
-      </class-decl>
-      <union-decl name='__anonymous_union__14' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/blkdev.h' line='188' column='1' id='9b0c88cc'>
-        <data-member access='private'>
-          <var-decl name='rb_node' type-id='2a8a6332' visibility='default' filepath='include/linux/blkdev.h' line='189' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='special_vec' type-id='40af3609' visibility='default' filepath='include/linux/blkdev.h' line='190' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='completion_data' type-id='eaa32e2f' visibility='default' filepath='include/linux/blkdev.h' line='191' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='error_count' type-id='95e97e5e' visibility='default' filepath='include/linux/blkdev.h' line='192' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__20' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='1113fe52'>
-        <data-member access='private'>
-          <var-decl name='i_pipe' type-id='15d29711' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_cdev' type-id='3e6eb939' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
-        </data-member>
-      </union-decl>
       <function-decl name='truncate_inode_pages' mangled-name='truncate_inode_pages' filepath='mm/truncate.c' line='476' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='truncate_inode_pages'>
         <parameter type-id='f57039f0' name='mapping' filepath='mm/truncate.c' line='476' column='1'/>
         <parameter type-id='69bf7bee' name='lstart' filepath='mm/truncate.c' line='476' column='1'/>
@@ -78812,17 +78923,6 @@
         <parameter type-id='95e97e5e'/>
         <return type-id='48b5725f'/>
       </function-decl>
-      <union-decl name='__anonymous_union__8' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1' id='ffcbff5c'>
-        <data-member access='private'>
-          <var-decl name='s_mem' type-id='eaa32e2f' visibility='default' filepath='include/linux/mm_types.h' line='117' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='counters' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='118' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='' type-id='39e10100' visibility='default' filepath='include/linux/mm_types.h' line='119' column='1'/>
-        </data-member>
-      </union-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='mm/usercopy.c' language='LANG_C89'>
       <function-decl name='__check_object_size' mangled-name='__check_object_size' filepath='mm/usercopy.c' line='266' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__check_object_size'>
@@ -78988,7 +79088,7 @@
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/bridge/br_input.c' language='LANG_C89'>
       <typedef-decl name='br_should_route_hook_t' type-id='918604f1' filepath='include/linux/if_bridge.h' line='59' column='1' id='add2aaad'/>
-      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f6cbf13f'>
+      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f6cbf13d'>
         <data-member access='private'>
           <var-decl name='sk' type-id='f772df6e' visibility='default' filepath='include/linux/skbuff.h' line='685' column='1'/>
         </data-member>
@@ -79219,18 +79319,7 @@
           <var-decl name='data' type-id='db4e746c' visibility='default' filepath='include/uapi/linux/wireless.h' line='924' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='665' column='1' id='ac5ab5b6'>
-        <data-member access='private'>
-          <var-decl name='' type-id='687f967b' visibility='default' filepath='include/linux/skbuff.h' line='666' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='rbnode' type-id='2a8a6332' visibility='default' filepath='include/linux/skbuff.h' line='680' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/skbuff.h' line='681' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__10' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/bpf.h' line='298' column='1' id='9f0c8f19'>
+      <union-decl name='__anonymous_union__10' size-in-bits='384' is-anonymous='yes' visibility='default' filepath='include/linux/bpf.h' line='298' column='1' id='9f0c8f1a'>
         <data-member access='private'>
           <var-decl name='work' type-id='ef9025d0' visibility='default' filepath='include/linux/bpf.h' line='299' column='1'/>
         </data-member>
@@ -79238,7 +79327,7 @@
           <var-decl name='rcu' type-id='e3d8ce29' visibility='default' filepath='include/linux/bpf.h' line='300' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__11' is-anonymous='yes' visibility='default' filepath='include/linux/filter.h' line='502' column='1' id='a00c90ab'>
+      <union-decl name='__anonymous_union__11' is-anonymous='yes' visibility='default' filepath='include/linux/filter.h' line='502' column='1' id='a00c90ae'>
         <data-member access='private'>
           <var-decl name='insns' type-id='4967766c' visibility='default' filepath='include/linux/filter.h' line='503' column='1'/>
         </data-member>
@@ -79402,7 +79491,7 @@
           <var-decl name='combine' type-id='1b0b8c1b' visibility='default' filepath='include/linux/skbuff.h' line='3375' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__8' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='ffcbff5d'>
+      <union-decl name='__anonymous_union__8' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='ffcbff5e'>
         <data-member access='private'>
           <var-decl name='' type-id='6f7fa17e' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
         </data-member>
@@ -79523,14 +79612,6 @@
       <array-type-def dimensions='1' type-id='95e97e5e' size-in-bits='2048' id='93e41790'>
         <subrange length='64' type-id='7ff19f0f' id='b10be967'/>
       </array-type-def>
-      <union-decl name='__anonymous_union__8' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='304' column='1' id='ffcbff5e'>
-        <data-member access='private'>
-          <var-decl name='shared' type-id='cbd99811' visibility='default' filepath='include/linux/mm_types.h' line='308' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='anon_name' type-id='80f4b756' visibility='default' filepath='include/linux/mm_types.h' line='309' column='1'/>
-        </data-member>
-      </union-decl>
       <pointer-type-def type-id='2a693ac3' size-in-bits='64' id='896f1b83'/>
       <function-decl name='net_enable_timestamp' mangled-name='net_enable_timestamp' filepath='include/linux/netdevice.h' line='4353' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='net_enable_timestamp'>
         <return type-id='48b5725f'/>
@@ -80381,7 +80462,7 @@
           <var-decl name='sf_crcount' type-id='002ac4a6' visibility='default' filepath='include/linux/igmp.h' line='71' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/igmp.h' line='81' column='1' id='ac5ab5b7'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/igmp.h' line='81' column='1' id='ac5ab5b8'>
         <data-member access='private'>
           <var-decl name='next' type-id='26479c18' visibility='default' filepath='include/linux/igmp.h' line='82' column='1'/>
         </data-member>
@@ -80397,7 +80478,7 @@
           <var-decl name='prev' type-id='0fbf3cfd' visibility='default' filepath='include/linux/skbuff.h' line='669' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='' type-id='f9cbf5f6' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
+          <var-decl name='' type-id='f9cbf5f5' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
         </data-member>
       </class-decl>
       <pointer-type-def type-id='11b31209' size-in-bits='64' id='ab3e7181'/>
@@ -80604,7 +80685,7 @@
       </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/ipv4/tcp_ipv4.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__14' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/crypto.h' line='597' column='1' id='9b0c88cd'>
+      <union-decl name='__anonymous_union__14' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/crypto.h' line='597' column='1' id='9b0c88cc'>
         <data-member access='private'>
           <var-decl name='ablkcipher' type-id='3bbbf306' visibility='default' filepath='include/linux/crypto.h' line='598' column='1'/>
         </data-member>
@@ -80632,15 +80713,7 @@
           <var-decl name='compress' type-id='380acddc' visibility='default' filepath='include/linux/crypto.h' line='482' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__16' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='138' column='1' id='9d0c8bf2'>
-        <data-member access='private'>
-          <var-decl name='gclist' type-id='03a4a074' visibility='default' filepath='include/net/xfrm.h' line='139' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='bydst' type-id='03a4a074' visibility='default' filepath='include/net/xfrm.h' line='140' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__17' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='9e0c8d85'>
+      <union-decl name='__anonymous_union__17' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='9e0c8d84'>
         <data-member access='private'>
           <var-decl name='skc_flags' type-id='7359adad' visibility='default' filepath='include/net/sock.h' line='204' column='1'/>
         </data-member>
@@ -80667,7 +80740,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/ipv4/udp_diag.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f2cbeae8'>
+      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f2cbeae9'>
         <data-member access='private'>
           <var-decl name='sk' type-id='f772df6e' visibility='default' filepath='include/linux/skbuff.h' line='685' column='1'/>
         </data-member>
@@ -80675,7 +80748,7 @@
           <var-decl name='ip_defrag_offset' type-id='95e97e5e' visibility='default' filepath='include/linux/skbuff.h' line='686' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__12' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='a10c923d'>
+      <union-decl name='__anonymous_union__12' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='a10c923e'>
         <data-member access='private'>
           <var-decl name='hashinfo' type-id='d7a1e3c2' visibility='default' filepath='include/net/sock.h' line='1173' column='1'/>
         </data-member>
@@ -80730,7 +80803,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/ipv6/addrconf.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/uio.h' line='35' column='1' id='f9cbf5f7'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/uio.h' line='35' column='1' id='f9cbf5f6'>
         <data-member access='private'>
           <var-decl name='iov' type-id='2c556848' visibility='default' filepath='include/linux/uio.h' line='36' column='1'/>
         </data-member>
@@ -80752,7 +80825,184 @@
           <var-decl name='' type-id='3be10426' visibility='default' filepath='include/linux/uio.h' line='43' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='f2cbeae9'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='7104' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='359' column='1' id='687f9688'>
+        <data-member access='public' layout-offset-in-bits='0'>
+          <var-decl name='mmap' type-id='2ae08426' visibility='default' filepath='include/linux/mm_types.h' line='360' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='64'>
+          <var-decl name='mm_rb' type-id='dec44472' visibility='default' filepath='include/linux/mm_types.h' line='361' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='128'>
+          <var-decl name='vmacache_seqnum' type-id='91ce1af9' visibility='default' filepath='include/linux/mm_types.h' line='362' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='192'>
+          <var-decl name='get_unmapped_area' type-id='d44a8cec' visibility='default' filepath='include/linux/mm_types.h' line='364' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='256'>
+          <var-decl name='mmap_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='368' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='320'>
+          <var-decl name='mmap_legacy_base' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='369' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='384'>
+          <var-decl name='task_size' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='375' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='448'>
+          <var-decl name='highest_vm_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='376' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='512'>
+          <var-decl name='pgd' type-id='2e97ceaf' visibility='default' filepath='include/linux/mm_types.h' line='377' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='576'>
+          <var-decl name='mm_users' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='388' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='608'>
+          <var-decl name='mm_count' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='397' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='640'>
+          <var-decl name='pgtables_bytes' type-id='f22a8abb' visibility='default' filepath='include/linux/mm_types.h' line='400' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='704'>
+          <var-decl name='map_count' type-id='95e97e5e' visibility='default' filepath='include/linux/mm_types.h' line='402' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='736'>
+          <var-decl name='page_table_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='404' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='768'>
+          <var-decl name='mmap_sem' type-id='f19fdb93' visibility='default' filepath='include/linux/mm_types.h' line='407' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1152'>
+          <var-decl name='mmlist' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='409' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1280'>
+          <var-decl name='hiwater_rss' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='416' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1344'>
+          <var-decl name='hiwater_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='417' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1408'>
+          <var-decl name='total_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='419' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1472'>
+          <var-decl name='locked_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='420' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1536'>
+          <var-decl name='pinned_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='421' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1600'>
+          <var-decl name='data_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='422' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1664'>
+          <var-decl name='exec_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='423' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1728'>
+          <var-decl name='stack_vm' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='424' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1792'>
+          <var-decl name='def_flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='425' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1856'>
+          <var-decl name='arg_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='427' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1920'>
+          <var-decl name='start_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1984'>
+          <var-decl name='end_code' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2048'>
+          <var-decl name='start_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2112'>
+          <var-decl name='end_data' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='428' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2176'>
+          <var-decl name='start_brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2240'>
+          <var-decl name='brk' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2304'>
+          <var-decl name='start_stack' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='429' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2368'>
+          <var-decl name='arg_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2432'>
+          <var-decl name='arg_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2496'>
+          <var-decl name='env_start' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2560'>
+          <var-decl name='env_end' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='430' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='2624'>
+          <var-decl name='saved_auxv' type-id='d964a553' visibility='default' filepath='include/linux/mm_types.h' line='432' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5568'>
+          <var-decl name='rss_stat' type-id='2235a2cb' visibility='default' filepath='include/linux/mm_types.h' line='438' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5888'>
+          <var-decl name='binfmt' type-id='7cc59444' visibility='default' filepath='include/linux/mm_types.h' line='440' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='5952'>
+          <var-decl name='context' type-id='0eb9c3fd' visibility='default' filepath='include/linux/mm_types.h' line='443' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6144'>
+          <var-decl name='flags' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='445' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6208'>
+          <var-decl name='core_state' type-id='90ad83aa' visibility='default' filepath='include/linux/mm_types.h' line='447' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6272'>
+          <var-decl name='membarrier_state' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='449' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6304'>
+          <var-decl name='ioctx_lock' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='452' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6336'>
+          <var-decl name='ioctx_table' type-id='122191b2' visibility='default' filepath='include/linux/mm_types.h' line='453' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6400'>
+          <var-decl name='owner' type-id='f23e2572' visibility='default' filepath='include/linux/mm_types.h' line='466' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6464'>
+          <var-decl name='user_ns' type-id='c0ced321' visibility='default' filepath='include/linux/mm_types.h' line='468' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6528'>
+          <var-decl name='exe_file' type-id='77e79a4b' visibility='default' filepath='include/linux/mm_types.h' line='471' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6592'>
+          <var-decl name='tlb_flush_pending' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='497' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6656'>
+          <var-decl name='uprobes_state' type-id='6308a819' visibility='default' filepath='include/linux/mm_types.h' line='502' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='6720'>
+          <var-decl name='async_put_work' type-id='ef9025d0' visibility='default' filepath='include/linux/mm_types.h' line='506' column='1'/>
+        </data-member>
+      </class-decl>
+      <union-decl name='__anonymous_union__5' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='304' column='1' id='f2cbeaea'>
+        <data-member access='private'>
+          <var-decl name='shared' type-id='cbd99811' visibility='default' filepath='include/linux/mm_types.h' line='308' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='anon_name' type-id='80f4b756' visibility='default' filepath='include/linux/mm_types.h' line='309' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__6' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='1090' column='1' id='f5cbefa4'>
+        <data-member access='private'>
+          <var-decl name='nfs_fl' type-id='17bacae5' visibility='default' filepath='include/linux/fs.h' line='1091' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='nfs4_fl' type-id='b811a3f5' visibility='default' filepath='include/linux/fs.h' line='1092' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='afs' type-id='3fe10a72' visibility='default' filepath='include/linux/fs.h' line='1096' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='f4cbee0d'>
         <data-member access='private'>
           <var-decl name='hashinfo' type-id='d7a1e3c2' visibility='default' filepath='include/net/sock.h' line='1173' column='1'/>
         </data-member>
@@ -80816,7 +81066,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/ipv6/ip6_output.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='414' column='1' id='f6cbf140'>
+      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='414' column='1' id='f6cbf13e'>
         <data-member access='private'>
           <var-decl name='sk_send_head' type-id='0fbf3cfd' visibility='default' filepath='include/net/sock.h' line='415' column='1'/>
         </data-member>
@@ -80846,6 +81096,25 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/ipv6/ipv6_sockglue.c' language='LANG_C89'>
+      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='f2cbeaeb'>
+        <data-member access='private'>
+          <var-decl name='skc_flags' type-id='7359adad' visibility='default' filepath='include/net/sock.h' line='204' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='skc_listener' type-id='f772df6e' visibility='default' filepath='include/net/sock.h' line='205' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='skc_tw_dr' type-id='b7ab21fc' visibility='default' filepath='include/net/sock.h' line='206' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__10' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/xfrm.h' line='138' column='1' id='9f0c8f1b'>
+        <data-member access='private'>
+          <var-decl name='gclist' type-id='03a4a074' visibility='default' filepath='include/net/xfrm.h' line='139' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='bydst' type-id='03a4a074' visibility='default' filepath='include/net/xfrm.h' line='140' column='1'/>
+        </data-member>
+      </union-decl>
       <function-decl name='ipv6_setsockopt' mangled-name='ipv6_setsockopt' filepath='net/ipv6/ipv6_sockglue.c' line='922' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='ipv6_setsockopt'>
         <parameter type-id='f772df6e' name='sk' filepath='net/ipv6/ipv6_sockglue.c' line='922' column='1'/>
         <parameter type-id='95e97e5e' name='level' filepath='net/ipv6/ipv6_sockglue.c' line='922' column='1'/>
@@ -80880,7 +81149,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/ipv6/tcp_ipv6.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='ac5ab5b8'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='ac5ab5b9'>
         <data-member access='private'>
           <var-decl name='sk_wq' type-id='99f34ac1' visibility='default' filepath='include/net/sock.h' line='399' column='1'/>
         </data-member>
@@ -80963,47 +81232,6 @@
           <var-decl name='flags' type-id='002ac4a6' visibility='default' filepath='include/net/protocol.h' line='90' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='f2cbeaea'>
-        <data-member access='private'>
-          <var-decl name='dev' type-id='68a2d05c' visibility='default' filepath='include/linux/skbuff.h' line='672' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='dev_scratch' type-id='7359adad' visibility='default' filepath='include/linux/skbuff.h' line='677' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__13' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sch_generic.h' line='50' column='1' id='a20c93d3'>
-        <data-member access='private'>
-          <var-decl name='qlen' type-id='19c2251e' visibility='default' filepath='include/net/sch_generic.h' line='51' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='atomic_qlen' type-id='49178f86' visibility='default' filepath='include/net/sch_generic.h' line='52' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__15' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='9c0c8a5f'>
-        <data-member access='private'>
-          <var-decl name='skc_flags' type-id='7359adad' visibility='default' filepath='include/net/sock.h' line='204' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='skc_listener' type-id='f772df6e' visibility='default' filepath='include/net/sock.h' line='205' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='skc_tw_dr' type-id='b7ab21fc' visibility='default' filepath='include/net/sock.h' line='206' column='1'/>
-        </data-member>
-      </union-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='381' column='1' id='657f91cc'>
-        <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='rmem_alloc' type-id='49178f86' visibility='default' filepath='include/net/sock.h' line='382' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='32'>
-          <var-decl name='len' type-id='95e97e5e' visibility='default' filepath='include/net/sock.h' line='383' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='head' type-id='0fbf3cfd' visibility='default' filepath='include/net/sock.h' line='384' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='tail' type-id='0fbf3cfd' visibility='default' filepath='include/net/sock.h' line='385' column='1'/>
-        </data-member>
-      </class-decl>
       <class-decl name='inet6_protocol' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/net/protocol.h' line='56' column='1' id='be72d1b0'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='early_demux' type-id='0ef96694' visibility='default' filepath='include/net/protocol.h' line='57' column='1'/>
@@ -81079,7 +81307,7 @@
           <var-decl name='share' type-id='f9b06939' visibility='default' filepath='include/net/ipv6.h' line='273' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='owner' type-id='1213ffe4' visibility='default' filepath='include/net/ipv6.h' line='277' column='1'/>
+          <var-decl name='owner' type-id='a00c90af' visibility='default' filepath='include/net/ipv6.h' line='277' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='640'>
           <var-decl name='lastuse' type-id='7359adad' visibility='default' filepath='include/net/ipv6.h' line='278' column='1'/>
@@ -81142,7 +81370,7 @@
           <var-decl name='segments_left' type-id='8f048e17' visibility='default' filepath='include/uapi/linux/ipv6.h' line='52' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__23' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/ipv6.h' line='274' column='1' id='1213ffe4'>
+      <union-decl name='__anonymous_union__11' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/ipv6.h' line='274' column='1' id='a00c90af'>
         <data-member access='private'>
           <var-decl name='pid' type-id='b94e5398' visibility='default' filepath='include/net/ipv6.h' line='275' column='1'/>
         </data-member>
@@ -81224,7 +81452,7 @@
       </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/netfilter/nf_conntrack_netlink.c' language='LANG_C89'>
-      <class-decl name='__anonymous_struct__1' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='381' column='1' id='687f9688'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='381' column='1' id='687f9689'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='rmem_alloc' type-id='49178f86' visibility='default' filepath='include/net/sock.h' line='382' column='1'/>
         </data-member>
@@ -81358,6 +81586,14 @@
         </data-member>
       </class-decl>
       <typedef-decl name='nf_hookfn' type-id='272e7e29' filepath='include/linux/netfilter.h' line='61' column='1' id='0331c4d6'/>
+      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='f6cbf13f'>
+        <data-member access='private'>
+          <var-decl name='dev' type-id='68a2d05c' visibility='default' filepath='include/linux/skbuff.h' line='672' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='dev_scratch' type-id='7359adad' visibility='default' filepath='include/linux/skbuff.h' line='677' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='nf_hook_state' size-in-bits='384' is-struct='yes' visibility='default' filepath='include/linux/netfilter.h' line='51' column='1' id='89d4ce3f'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='hook' type-id='f0981eeb' visibility='default' filepath='include/linux/netfilter.h' line='52' column='1'/>
@@ -81472,7 +81708,7 @@
       </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/netfilter/x_tables.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='665' column='1' id='f6cbf141'>
+      <union-decl name='__anonymous_union__1' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='665' column='1' id='f6cbf140'>
         <data-member access='private'>
           <var-decl name='' type-id='e7f43f86' visibility='default' filepath='include/linux/skbuff.h' line='666' column='1'/>
         </data-member>
@@ -81483,7 +81719,7 @@
           <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/linux/skbuff.h' line='681' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='f9cbf5f6'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='f9cbf5f5'>
         <data-member access='private'>
           <var-decl name='dev' type-id='68a2d05c' visibility='default' filepath='include/linux/skbuff.h' line='672' column='1'/>
         </data-member>
@@ -81674,10 +81910,10 @@
           <var-decl name='prev' type-id='0fbf3cfd' visibility='default' filepath='include/linux/skbuff.h' line='669' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='' type-id='f2cbeaea' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
+          <var-decl name='' type-id='f2cbeae3' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f4cbee0c'>
+      <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='684' column='1' id='f4cbee0e'>
         <data-member access='private'>
           <var-decl name='sk' type-id='f772df6e' visibility='default' filepath='include/linux/skbuff.h' line='685' column='1'/>
         </data-member>
@@ -81685,6 +81921,20 @@
           <var-decl name='ip_defrag_offset' type-id='95e97e5e' visibility='default' filepath='include/linux/skbuff.h' line='686' column='1'/>
         </data-member>
       </union-decl>
+      <union-decl name='__anonymous_union__15' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='1172' column='1' id='9c0c8a5f'>
+        <data-member access='private'>
+          <var-decl name='hashinfo' type-id='d7a1e3c2' visibility='default' filepath='include/net/sock.h' line='1173' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='udp_table' type-id='115daa23' visibility='default' filepath='include/net/sock.h' line='1174' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='raw_hash' type-id='eb2c56dc' visibility='default' filepath='include/net/sock.h' line='1175' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='smc_hash' type-id='aa8162a3' visibility='default' filepath='include/net/sock.h' line='1176' column='1'/>
+        </data-member>
+      </union-decl>
       <union-decl name='__anonymous_union__16' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='9d0c8bf3'>
         <data-member access='private'>
           <var-decl name='skc_flags' type-id='7359adad' visibility='default' filepath='include/net/sock.h' line='204' column='1'/>
@@ -81778,10 +82028,10 @@
           <var-decl name='count' type-id='f0981eeb' visibility='default' filepath='include/net/inet_hashtables.h' line='117' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='' type-id='f2cbeaeb' visibility='default' filepath='include/net/inet_hashtables.h' line='118' column='1'/>
+          <var-decl name='' type-id='f2cbeaec' visibility='default' filepath='include/net/inet_hashtables.h' line='118' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/inet_hashtables.h' line='118' column='1' id='f2cbeaeb'>
+      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/inet_hashtables.h' line='118' column='1' id='f2cbeaec'>
         <data-member access='private'>
           <var-decl name='head' type-id='e151255a' visibility='default' filepath='include/net/inet_hashtables.h' line='119' column='1'/>
         </data-member>
@@ -81789,6 +82039,62 @@
           <var-decl name='nulls_head' type-id='af86905d' visibility='default' filepath='include/net/inet_hashtables.h' line='120' column='1'/>
         </data-member>
       </union-decl>
+      <class-decl name='tcp_congestion_ops' size-in-bits='1216' is-struct='yes' visibility='default' filepath='include/net/tcp.h' line='1033' column='1' id='54718f0a'>
+        <data-member access='public' layout-offset-in-bits='0'>
+          <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/net/tcp.h' line='1034' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='128'>
+          <var-decl name='key' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1035' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='160'>
+          <var-decl name='flags' type-id='19c2251e' visibility='default' filepath='include/net/tcp.h' line='1036' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='192'>
+          <var-decl name='init' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1039' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='256'>
+          <var-decl name='release' type-id='841969d0' visibility='default' filepath='include/net/tcp.h' line='1041' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='320'>
+          <var-decl name='ssthresh' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1044' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='384'>
+          <var-decl name='cong_avoid' type-id='ece3af1e' visibility='default' filepath='include/net/tcp.h' line='1046' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='448'>
+          <var-decl name='set_state' type-id='f5feb7a4' visibility='default' filepath='include/net/tcp.h' line='1048' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='512'>
+          <var-decl name='cwnd_event' type-id='bfacbc7a' visibility='default' filepath='include/net/tcp.h' line='1050' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='576'>
+          <var-decl name='in_ack_event' type-id='815f64bf' visibility='default' filepath='include/net/tcp.h' line='1052' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='640'>
+          <var-decl name='undo_cwnd' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1054' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='704'>
+          <var-decl name='pkts_acked' type-id='bffb5883' visibility='default' filepath='include/net/tcp.h' line='1056' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='768'>
+          <var-decl name='min_tso_segs' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1058' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='832'>
+          <var-decl name='sndbuf_expand' type-id='8af06487' visibility='default' filepath='include/net/tcp.h' line='1060' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='896'>
+          <var-decl name='cong_control' type-id='636d3a20' visibility='default' filepath='include/net/tcp.h' line='1064' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='960'>
+          <var-decl name='get_info' type-id='14ca5c08' visibility='default' filepath='include/net/tcp.h' line='1066' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1024'>
+          <var-decl name='name' type-id='ac1fa8c0' visibility='default' filepath='include/net/tcp.h' line='1069' column='1'/>
+        </data-member>
+        <data-member access='public' layout-offset-in-bits='1152'>
+          <var-decl name='owner' type-id='2730d015' visibility='default' filepath='include/net/tcp.h' line='1070' column='1'/>
+        </data-member>
+      </class-decl>
       <enum-decl name='tcp_ca_event' filepath='include/net/tcp.h' line='971' column='1' id='5f51e977'>
         <underlying-type type-id='6406df84'/>
         <enumerator name='CA_EVENT_TX_START' value='0'/>
@@ -81894,6 +82200,8 @@
       <pointer-type-def type-id='67a1c23c' size-in-bits='64' id='39a488a2'/>
       <qualified-type-def type-id='a084c932' const='yes' id='5420d2f9'/>
       <pointer-type-def type-id='5420d2f9' size-in-bits='64' id='42abe229'/>
+      <qualified-type-def type-id='54718f0a' const='yes' id='c408da31'/>
+      <pointer-type-def type-id='c408da31' size-in-bits='64' id='b3ef56ef'/>
       <pointer-type-def type-id='5e09ca8a' size-in-bits='64' id='75f72758'/>
       <pointer-type-def type-id='082b64be' size-in-bits='64' id='fd53db64'/>
       <pointer-type-def type-id='08400b46' size-in-bits='64' id='77011cbc'/>
@@ -81960,6 +82268,23 @@
       </function-type>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/netfilter/xt_hashlimit.c' language='LANG_C89'>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f8cbf460'>
+        <data-member access='private'>
+          <var-decl name='i_pipe' type-id='15d29710' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_cdev' type-id='3e6eb939' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
+        </data-member>
+      </union-decl>
       <function-decl name='proc_mkdir' mangled-name='proc_mkdir' filepath='include/linux/proc_fs.h' line='24' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='proc_mkdir'>
         <parameter type-id='80f4b756'/>
         <parameter type-id='d077e928'/>
@@ -82026,10 +82351,10 @@
       </class-decl>
       <class-decl name='xt_action_param' size-in-bits='320' is-struct='yes' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='30' column='1' id='edb04712'>
         <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='' type-id='a00c90ac' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='31' column='1'/>
+          <var-decl name='' type-id='a00c90b0' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='31' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='' type-id='a10c923e' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='35' column='1'/>
+          <var-decl name='' type-id='a10c923f' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='35' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
           <var-decl name='state' type-id='309a5a26' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='38' column='1'/>
@@ -82044,7 +82369,7 @@
           <var-decl name='hotdrop' type-id='b50a4934' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='41' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__11' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='31' column='1' id='a00c90ac'>
+      <union-decl name='__anonymous_union__11' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='31' column='1' id='a00c90b0'>
         <data-member access='private'>
           <var-decl name='match' type-id='1ecd1044' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='32' column='1'/>
         </data-member>
@@ -82142,7 +82467,7 @@
           <var-decl name='family' type-id='892641a4' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='111' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__12' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='35' column='1' id='a10c923e'>
+      <union-decl name='__anonymous_union__12' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='35' column='1' id='a10c923f'>
         <data-member access='private'>
           <var-decl name='matchinfo' type-id='eaa32e2f' visibility='default' filepath='include/linux/netfilter/x_tables.h' line='36' column='1'/>
         </data-member>
@@ -82335,17 +82660,9 @@
           <var-decl name='prev' type-id='0fbf3cfd' visibility='default' filepath='include/linux/skbuff.h' line='669' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='' type-id='f6cbf142' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
+          <var-decl name='' type-id='f6cbf13f' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='671' column='1' id='f6cbf142'>
-        <data-member access='private'>
-          <var-decl name='dev' type-id='68a2d05c' visibility='default' filepath='include/linux/skbuff.h' line='672' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='dev_scratch' type-id='7359adad' visibility='default' filepath='include/linux/skbuff.h' line='677' column='1'/>
-        </data-member>
-      </union-decl>
       <enum-decl name='__anonymous_enum__2' is-anonymous='yes' filepath='include/linux/skbuff.h' line='256' column='1' id='3fed3842'>
         <underlying-type type-id='6406df84'/>
         <enumerator name='BRNF_PROTO_UNCHANGED' value='0'/>
@@ -82378,7 +82695,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/sched/act_mirred.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='665' column='1' id='ac5ab5b9'>
+      <union-decl name='__anonymous_union__' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='665' column='1' id='ac5ab5ba'>
         <data-member access='private'>
           <var-decl name='' type-id='e7f43f88' visibility='default' filepath='include/linux/skbuff.h' line='666' column='1'/>
         </data-member>
@@ -82443,7 +82760,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/sched/em_meta.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='f6cbf143'>
+      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='f6cbf141'>
         <data-member access='private'>
           <var-decl name='sk_wq' type-id='99f34ac1' visibility='default' filepath='include/net/sock.h' line='399' column='1'/>
         </data-member>
@@ -82470,7 +82787,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/sched/sch_netem.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__8' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='ffcbff5f'>
+      <union-decl name='__anonymous_union__10' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='9f0c8f1c'>
         <data-member access='private'>
           <var-decl name='i_pipe' type-id='15d29710' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
         </data-member>
@@ -82501,11 +82818,11 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/socket.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__2' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f9cbf5f8'>
+      <union-decl name='__anonymous_union__2' size-in-bits='320' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='80' column='1' id='f9cbf5f7'>
         <member-type access='private'>
           <class-decl name='__anonymous_struct__' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='99' column='1' id='62a75ba3'>
             <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='' type-id='f8cbf460' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
+              <var-decl name='' type-id='f8cbf461' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='128'>
               <var-decl name='slab_cache' type-id='f3b4aca8' visibility='default' filepath='include/linux/mm_types.h' line='113' column='1'/>
@@ -82518,38 +82835,19 @@
             </data-member>
           </class-decl>
         </member-type>
-        <member-type access='private'>
-          <class-decl name='__anonymous_struct__1' size-in-bits='320' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='139' column='1' id='df7526d6'>
-            <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='_pt_pad_1' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='140' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='64'>
-              <var-decl name='pmd_huge_pte' type-id='c28b9700' visibility='default' filepath='include/linux/mm_types.h' line='141' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='128'>
-              <var-decl name='_pt_pad_2' type-id='7359adad' visibility='default' filepath='include/linux/mm_types.h' line='142' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='192'>
-              <var-decl name='' type-id='f2cbeaec' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1'/>
-            </data-member>
-            <data-member access='public' layout-offset-in-bits='256'>
-              <var-decl name='ptl' type-id='fb4018a0' visibility='default' filepath='include/linux/mm_types.h' line='150' column='1'/>
-            </data-member>
-          </class-decl>
-        </member-type>
         <data-member access='private'>
-          <var-decl name='' type-id='e7f43f83' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
+          <var-decl name='' type-id='687f967a' visibility='default' filepath='include/linux/mm_types.h' line='81' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='callback_head' type-id='e3d8ce29' visibility='default' filepath='include/linux/mm_types.h' line='161' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f8cbf460'>
+      <union-decl name='__anonymous_union__3' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='100' column='1' id='f8cbf461'>
         <data-member access='private'>
           <var-decl name='slab_list' type-id='72f469ec' visibility='default' filepath='include/linux/mm_types.h' line='101' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='' type-id='687f9686' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1'/>
+          <var-decl name='' type-id='3ce105b9' visibility='default' filepath='include/linux/mm_types.h' line='102' column='1'/>
         </data-member>
       </union-decl>
       <union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='116' column='1' id='f3cbec7d'>
@@ -82563,15 +82861,7 @@
           <var-decl name='' type-id='39e10100' visibility='default' filepath='include/linux/mm_types.h' line='119' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/mm_types.h' line='143' column='1' id='f2cbeaec'>
-        <data-member access='private'>
-          <var-decl name='pt_mm' type-id='df4b7819' visibility='default' filepath='include/linux/mm_types.h' line='144' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='pt_frag_refcount' type-id='49178f86' visibility='default' filepath='include/linux/mm_types.h' line='145' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/uio.h' line='35' column='1' id='f4cbee0d'>
+      <union-decl name='__anonymous_union__6' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/uio.h' line='35' column='1' id='f5cbefa6'>
         <data-member access='private'>
           <var-decl name='iov' type-id='2c556848' visibility='default' filepath='include/linux/uio.h' line='36' column='1'/>
         </data-member>
@@ -82692,7 +82982,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/wireless/core.c' language='LANG_C89'>
-      <array-type-def dimensions='1' type-id='687f9689' size-in-bits='864' id='69bcaf1e'>
+      <array-type-def dimensions='1' type-id='687f968a' size-in-bits='864' id='69bcaf1e'>
         <subrange length='3' type-id='7ff19f0f' id='56f209d2'/>
       </array-type-def>
       <array-type-def dimensions='1' type-id='c0e72c08' size-in-bits='336' id='113a8bef'>
@@ -84046,38 +84336,6 @@
           <var-decl name='aifsn' type-id='f9b06939' visibility='default' filepath='include/net/regulatory.h' line='209' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='158' column='1' id='f6cbf144'>
-        <data-member access='private'>
-          <var-decl name='graveyard_link' type-id='72f469ec' visibility='default' filepath='include/linux/key.h' line='159' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='serial_node' type-id='2a8a6332' visibility='default' filepath='include/linux/key.h' line='160' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='165' column='1' id='f9cbf5f9'>
-        <data-member access='private'>
-          <var-decl name='expiry' type-id='1afd27ac' visibility='default' filepath='include/linux/key.h' line='166' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='revoked_at' type-id='1afd27ac' visibility='default' filepath='include/linux/key.h' line='167' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='202' column='1' id='f8cbf461'>
-        <data-member access='private'>
-          <var-decl name='index_key' type-id='16ab8749' visibility='default' filepath='include/linux/key.h' line='203' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='' type-id='b8d2be63' visibility='default' filepath='include/linux/key.h' line='204' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__4' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='214' column='1' id='f3cbec7e'>
-        <data-member access='private'>
-          <var-decl name='payload' type-id='2888d74a' visibility='default' filepath='include/linux/key.h' line='215' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='' type-id='b9d2bff6' visibility='default' filepath='include/linux/key.h' line='216' column='1'/>
-        </data-member>
-      </union-decl>
       <class-decl name='ieee80211_ht_cap' size-in-bits='208' is-struct='yes' visibility='default' filepath='include/linux/ieee80211.h' line='1301' column='1' id='16e7829f'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='cap_info' type-id='23119536' visibility='default' filepath='include/linux/ieee80211.h' line='1302' column='1'/>
@@ -84687,7 +84945,7 @@
           <var-decl name='control' type-id='69bcaf1e' visibility='default' filepath='include/net/cfg80211.h' line='923' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='288' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='918' column='1' id='687f9689'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='288' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='918' column='1' id='687f968a'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='legacy' type-id='19c2251e' visibility='default' filepath='include/net/cfg80211.h' line='919' column='1'/>
         </data-member>
@@ -85563,7 +85821,7 @@
           <var-decl name='behaviour' type-id='10fd9108' visibility='default' filepath='include/net/cfg80211.h' line='2368' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='32'>
-          <var-decl name='param' type-id='f4cbee0e' visibility='default' filepath='include/net/cfg80211.h' line='2372' column='1'/>
+          <var-decl name='param' type-id='f8cbf462' visibility='default' filepath='include/net/cfg80211.h' line='2372' column='1'/>
         </data-member>
       </class-decl>
       <enum-decl name='nl80211_bss_select_attr' filepath='include/uapi/linux/nl80211.h' line='5822' column='1' id='10fd9108'>
@@ -85575,7 +85833,7 @@
         <enumerator name='__NL80211_BSS_SELECT_ATTR_AFTER_LAST' value='4'/>
         <enumerator name='NL80211_BSS_SELECT_ATTR_MAX' value='3'/>
       </enum-decl>
-      <union-decl name='__anonymous_union__7' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='2369' column='1' id='f4cbee0e'>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/cfg80211.h' line='2369' column='1' id='f8cbf462'>
         <data-member access='private'>
           <var-decl name='band_pref' type-id='3eaa0294' visibility='default' filepath='include/net/cfg80211.h' line='2370' column='1'/>
         </data-member>
@@ -86870,7 +87128,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/wireless/nl80211.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='157' column='1' id='f3cbec7f'>
+      <union-decl name='__anonymous_union__4' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='157' column='1' id='f3cbec7e'>
         <data-member access='private'>
           <var-decl name='skc_addrpair' type-id='d17a6eed' visibility='default' filepath='include/net/sock.h' line='158' column='1'/>
         </data-member>
@@ -86886,7 +87144,7 @@
           <var-decl name='skc_u16hashes' type-id='810b4a17' visibility='default' filepath='include/net/sock.h' line='166' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__6' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='169' column='1' id='f5cbefa6'>
+      <union-decl name='__anonymous_union__6' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='169' column='1' id='f5cbefa7'>
         <data-member access='private'>
           <var-decl name='skc_portpair' type-id='e7c2a649' visibility='default' filepath='include/net/sock.h' line='170' column='1'/>
         </data-member>
@@ -86902,7 +87160,7 @@
           <var-decl name='skc_portaddr_node' type-id='03a4a074' visibility='default' filepath='include/net/sock.h' line='186' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__8' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='ffcbff60'>
+      <union-decl name='__anonymous_union__8' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='203' column='1' id='ffcbff5f'>
         <data-member access='private'>
           <var-decl name='skc_flags' type-id='7359adad' visibility='default' filepath='include/net/sock.h' line='204' column='1'/>
         </data-member>
@@ -86921,7 +87179,7 @@
           <var-decl name='skc_nulls_node' type-id='5bd248e7' visibility='default' filepath='include/net/sock.h' line='217' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__10' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='223' column='1' id='9f0c8f1a'>
+      <union-decl name='__anonymous_union__10' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='223' column='1' id='9f0c8f1d'>
         <data-member access='private'>
           <var-decl name='skc_incoming_cpu' type-id='95e97e5e' visibility='default' filepath='include/net/sock.h' line='224' column='1'/>
         </data-member>
@@ -86932,7 +87190,7 @@
           <var-decl name='skc_tw_rcv_nxt' type-id='19c2251e' visibility='default' filepath='include/net/sock.h' line='226' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__11' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='232' column='1' id='a00c90ad'>
+      <union-decl name='__anonymous_union__11' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='232' column='1' id='a00c90b1'>
         <data-member access='private'>
           <var-decl name='skc_rxhash' type-id='19c2251e' visibility='default' filepath='include/net/sock.h' line='233' column='1'/>
         </data-member>
@@ -86943,7 +87201,7 @@
           <var-decl name='skc_tw_snd_nxt' type-id='19c2251e' visibility='default' filepath='include/net/sock.h' line='235' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__12' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='a10c923f'>
+      <union-decl name='__anonymous_union__12' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='398' column='1' id='a10c9240'>
         <data-member access='private'>
           <var-decl name='sk_wq' type-id='99f34ac1' visibility='default' filepath='include/net/sock.h' line='399' column='1'/>
         </data-member>
@@ -86951,7 +87209,7 @@
           <var-decl name='sk_wq_raw' type-id='99f34ac1' visibility='default' filepath='include/net/sock.h' line='400' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__13' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='414' column='1' id='a20c93d4'>
+      <union-decl name='__anonymous_union__13' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sock.h' line='414' column='1' id='a20c93d3'>
         <data-member access='private'>
           <var-decl name='sk_send_head' type-id='0fbf3cfd' visibility='default' filepath='include/net/sock.h' line='415' column='1'/>
         </data-member>
@@ -86959,7 +87217,7 @@
           <var-decl name='tcp_rtx_queue' type-id='dec44472' visibility='default' filepath='include/net/sock.h' line='416' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__14' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/cred.h' line='154' column='1' id='9b0c88ce'>
+      <union-decl name='__anonymous_union__14' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/cred.h' line='154' column='1' id='9b0c88cd'>
         <data-member access='private'>
           <var-decl name='non_rcu' type-id='95e97e5e' visibility='default' filepath='include/linux/cred.h' line='155' column='1'/>
         </data-member>
@@ -86983,7 +87241,7 @@
           <var-decl name='skb_mstamp' type-id='91ce1af9' visibility='default' filepath='include/linux/skbuff.h' line='691' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__17' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='701' column='1' id='9e0c8d86'>
+      <union-decl name='__anonymous_union__17' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='701' column='1' id='9e0c8d85'>
         <data-member access='private'>
           <var-decl name='' type-id='657f91c0' visibility='default' filepath='include/linux/skbuff.h' line='702' column='1'/>
         </data-member>
@@ -86991,7 +87249,7 @@
           <var-decl name='tcp_tsorted_anchor' type-id='72f469ec' visibility='default' filepath='include/linux/skbuff.h' line='706' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__18' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='269' column='1' id='970c8280'>
+      <union-decl name='__anonymous_union__18' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='269' column='1' id='970c827f'>
         <data-member access='private'>
           <var-decl name='ipv4_daddr' type-id='78a133c2' visibility='default' filepath='include/linux/skbuff.h' line='271' column='1'/>
         </data-member>
@@ -87018,7 +87276,7 @@
           <var-decl name='sender_cpu' type-id='f0981eeb' visibility='default' filepath='include/linux/skbuff.h' line='819' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__21' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='826' column='1' id='1013fcbf'>
+      <union-decl name='__anonymous_union__21' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='826' column='1' id='1013fcc0'>
         <data-member access='private'>
           <var-decl name='mark' type-id='3f1a6b60' visibility='default' filepath='include/linux/skbuff.h' line='827' column='1'/>
         </data-member>
@@ -87026,7 +87284,7 @@
           <var-decl name='reserved_tailroom' type-id='3f1a6b60' visibility='default' filepath='include/linux/skbuff.h' line='828' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__22' size-in-bits='16' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='831' column='1' id='13140178'>
+      <union-decl name='__anonymous_union__22' size-in-bits='16' is-anonymous='yes' visibility='default' filepath='include/linux/skbuff.h' line='831' column='1' id='13140179'>
         <data-member access='private'>
           <var-decl name='inner_protocol' type-id='84a5c3d4' visibility='default' filepath='include/linux/skbuff.h' line='832' column='1'/>
         </data-member>
@@ -87611,7 +87869,23 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/wireless/reg.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/dcache.h' line='107' column='1' id='f6cbf145'>
+      <union-decl name='__anonymous_union__1' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='640' column='1' id='f6cbf142'>
+        <data-member access='private'>
+          <var-decl name='i_nlink' type-id='20f5f452' visibility='default' filepath='include/linux/fs.h' line='641' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='__i_nlink' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='642' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__2' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='679' column='1' id='f9cbf5f8'>
+        <data-member access='private'>
+          <var-decl name='i_dentry' type-id='e151255a' visibility='default' filepath='include/linux/fs.h' line='680' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='i_rcu' type-id='e3d8ce29' visibility='default' filepath='include/linux/fs.h' line='681' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__4' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/dcache.h' line='107' column='1' id='f3cbec7f'>
         <data-member access='private'>
           <var-decl name='d_lru' type-id='72f469ec' visibility='default' filepath='include/linux/dcache.h' line='108' column='1'/>
         </data-member>
@@ -87619,7 +87893,7 @@
           <var-decl name='d_wait' type-id='03d48e96' visibility='default' filepath='include/linux/dcache.h' line='109' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/dcache.h' line='116' column='1' id='f9cbf5fa'>
+      <union-decl name='__anonymous_union__5' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/dcache.h' line='116' column='1' id='f2cbeaee'>
         <data-member access='private'>
           <var-decl name='d_alias' type-id='03a4a074' visibility='default' filepath='include/linux/dcache.h' line='117' column='1'/>
         </data-member>
@@ -87703,24 +87977,24 @@
           <var-decl name='seq_ctrl' type-id='23119536' visibility='default' filepath='include/linux/ieee80211.h' line='891' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='u' type-id='ac5ab5ba' visibility='default' filepath='include/linux/ieee80211.h' line='1044' column='1'/>
+          <var-decl name='u' type-id='ac5ab5bb' visibility='default' filepath='include/linux/ieee80211.h' line='1044' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='208' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='892' column='1' id='ac5ab5ba'>
+      <union-decl name='__anonymous_union__' size-in-bits='208' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='892' column='1' id='ac5ab5bb'>
         <data-member access='private'>
           <var-decl name='auth' type-id='e7f43f89' visibility='default' filepath='include/linux/ieee80211.h' line='899' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='deauth' type-id='687f968a' visibility='default' filepath='include/linux/ieee80211.h' line='902' column='1'/>
+          <var-decl name='deauth' type-id='687f968b' visibility='default' filepath='include/linux/ieee80211.h' line='902' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='assoc_req' type-id='657f91cd' visibility='default' filepath='include/linux/ieee80211.h' line='908' column='1'/>
+          <var-decl name='assoc_req' type-id='657f91cc' visibility='default' filepath='include/linux/ieee80211.h' line='908' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='assoc_resp' type-id='667f9359' visibility='default' filepath='include/linux/ieee80211.h' line='915' column='1'/>
+          <var-decl name='assoc_resp' type-id='667f935a' visibility='default' filepath='include/linux/ieee80211.h' line='915' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='reassoc_resp' type-id='667f9359' visibility='default' filepath='include/linux/ieee80211.h' line='915' column='1'/>
+          <var-decl name='reassoc_resp' type-id='667f935a' visibility='default' filepath='include/linux/ieee80211.h' line='915' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='reassoc_req' type-id='6b7f9b37' visibility='default' filepath='include/linux/ieee80211.h' line='922' column='1'/>
@@ -87755,12 +88029,12 @@
           <var-decl name='variable' type-id='29c3368c' visibility='default' filepath='include/linux/ieee80211.h' line='898' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='900' column='1' id='687f968a'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='900' column='1' id='687f968b'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='reason_code' type-id='23119536' visibility='default' filepath='include/linux/ieee80211.h' line='901' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='903' column='1' id='657f91cd'>
+      <class-decl name='__anonymous_struct__2' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='903' column='1' id='657f91cc'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='capab_info' type-id='23119536' visibility='default' filepath='include/linux/ieee80211.h' line='904' column='1'/>
         </data-member>
@@ -87771,7 +88045,7 @@
           <var-decl name='variable' type-id='29c3368c' visibility='default' filepath='include/linux/ieee80211.h' line='907' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__3' size-in-bits='48' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='909' column='1' id='667f9359'>
+      <class-decl name='__anonymous_struct__3' size-in-bits='48' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='909' column='1' id='667f935a'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='capab_info' type-id='23119536' visibility='default' filepath='include/linux/ieee80211.h' line='910' column='1'/>
         </data-member>
@@ -87842,15 +88116,15 @@
           <var-decl name='category' type-id='f9b06939' visibility='default' filepath='include/linux/ieee80211.h' line='947' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='8'>
-          <var-decl name='u' type-id='f6cbf146' visibility='default' filepath='include/linux/ieee80211.h' line='1042' column='1'/>
+          <var-decl name='u' type-id='f6cbf143' visibility='default' filepath='include/linux/ieee80211.h' line='1042' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='200' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='948' column='1' id='f6cbf146'>
+      <union-decl name='__anonymous_union__1' size-in-bits='200' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='948' column='1' id='f6cbf143'>
         <data-member access='private'>
-          <var-decl name='wme_action' type-id='c9d994ef' visibility='default' filepath='include/linux/ieee80211.h' line='954' column='1'/>
+          <var-decl name='wme_action' type-id='c9d994ee' visibility='default' filepath='include/linux/ieee80211.h' line='954' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='chan_switch' type-id='c8d9935a' visibility='default' filepath='include/linux/ieee80211.h' line='958' column='1'/>
+          <var-decl name='chan_switch' type-id='c8d9935b' visibility='default' filepath='include/linux/ieee80211.h' line='958' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='ext_chan_switch' type-id='cbd99814' visibility='default' filepath='include/linux/ieee80211.h' line='963' column='1'/>
@@ -87898,7 +88172,7 @@
           <var-decl name='ftm' type-id='bdd2c643' visibility='default' filepath='include/linux/ieee80211.h' line='1041' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__10' size-in-bits='24' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='949' column='1' id='c9d994ef'>
+      <class-decl name='__anonymous_struct__10' size-in-bits='24' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='949' column='1' id='c9d994ee'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='action_code' type-id='f9b06939' visibility='default' filepath='include/linux/ieee80211.h' line='950' column='1'/>
         </data-member>
@@ -87912,7 +88186,7 @@
           <var-decl name='variable' type-id='29c3368c' visibility='default' filepath='include/linux/ieee80211.h' line='953' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__11' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='955' column='1' id='c8d9935a'>
+      <class-decl name='__anonymous_struct__11' size-in-bits='8' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ieee80211.h' line='955' column='1' id='c8d9935b'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='action_code' type-id='f9b06939' visibility='default' filepath='include/linux/ieee80211.h' line='956' column='1'/>
         </data-member>
@@ -88308,39 +88582,6 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/wireless/util.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__1' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='640' column='1' id='f6cbf147'>
-        <data-member access='private'>
-          <var-decl name='i_nlink' type-id='20f5f452' visibility='default' filepath='include/linux/fs.h' line='641' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='__i_nlink' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='642' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='679' column='1' id='f9cbf5fb'>
-        <data-member access='private'>
-          <var-decl name='i_dentry' type-id='e151255a' visibility='default' filepath='include/linux/fs.h' line='680' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_rcu' type-id='e3d8ce29' visibility='default' filepath='include/linux/fs.h' line='681' column='1'/>
-        </data-member>
-      </union-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/fs.h' line='695' column='1' id='f8cbf462'>
-        <data-member access='private'>
-          <var-decl name='i_pipe' type-id='15d29710' visibility='default' filepath='include/linux/fs.h' line='696' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_bdev' type-id='b88dd945' visibility='default' filepath='include/linux/fs.h' line='697' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_cdev' type-id='3e6eb939' visibility='default' filepath='include/linux/fs.h' line='698' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_link' type-id='26a90f95' visibility='default' filepath='include/linux/fs.h' line='699' column='1'/>
-        </data-member>
-        <data-member access='private'>
-          <var-decl name='i_dir_seq' type-id='f0981eeb' visibility='default' filepath='include/linux/fs.h' line='700' column='1'/>
-        </data-member>
-      </union-decl>
       <pointer-type-def type-id='5ece574c' size-in-bits='64' id='185e765a'/>
       <function-decl name='ieee80211_channel_to_frequency' mangled-name='ieee80211_channel_to_frequency' filepath='net/wireless/util.c' line='71' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='ieee80211_channel_to_frequency'>
         <parameter type-id='95e97e5e' name='chan' filepath='net/wireless/util.c' line='71' column='1'/>
@@ -88366,7 +88607,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='net/wireless/wext-core.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netdevice.h' line='2026' column='1' id='ac5ab5bb'>
+      <union-decl name='__anonymous_union__' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/netdevice.h' line='2026' column='1' id='ac5ab5bc'>
         <data-member access='private'>
           <var-decl name='ml_priv' type-id='eaa32e2f' visibility='default' filepath='include/linux/netdevice.h' line='2027' column='1'/>
         </data-member>
@@ -89427,7 +89668,7 @@
           <var-decl name='put' type-id='e149b058' visibility='default' filepath='include/sound/control.h' line='56' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='tlv' type-id='9f0c8f1b' visibility='default' filepath='include/sound/control.h' line='60' column='1'/>
+          <var-decl name='tlv' type-id='9f0c8f1e' visibility='default' filepath='include/sound/control.h' line='60' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
           <var-decl name='private_value' type-id='7359adad' visibility='default' filepath='include/sound/control.h' line='61' column='1'/>
@@ -89454,7 +89695,7 @@
           <var-decl name='put' type-id='e149b058' visibility='default' filepath='include/sound/control.h' line='75' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='896'>
-          <var-decl name='tlv' type-id='f2cbeaee' visibility='default' filepath='include/sound/control.h' line='79' column='1'/>
+          <var-decl name='tlv' type-id='f2cbeaef' visibility='default' filepath='include/sound/control.h' line='79' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='960'>
           <var-decl name='private_value' type-id='7359adad' visibility='default' filepath='include/sound/control.h' line='80' column='1'/>
@@ -89499,7 +89740,7 @@
           <var-decl name='indirect' type-id='f0981eeb' visibility='default' filepath='include/uapi/sound/asound.h' line='942' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
-          <var-decl name='value' type-id='ac5ab5bc' visibility='default' filepath='include/uapi/sound/asound.h' line='961' column='1'/>
+          <var-decl name='value' type-id='ac5ab5bd' visibility='default' filepath='include/uapi/sound/asound.h' line='961' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='8768'>
           <var-decl name='tstamp' type-id='a9c79a1f' visibility='default' filepath='include/uapi/sound/asound.h' line='962' column='1'/>
@@ -89508,12 +89749,12 @@
           <var-decl name='reserved' type-id='b604cb74' visibility='default' filepath='include/uapi/sound/asound.h' line='963' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='8192' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='943' column='1' id='ac5ab5bc'>
+      <union-decl name='__anonymous_union__' size-in-bits='8192' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='943' column='1' id='ac5ab5bd'>
         <data-member access='private'>
-          <var-decl name='integer' type-id='f6cbf148' visibility='default' filepath='include/uapi/sound/asound.h' line='947' column='1'/>
+          <var-decl name='integer' type-id='f6cbf144' visibility='default' filepath='include/uapi/sound/asound.h' line='947' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='integer64' type-id='f9cbf5fc' visibility='default' filepath='include/uapi/sound/asound.h' line='951' column='1'/>
+          <var-decl name='integer64' type-id='f9cbf5f9' visibility='default' filepath='include/uapi/sound/asound.h' line='951' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='enumerated' type-id='f8cbf463' visibility='default' filepath='include/uapi/sound/asound.h' line='955' column='1'/>
@@ -89525,7 +89766,7 @@
           <var-decl name='iec958' type-id='22a78e66' visibility='default' filepath='include/uapi/sound/asound.h' line='960' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='8192' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='944' column='1' id='f6cbf148'>
+      <union-decl name='__anonymous_union__1' size-in-bits='8192' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='944' column='1' id='f6cbf144'>
         <data-member access='private'>
           <var-decl name='value' type-id='e1c8dbe3' visibility='default' filepath='include/uapi/sound/asound.h' line='945' column='1'/>
         </data-member>
@@ -89533,7 +89774,7 @@
           <var-decl name='value_ptr' type-id='3ccc2590' visibility='default' filepath='include/uapi/sound/asound.h' line='946' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='4096' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='948' column='1' id='f9cbf5fc'>
+      <union-decl name='__anonymous_union__2' size-in-bits='4096' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='948' column='1' id='f9cbf5f9'>
         <data-member access='private'>
           <var-decl name='value' type-id='1fd26250' visibility='default' filepath='include/uapi/sound/asound.h' line='949' column='1'/>
         </data-member>
@@ -89572,7 +89813,7 @@
         </data-member>
       </class-decl>
       <typedef-decl name='snd_kcontrol_put_t' type-id='84147814' filepath='include/sound/control.h' line='34' column='1' id='db992ec7'/>
-      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/sound/control.h' line='76' column='1' id='f2cbeaee'>
+      <union-decl name='__anonymous_union__5' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/sound/control.h' line='76' column='1' id='f2cbeaef'>
         <data-member access='private'>
           <var-decl name='c' type-id='bf7b4ec3' visibility='default' filepath='include/sound/control.h' line='77' column='1'/>
         </data-member>
@@ -89748,7 +89989,7 @@
           <var-decl name='content' type-id='8efea9e5' visibility='default' filepath='include/sound/info.h' line='79' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='c' type-id='f5cbefa7' visibility='default' filepath='include/sound/info.h' line='83' column='1'/>
+          <var-decl name='c' type-id='f5cbefa8' visibility='default' filepath='include/sound/info.h' line='83' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='384'>
           <var-decl name='parent' type-id='b9608bfd' visibility='default' filepath='include/sound/info.h' line='84' column='1'/>
@@ -89850,7 +90091,7 @@
           <var-decl name='owner' type-id='63eb2bf2' visibility='default' filepath='include/uapi/sound/asound.h' line='912' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='value' type-id='ffcbff61' visibility='default' filepath='include/uapi/sound/asound.h' line='932' column='1'/>
+          <var-decl name='value' type-id='ffcbff60' visibility='default' filepath='include/uapi/sound/asound.h' line='932' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='1664'>
           <var-decl name='dimen' type-id='fecbfdcb' visibility='default' filepath='include/uapi/sound/asound.h' line='936' column='1'/>
@@ -89860,15 +90101,15 @@
         </data-member>
       </class-decl>
       <typedef-decl name='snd_ctl_elem_type_t' type-id='95e97e5e' filepath='include/uapi/sound/asound.h' line='843' column='1' id='e31355f5'/>
-      <union-decl name='__anonymous_union__8' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='913' column='1' id='ffcbff61'>
+      <union-decl name='__anonymous_union__8' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='913' column='1' id='ffcbff60'>
         <data-member access='private'>
           <var-decl name='integer' type-id='e7f43f8b' visibility='default' filepath='include/uapi/sound/asound.h' line='918' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='integer64' type-id='687f968b' visibility='default' filepath='include/uapi/sound/asound.h' line='923' column='1'/>
+          <var-decl name='integer64' type-id='687f968c' visibility='default' filepath='include/uapi/sound/asound.h' line='923' column='1'/>
         </data-member>
         <data-member access='private'>
-          <var-decl name='enumerated' type-id='657f91ce' visibility='default' filepath='include/uapi/sound/asound.h' line='930' column='1'/>
+          <var-decl name='enumerated' type-id='657f91cd' visibility='default' filepath='include/uapi/sound/asound.h' line='930' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='reserved' type-id='6f10c3ff' visibility='default' filepath='include/uapi/sound/asound.h' line='931' column='1'/>
@@ -89885,7 +90126,7 @@
           <var-decl name='step' type-id='bd54fe1a' visibility='default' filepath='include/uapi/sound/asound.h' line='917' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='919' column='1' id='687f968b'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='919' column='1' id='687f968c'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='min' type-id='1eb56b1e' visibility='default' filepath='include/uapi/sound/asound.h' line='920' column='1'/>
         </data-member>
@@ -89896,7 +90137,7 @@
           <var-decl name='step' type-id='1eb56b1e' visibility='default' filepath='include/uapi/sound/asound.h' line='922' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='704' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='924' column='1' id='657f91ce'>
+      <class-decl name='__anonymous_struct__2' size-in-bits='704' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asound.h' line='924' column='1' id='657f91cd'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='items' type-id='f0981eeb' visibility='default' filepath='include/uapi/sound/asound.h' line='925' column='1'/>
         </data-member>
@@ -89921,7 +90162,7 @@
           <var-decl name='d_ptr' type-id='e9e550dd' visibility='default' filepath='include/uapi/sound/asound.h' line='935' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__10' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/sound/control.h' line='57' column='1' id='9f0c8f1b'>
+      <union-decl name='__anonymous_union__10' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/sound/control.h' line='57' column='1' id='9f0c8f1e'>
         <data-member access='private'>
           <var-decl name='c' type-id='bf7b4ec3' visibility='default' filepath='include/sound/control.h' line='58' column='1'/>
         </data-member>
@@ -92057,7 +92298,7 @@
           <var-decl name='ops' type-id='76e6e22f' visibility='default' filepath='include/sound/soc-topology.h' line='66' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='256'>
-          <var-decl name='' type-id='9b0c88cf' visibility='default' filepath='include/sound/soc-topology.h' line='67' column='1'/>
+          <var-decl name='' type-id='9b0c88ce' visibility='default' filepath='include/sound/soc-topology.h' line='67' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='448'>
           <var-decl name='private' type-id='eaa32e2f' visibility='default' filepath='include/sound/soc-topology.h' line='71' column='1'/>
@@ -92172,10 +92413,10 @@
           <var-decl name='type' type-id='2f162548' visibility='default' filepath='include/uapi/sound/asoc.h' line='253' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='64'>
-          <var-decl name='' type-id='a00c90ae' visibility='default' filepath='include/uapi/sound/asoc.h' line='254' column='1'/>
+          <var-decl name='' type-id='a00c90b2' visibility='default' filepath='include/uapi/sound/asoc.h' line='254' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__11' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asoc.h' line='254' column='1' id='a00c90ae'>
+      <union-decl name='__anonymous_union__11' size-in-bits='1024' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asoc.h' line='254' column='1' id='a00c90b2'>
         <data-member access='private'>
           <var-decl name='data' type-id='28645bde' visibility='default' filepath='include/uapi/sound/asoc.h' line='255' column='1'/>
         </data-member>
@@ -92257,10 +92498,10 @@
           <var-decl name='size' type-id='2f162548' visibility='default' filepath='include/uapi/sound/asoc.h' line='235' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='32'>
-          <var-decl name='' type-id='a10c9240' visibility='default' filepath='include/uapi/sound/asoc.h' line='236' column='1'/>
+          <var-decl name='' type-id='a10c9241' visibility='default' filepath='include/uapi/sound/asoc.h' line='236' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__12' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asoc.h' line='236' column='1' id='a10c9240'>
+      <union-decl name='__anonymous_union__12' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asoc.h' line='236' column='1' id='a10c9241'>
         <data-member access='private'>
           <var-decl name='data' type-id='e84913bd' visibility='default' filepath='include/uapi/sound/asoc.h' line='237' column='1'/>
         </data-member>
@@ -92279,10 +92520,10 @@
           <var-decl name='num_elems' type-id='2f162548' visibility='default' filepath='include/uapi/sound/asoc.h' line='221' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='96'>
-          <var-decl name='' type-id='a20c93d5' visibility='default' filepath='include/uapi/sound/asoc.h' line='222' column='1'/>
+          <var-decl name='' type-id='a20c93d4' visibility='default' filepath='include/uapi/sound/asoc.h' line='222' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__13' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asoc.h' line='222' column='1' id='a20c93d5'>
+      <union-decl name='__anonymous_union__13' is-anonymous='yes' visibility='default' filepath='include/uapi/sound/asoc.h' line='222' column='1' id='a20c93d4'>
         <data-member access='private'>
           <var-decl name='uuid' type-id='ebaaecd3' visibility='default' filepath='include/uapi/sound/asoc.h' line='223' column='1'/>
         </data-member>
@@ -92617,7 +92858,7 @@
           <var-decl name='put' type-id='f517dc88' visibility='default' filepath='include/sound/soc-topology.h' line='92' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__14' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/sound/soc-topology.h' line='67' column='1' id='9b0c88cf'>
+      <union-decl name='__anonymous_union__14' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/sound/soc-topology.h' line='67' column='1' id='9b0c88ce'>
         <data-member access='private'>
           <var-decl name='control' type-id='8a84fb32' visibility='default' filepath='include/sound/soc-topology.h' line='68' column='1'/>
         </data-member>
@@ -93714,7 +93955,7 @@
         <parameter type-id='95e97e5e'/>
         <return type-id='48b5725f'/>
       </function-type>
-      <union-decl name='__anonymous_union__6' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/sound/info.h' line='80' column='1' id='f5cbefa7'>
+      <union-decl name='__anonymous_union__6' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/sound/info.h' line='80' column='1' id='f5cbefa8'>
         <data-member access='private'>
           <var-decl name='text' type-id='cf87b76c' visibility='default' filepath='include/sound/info.h' line='81' column='1'/>
         </data-member>
@@ -93961,7 +94202,7 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='sound/soc/soc-devres.c' language='LANG_C89'>
-      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/sound/info.h' line='80' column='1' id='ac5ab5bd'>
+      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/sound/info.h' line='80' column='1' id='ac5ab5be'>
         <data-member access='private'>
           <var-decl name='text' type-id='cf87b76c' visibility='default' filepath='include/sound/info.h' line='81' column='1'/>
         </data-member>
@@ -93989,6 +94230,38 @@
       </function-decl>
     </abi-instr>
     <abi-instr version='1.0' address-size='64' path='sound/soc/soc-jack.c' language='LANG_C89'>
+      <union-decl name='__anonymous_union__2' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='158' column='1' id='f9cbf5fa'>
+        <data-member access='private'>
+          <var-decl name='graveyard_link' type-id='72f469ec' visibility='default' filepath='include/linux/key.h' line='159' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='serial_node' type-id='2a8a6332' visibility='default' filepath='include/linux/key.h' line='160' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__3' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='165' column='1' id='f8cbf464'>
+        <data-member access='private'>
+          <var-decl name='expiry' type-id='1afd27ac' visibility='default' filepath='include/linux/key.h' line='166' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='revoked_at' type-id='1afd27ac' visibility='default' filepath='include/linux/key.h' line='167' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__4' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='202' column='1' id='f3cbec81'>
+        <data-member access='private'>
+          <var-decl name='index_key' type-id='16ab8749' visibility='default' filepath='include/linux/key.h' line='203' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='' type-id='b8d2be63' visibility='default' filepath='include/linux/key.h' line='204' column='1'/>
+        </data-member>
+      </union-decl>
+      <union-decl name='__anonymous_union__5' size-in-bits='256' is-anonymous='yes' visibility='default' filepath='include/linux/key.h' line='214' column='1' id='f2cbeaf0'>
+        <data-member access='private'>
+          <var-decl name='payload' type-id='2888d74a' visibility='default' filepath='include/linux/key.h' line='215' column='1'/>
+        </data-member>
+        <data-member access='private'>
+          <var-decl name='' type-id='b9d2bff6' visibility='default' filepath='include/linux/key.h' line='216' column='1'/>
+        </data-member>
+      </union-decl>
       <class-decl name='snd_soc_jack_pin' size-in-bits='256' is-struct='yes' visibility='default' filepath='include/sound/soc.h' line='664' column='1' id='ad7e730a'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='list' type-id='72f469ec' visibility='default' filepath='include/sound/soc.h' line='665' column='1'/>
@@ -96095,54 +96368,6 @@
   </abi-corpus>
   <abi-corpus path='pinctrl-msm.ko' architecture='elf-arm-aarch64'>
     <abi-instr version='1.0' address-size='64' path='drivers/pinctrl/qcom/pinctrl-msm.c' language='LANG_C89'>
-      <class-decl name='pinctrl_dev' size-in-bits='1472' is-struct='yes' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='43' column='1' id='b5990c26'>
-        <data-member access='public' layout-offset-in-bits='0'>
-          <var-decl name='node' type-id='72f469ec' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='44' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='128'>
-          <var-decl name='desc' type-id='d4682107' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='45' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='pin_desc_tree' type-id='1c8dedcf' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='46' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='320'>
-          <var-decl name='pin_group_tree' type-id='1c8dedcf' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='48' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='448'>
-          <var-decl name='num_groups' type-id='f0981eeb' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='49' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='pin_function_tree' type-id='1c8dedcf' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='52' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='num_functions' type-id='f0981eeb' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='53' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='704'>
-          <var-decl name='gpio_ranges' type-id='72f469ec' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='55' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='832'>
-          <var-decl name='dev' type-id='fa0b179b' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='56' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='896'>
-          <var-decl name='owner' type-id='2730d015' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='57' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='960'>
-          <var-decl name='driver_data' type-id='eaa32e2f' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='58' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1024'>
-          <var-decl name='p' type-id='73ea90c5' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='59' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1088'>
-          <var-decl name='hog_default' type-id='f418ceb3' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='60' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1152'>
-          <var-decl name='hog_sleep' type-id='f418ceb3' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='61' column='1'/>
-        </data-member>
-        <data-member access='public' layout-offset-in-bits='1216'>
-          <var-decl name='mutex' type-id='925167dc' visibility='default' filepath='drivers/pinctrl/qcom/../core.h' line='62' column='1'/>
-        </data-member>
-      </class-decl>
-      <pointer-type-def type-id='b5990c26' size-in-bits='64' id='10216dc6'/>
       <function-decl name='device_property_read_u16_array' filepath='include/linux/property.h' line='41' column='1' visibility='default' binding='global' size-in-bits='64'>
         <parameter type-id='fa0b179b'/>
         <parameter type-id='80f4b756'/>
@@ -96375,7 +96600,7 @@
   </abi-corpus>
   <abi-corpus path='qrtr.ko' architecture='elf-arm-aarch64'>
     <abi-instr version='1.0' address-size='64' path='net/qrtr/qrtr.c' language='LANG_C89'>
-      <class-decl name='__anonymous_struct__1' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/uidgid.h' line='26' column='1' id='687f968c'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='32' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/uidgid.h' line='26' column='1' id='687f968d'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='val' type-id='2bb2b96f' visibility='default' filepath='include/linux/uidgid.h' line='27' column='1'/>
         </data-member>
@@ -96390,7 +96615,7 @@
         <return type-id='95e97e5e'/>
       </function-decl>
       <function-decl name='in_egroup_p' filepath='include/linux/cred.h' line='67' column='1' visibility='default' binding='global' size-in-bits='64'>
-        <parameter type-id='687f968c'/>
+        <parameter type-id='687f968d'/>
         <return type-id='95e97e5e'/>
       </function-decl>
     </abi-instr>
@@ -96768,7 +96993,7 @@
           <var-decl name='sent_count' type-id='95e97e5e' visibility='default' filepath='include/net/sctp/structs.h' line='566' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='' type-id='ac5ab5be' visibility='default' filepath='include/net/sctp/structs.h' line='568' column='1'/>
+          <var-decl name='' type-id='ac5ab5bf' visibility='default' filepath='include/net/sctp/structs.h' line='568' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='320'>
           <var-decl name='frag_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='580' column='1'/>
@@ -96777,13 +97002,13 @@
           <var-decl name='skb' type-id='0fbf3cfd' visibility='default' filepath='include/net/sctp/structs.h' line='583' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='' type-id='f6cbf149' visibility='default' filepath='include/net/sctp/structs.h' line='585' column='1'/>
+          <var-decl name='' type-id='f6cbf145' visibility='default' filepath='include/net/sctp/structs.h' line='585' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='576'>
           <var-decl name='param_hdr' type-id='87ea0749' visibility='default' filepath='include/net/sctp/structs.h' line='599' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='640'>
-          <var-decl name='subh' type-id='f9cbf5fd' visibility='default' filepath='include/net/sctp/structs.h' line='617' column='1'/>
+          <var-decl name='subh' type-id='f9cbf5fb' visibility='default' filepath='include/net/sctp/structs.h' line='617' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='704'>
           <var-decl name='chunk_end' type-id='474e5dcc' visibility='default' filepath='include/net/sctp/structs.h' line='619' column='1'/>
@@ -96861,7 +97086,7 @@
           <var-decl name='fast_retransmit' type-id='d315442e' visibility='default' filepath='include/net/sctp/structs.h' line='673' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='568' column='1' id='ac5ab5be'>
+      <union-decl name='__anonymous_union__' size-in-bits='128' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='568' column='1' id='ac5ab5bf'>
         <data-member access='private'>
           <var-decl name='transmitted_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='570' column='1'/>
         </data-member>
@@ -96869,7 +97094,7 @@
           <var-decl name='stream_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='572' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='585' column='1' id='f6cbf149'>
+      <union-decl name='__anonymous_union__1' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='585' column='1' id='f6cbf145'>
         <data-member access='private'>
           <var-decl name='head_skb' type-id='0fbf3cfd' visibility='default' filepath='include/net/sctp/structs.h' line='587' column='1'/>
         </data-member>
@@ -97072,7 +97297,7 @@
           <var-decl name='crr_id' type-id='78a133c2' visibility='default' filepath='include/linux/sctp.h' line='671' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='600' column='1' id='f9cbf5fd'>
+      <union-decl name='__anonymous_union__2' size-in-bits='64' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='600' column='1' id='f9cbf5fb'>
         <data-member access='private'>
           <var-decl name='v' type-id='474e5dcc' visibility='default' filepath='include/net/sctp/structs.h' line='601' column='1'/>
         </data-member>
@@ -97414,13 +97639,13 @@
           <var-decl name='mid' type-id='78a133c2' visibility='default' filepath='include/linux/sctp.h' line='251' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='96'>
-          <var-decl name='' type-id='f8cbf464' visibility='default' filepath='include/linux/sctp.h' line='252' column='1'/>
+          <var-decl name='' type-id='f8cbf465' visibility='default' filepath='include/linux/sctp.h' line='252' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='128'>
           <var-decl name='payload' type-id='167619f6' visibility='default' filepath='include/linux/sctp.h' line='256' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__3' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/sctp.h' line='252' column='1' id='f8cbf464'>
+      <union-decl name='__anonymous_union__3' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/linux/sctp.h' line='252' column='1' id='f8cbf465'>
         <data-member access='private'>
           <var-decl name='ppid' type-id='3f1a6b60' visibility='default' filepath='include/linux/sctp.h' line='253' column='1'/>
         </data-member>
@@ -98013,7 +98238,7 @@
           <var-decl name='send_ready' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='957' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5440'>
-          <var-decl name='cacc' type-id='657f91cf' visibility='default' filepath='include/net/sctp/structs.h' line='986' column='1'/>
+          <var-decl name='cacc' type-id='657f91ce' visibility='default' filepath='include/net/sctp/structs.h' line='986' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='5504'>
           <var-decl name='hb_nonce' type-id='d3130597' visibility='default' filepath='include/net/sctp/structs.h' line='989' column='1'/>
@@ -98375,7 +98600,7 @@
           <var-decl name='mcast_oif' type-id='95e97e5e' visibility='default' filepath='include/linux/ipv6.h' line='247' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='608'>
-          <var-decl name='rxopt' type-id='f3cbec81' visibility='default' filepath='include/linux/ipv6.h' line='270' column='1'/>
+          <var-decl name='rxopt' type-id='f3cbec82' visibility='default' filepath='include/linux/ipv6.h' line='270' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='15'>
           <var-decl name='recverr' type-id='d315442e' visibility='default' filepath='include/linux/ipv6.h' line='273' column='1'/>
@@ -98449,15 +98674,15 @@
           <var-decl name='ipi6_ifindex' type-id='95e97e5e' visibility='default' filepath='include/uapi/linux/ipv6.h' line='23' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__4' size-in-bits='16' is-anonymous='yes' visibility='default' filepath='include/linux/ipv6.h' line='250' column='1' id='f3cbec81'>
+      <union-decl name='__anonymous_union__4' size-in-bits='16' is-anonymous='yes' visibility='default' filepath='include/linux/ipv6.h' line='250' column='1' id='f3cbec82'>
         <data-member access='private'>
-          <var-decl name='bits' type-id='687f968d' visibility='default' filepath='include/linux/ipv6.h' line='268' column='1'/>
+          <var-decl name='bits' type-id='687f968e' visibility='default' filepath='include/linux/ipv6.h' line='268' column='1'/>
         </data-member>
         <data-member access='private'>
           <var-decl name='all' type-id='d315442e' visibility='default' filepath='include/linux/ipv6.h' line='269' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__1' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ipv6.h' line='251' column='1' id='687f968d'>
+      <class-decl name='__anonymous_struct__1' size-in-bits='16' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/linux/ipv6.h' line='251' column='1' id='687f968e'>
         <data-member access='public' layout-offset-in-bits='15'>
           <var-decl name='srcrt' type-id='d315442e' visibility='default' filepath='include/linux/ipv6.h' line='252' column='1'/>
         </data-member>
@@ -98733,10 +98958,10 @@
           <var-decl name='rmem_len' type-id='f0981eeb' visibility='default' filepath='include/net/sctp/ulpevent.h' line='56' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='160'>
-          <var-decl name='' type-id='f2cbeaef' visibility='default' filepath='include/net/sctp/ulpevent.h' line='57' column='1'/>
+          <var-decl name='' type-id='f2cbeaf1' visibility='default' filepath='include/net/sctp/ulpevent.h' line='57' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='192'>
-          <var-decl name='' type-id='f5cbefa8' visibility='default' filepath='include/net/sctp/ulpevent.h' line='61' column='1'/>
+          <var-decl name='' type-id='f5cbefa9' visibility='default' filepath='include/net/sctp/ulpevent.h' line='61' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='224'>
           <var-decl name='tsn' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/ulpevent.h' line='65' column='1'/>
@@ -98754,7 +98979,7 @@
           <var-decl name='msg_flags' type-id='d315442e' visibility='default' filepath='include/net/sctp/ulpevent.h' line='69' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__5' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sctp/ulpevent.h' line='57' column='1' id='f2cbeaef'>
+      <union-decl name='__anonymous_union__5' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sctp/ulpevent.h' line='57' column='1' id='f2cbeaf1'>
         <data-member access='private'>
           <var-decl name='mid' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/ulpevent.h' line='58' column='1'/>
         </data-member>
@@ -98762,7 +98987,7 @@
           <var-decl name='ssn' type-id='d315442e' visibility='default' filepath='include/net/sctp/ulpevent.h' line='59' column='1'/>
         </data-member>
       </union-decl>
-      <union-decl name='__anonymous_union__6' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sctp/ulpevent.h' line='61' column='1' id='f5cbefa8'>
+      <union-decl name='__anonymous_union__6' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='include/net/sctp/ulpevent.h' line='61' column='1' id='f5cbefa9'>
         <data-member access='private'>
           <var-decl name='ppid' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/ulpevent.h' line='62' column='1'/>
         </data-member>
@@ -98957,7 +99182,7 @@
           <var-decl name='ipfragok' type-id='f9b06939' visibility='default' filepath='include/net/sctp/structs.h' line='744' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__anonymous_struct__2' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='967' column='1' id='657f91cf'>
+      <class-decl name='__anonymous_struct__2' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='967' column='1' id='657f91ce'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='next_tsn_at_change' type-id='3f1a6b60' visibility='default' filepath='include/net/sctp/structs.h' line='971' column='1'/>
         </data-member>
@@ -99081,22 +99306,22 @@
           <var-decl name='outq' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1410' column='1'/>
         </data-member>
         <data-member access='public' layout-offset-in-bits='512'>
-          <var-decl name='' type-id='ffcbff62' visibility='default' filepath='include/net/sctp/structs.h' line='1411' column='1'/>
+          <var-decl name='' type-id='ffcbff61' visibility='default' filepath='include/net/sctp/structs.h' line='1411' column='1'/>
         </data-member>
       </class-decl>
-      <union-decl name='__anonymous_union__8' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1411' column='1' id='ffcbff62'>
+      <union-decl name='__anonymous_union__8' size-in-bits='192' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1411' column='1' id='ffcbff61'>
         <member-type access='private'>
-          <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1418' column='1' id='93327075'>
+          <class-decl name='__anonymous_struct__' size-in-bits='128' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1418' column='1' id='93327076'>
             <data-member access='public' layout-offset-in-bits='0'>
               <var-decl name='rr_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1419' column='1'/>
             </data-member>
           </class-decl>
         </member-type>
         <data-member access='private'>
-          <var-decl name='' type-id='667f935a' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1'/>
+          <var-decl name='' type-id='667f935b' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1'/>
         </data-member>
       </union-decl>
-      <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1' id='667f935a'>
+      <class-decl name='__anonymous_struct__3' size-in-bits='192' is-struct='yes' is-anonymous='yes' visibility='default' filepath='include/net/sctp/structs.h' line='1412' column='1' id='667f935b'>
         <data-member access='public' layout-offset-in-bits='0'>
           <var-decl name='prio_list' type-id='72f469ec' visibility='default' filepath='include/net/sctp/structs.h' line='1414' column='1'/>
         </data-member>
@@ -99811,6 +100036,10 @@
     <abi-instr version='1.0' address-size='64' path='drivers/thermal/tsens2xxx.c' language='LANG_C89'>
     </abi-instr>
   </abi-corpus>
+  <abi-corpus path='touch_offload.ko' architecture='elf-arm-aarch64'>
+    <abi-instr version='1.0' address-size='64' path='drivers/input/touchscreen/touch_offload.c' language='LANG_C89'>
+    </abi-instr>
+  </abi-corpus>
   <abi-corpus path='touchscreen_tbn.ko' architecture='elf-arm-aarch64'>
     <abi-instr version='1.0' address-size='64' path='drivers/input/touchscreen/touch_bus_negotiator.c' language='LANG_C89'>
     </abi-instr>
diff --git a/arch/arm64/boot/dts/google/lito-redbull-battery.dtsi b/arch/arm64/boot/dts/google/lito-redbull-battery.dtsi
index af93b4d..a26d026 100644
--- a/arch/arm64/boot/dts/google/lito-redbull-battery.dtsi
+++ b/arch/arm64/boot/dts/google/lito-redbull-battery.dtsi
@@ -165,7 +165,7 @@
 		google,rl_soc-limits = <20 30 40 50 60 70 90 100>;
 		google,rl_soc-rates =  <25 26 27 28 29 28 27 22>;
 		/* rest charging */
-		google,chg-rest-rate = <5>;
+		google,chg-rest-rate = <8>;
 		google,chg-rest-soc = <80>;
 
 		/* battery history */
diff --git a/arch/arm64/boot/dts/google/lito-redbull-memory.dtsi b/arch/arm64/boot/dts/google/lito-redbull-memory.dtsi
index 8e39198..35d35d3 100644
--- a/arch/arm64/boot/dts/google/lito-redbull-memory.dtsi
+++ b/arch/arm64/boot/dts/google/lito-redbull-memory.dtsi
@@ -78,6 +78,12 @@
 		reg = <0 0xB8641000 0 0x1000>;
 	};
 
+	ramdumplog_mem: ramdumplog_region@0xb8642000 {
+		compatible = "removed-dma-pool";
+		no-map;
+		reg = <0 0xb8642000 0 0x10000>;
+	};
+
 	kregistry_mem: kregistry_mem@C8000000 {
 		compatible = "removed-dma-pool";
 		no-map;
diff --git a/arch/arm64/configs/redbull_defconfig b/arch/arm64/configs/redbull_defconfig
index e288f26..5cf84b0 100644
--- a/arch/arm64/configs/redbull_defconfig
+++ b/arch/arm64/configs/redbull_defconfig
@@ -342,6 +342,7 @@
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_CORE_v27=y
 CONFIG_TOUCHSCREEN_TBN=m
+CONFIG_TOUCHSCREEN_OFFLOAD=m
 CONFIG_TOUCHSCREEN_HEATMAP=m
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_QPNP_POWER_ON=m
diff --git a/drivers/Kconfig b/drivers/Kconfig
index b37e4b5..e0866ed 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -199,6 +199,8 @@
 
 source "drivers/android/Kconfig"
 
+source "drivers/gpu/trace/Kconfig"
+
 source "drivers/nvdimm/Kconfig"
 
 source "drivers/dax/Kconfig"
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 2fa27fa..a201bbad 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -463,9 +463,19 @@
  *                        (protected by binder_deferred_lock)
  * @deferred_work:        bitmap of deferred work to perform
  *                        (protected by binder_deferred_lock)
+ * @outstanding_txns:     number of transactions to be transmitted before
+ *                        processes in freeze_wait are woken up
+ *                        (protected by @inner_lock)
  * @is_dead:              process is dead and awaiting free
  *                        when outstanding transactions are cleaned up
  *                        (protected by @inner_lock)
+ * @sync_recv:            process received sync transactions since last frozen
+ *                        (protected by @inner_lock)
+ * @async_recv:           process received async transactions since last frozen
+ *                        (protected by @inner_lock)
+ * @freeze_wait:          waitqueue of processes waiting for all outstanding
+ *                        transactions to be processed
+ *                        (protected by @inner_lock)
  * @todo:                 list of work for this process
  *                        (protected by @inner_lock)
  * @stats:                per-process binder statistics
@@ -508,7 +518,12 @@
 	struct mutex files_lock;
 	struct hlist_node deferred_work_node;
 	int deferred_work;
+	int outstanding_txns;
 	bool is_dead;
+	bool is_frozen;
+	bool sync_recv;
+	bool async_recv;
+	wait_queue_head_t freeze_wait;
 
 	struct list_head todo;
 	struct binder_stats stats;
@@ -2069,6 +2084,10 @@
 
 	if (target_proc) {
 		binder_inner_proc_lock(target_proc);
+		target_proc->outstanding_txns--;
+		BUG_ON(target_proc->outstanding_txns < 0);
+		if (!target_proc->outstanding_txns && target_proc->is_frozen)
+			wake_up_interruptible_all(&target_proc->freeze_wait);
 		if (t->buffer)
 			t->buffer->transaction = NULL;
 		binder_inner_proc_unlock(target_proc);
@@ -2819,10 +2838,11 @@
  * If the @thread parameter is not NULL, the transaction is always queued
  * to the waitlist of that specific thread.
  *
- * Return:	true if the transactions was successfully queued
- *		false if the target process or thread is dead
+ * Return:	0 if the transaction was successfully queued
+ *		BR_DEAD_REPLY if the target process or thread is dead
+ *		BR_FROZEN_REPLY if the target process or thread is frozen
  */
-static bool binder_proc_transaction(struct binder_transaction *t,
+static int binder_proc_transaction(struct binder_transaction *t,
 				    struct binder_proc *proc,
 				    struct binder_thread *thread)
 {
@@ -2846,11 +2866,18 @@
 	}
 
 	binder_inner_proc_lock(proc);
+	if (proc->is_frozen) {
+		proc->sync_recv |= !oneway;
+		proc->async_recv |= oneway;
+	}
 
-	if (proc->is_dead || (thread && thread->is_dead)) {
+	if ((proc->is_frozen && !oneway) || proc->is_dead ||
+			(thread && thread->is_dead)) {
+		bool proc_is_dead = proc->is_dead
+			|| (thread && thread->is_dead);
 		binder_inner_proc_unlock(proc);
 		binder_node_unlock(node);
-		return false;
+		return proc_is_dead ? BR_DEAD_REPLY : BR_FROZEN_REPLY;
 	}
 
 	if (!thread && !pending_async)
@@ -2869,10 +2896,11 @@
 	if (!pending_async)
 		binder_wakeup_thread_ilocked(proc, thread, !oneway /* sync */);
 
+	proc->outstanding_txns++;
 	binder_inner_proc_unlock(proc);
 	binder_node_unlock(node);
 
-	return true;
+	return 0;
 }
 
 /**
@@ -3217,7 +3245,7 @@
 
 	t->buffer = binder_alloc_new_buf(&target_proc->alloc, tr->data_size,
 		tr->offsets_size, extra_buffers_size,
-		!reply && (t->flags & TF_ONE_WAY));
+		!reply && (t->flags & TF_ONE_WAY), current->tgid);
 	if (IS_ERR(t->buffer)) {
 		/*
 		 * -ESRCH indicates VMA cleared. The target is dying.
@@ -3490,13 +3518,16 @@
 	if (reply) {
 		binder_enqueue_thread_work(thread, tcomplete);
 		binder_inner_proc_lock(target_proc);
-		if (target_thread->is_dead) {
+		if (target_thread->is_dead || target_proc->is_frozen) {
+			return_error = target_thread->is_dead ?
+				BR_DEAD_REPLY : BR_FROZEN_REPLY;
 			binder_inner_proc_unlock(target_proc);
 			goto err_dead_proc_or_thread;
 		}
 		BUG_ON(t->buffer->async_transaction != 0);
 		binder_pop_transaction_ilocked(target_thread, in_reply_to);
 		binder_enqueue_thread_work_ilocked(target_thread, &t->work);
+		target_proc->outstanding_txns++;
 		binder_inner_proc_unlock(target_proc);
 		wake_up_interruptible_sync(&target_thread->wait);
 		binder_restore_priority(current, in_reply_to->saved_priority);
@@ -3516,7 +3547,9 @@
 		t->from_parent = thread->transaction_stack;
 		thread->transaction_stack = t;
 		binder_inner_proc_unlock(proc);
-		if (!binder_proc_transaction(t, target_proc, target_thread)) {
+		return_error = binder_proc_transaction(t,
+				target_proc, target_thread);
+		if (return_error) {
 			binder_inner_proc_lock(proc);
 			binder_pop_transaction_ilocked(thread, t);
 			binder_inner_proc_unlock(proc);
@@ -3526,7 +3559,8 @@
 		BUG_ON(target_node == NULL);
 		BUG_ON(t->buffer->async_transaction != 1);
 		binder_enqueue_thread_work(thread, tcomplete);
-		if (!binder_proc_transaction(t, target_proc, NULL))
+		return_error = binder_proc_transaction(t, target_proc, NULL);
+		if (return_error)
 			goto err_dead_proc_or_thread;
 	}
 	if (target_thread)
@@ -3543,7 +3577,6 @@
 	return;
 
 err_dead_proc_or_thread:
-	return_error = BR_DEAD_REPLY;
 	return_error_line = __LINE__;
 	binder_dequeue_work(proc, tcomplete);
 err_translate_failed:
@@ -4149,7 +4182,7 @@
 		binder_inner_proc_lock(proc);
 		list_del_init(&thread->waiting_thread_node);
 		if (signal_pending(current)) {
-			ret = -ERESTARTSYS;
+			ret = -EINTR;
 			break;
 		}
 	}
@@ -4653,6 +4686,7 @@
 
 	BUG_ON(!list_empty(&proc->todo));
 	BUG_ON(!list_empty(&proc->delivered_death));
+	WARN_ON(proc->outstanding_txns);
 	device = container_of(proc->context, struct binder_device, context);
 	if (refcount_dec_and_test(&device->ref)) {
 		kfree(proc->context->name);
@@ -4713,6 +4747,7 @@
 			     (t->to_thread == thread) ? "in" : "out");
 
 		if (t->to_thread == thread) {
+			t->to_proc->outstanding_txns--;
 			t->to_proc = NULL;
 			t->to_thread = NULL;
 			if (t->buffer) {
@@ -4959,6 +4994,37 @@
 	return 0;
 }
 
+static int binder_ioctl_get_freezer_info(
+				struct binder_frozen_status_info *info)
+{
+	struct binder_proc *target_proc;
+	bool found = false;
+
+	mutex_lock(&binder_procs_lock);
+	hlist_for_each_entry(target_proc, &binder_procs, proc_node) {
+		if (target_proc->pid == info->pid) {
+			found = true;
+			binder_inner_proc_lock(target_proc);
+			target_proc->tmp_ref++;
+			binder_inner_proc_unlock(target_proc);
+			break;
+		}
+	}
+	mutex_unlock(&binder_procs_lock);
+
+	if (!found)
+		return -EINVAL;
+
+	binder_inner_proc_lock(target_proc);
+	info->sync_recv = target_proc->sync_recv;
+	info->async_recv = target_proc->async_recv;
+	binder_inner_proc_unlock(target_proc);
+
+	binder_proc_dec_tmpref(target_proc);
+
+	return 0;
+}
+
 static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 {
 	int ret;
@@ -5077,6 +5143,85 @@
 		}
 		break;
 	}
+	case BINDER_FREEZE: {
+		struct binder_freeze_info info;
+		struct binder_proc *target_proc;
+		bool found = false;
+
+		if (copy_from_user(&info, ubuf, sizeof(info))) {
+			ret = -EFAULT;
+			goto err;
+		}
+		mutex_lock(&binder_procs_lock);
+		hlist_for_each_entry(target_proc, &binder_procs, proc_node) {
+			if (target_proc->pid == info.pid) {
+				found = true;
+				binder_inner_proc_lock(target_proc);
+				target_proc->tmp_ref++;
+				binder_inner_proc_unlock(target_proc);
+				break;
+			}
+		}
+		mutex_unlock(&binder_procs_lock);
+		if (!found) {
+			ret = -EINVAL;
+			goto err;
+		}
+		if (!info.enable) {
+			binder_inner_proc_lock(target_proc);
+			target_proc->sync_recv = false;
+			target_proc->async_recv = false;
+			target_proc->is_frozen = false;
+			binder_inner_proc_unlock(target_proc);
+			binder_proc_dec_tmpref(target_proc);
+			break;
+		}
+		/*
+		 * Freezing the target. Prevent new transactions by
+		 * setting frozen state. If timeout specified, wait
+		 * for transactions to drain.
+		 */
+		binder_inner_proc_lock(target_proc);
+		target_proc->sync_recv = false;
+		target_proc->async_recv = false;
+		target_proc->is_frozen = true;
+		binder_inner_proc_unlock(target_proc);
+		if (info.timeout_ms > 0)
+			ret = wait_event_interruptible_timeout(
+				target_proc->freeze_wait,
+				(!target_proc->outstanding_txns),
+				msecs_to_jiffies(info.timeout_ms));
+		if (!ret && target_proc->outstanding_txns) {
+			ret = -EAGAIN;
+		}
+		if (ret < 0) {
+			binder_inner_proc_lock(target_proc);
+			target_proc->is_frozen = false;
+			binder_inner_proc_unlock(target_proc);
+		}
+		binder_proc_dec_tmpref(target_proc);
+		if (ret < 0)
+			goto err;
+		break;
+	}
+	case BINDER_GET_FROZEN_INFO: {
+		struct binder_frozen_status_info info;
+
+		if (copy_from_user(&info, ubuf, sizeof(info))) {
+			ret = -EFAULT;
+			goto err;
+		}
+
+		ret = binder_ioctl_get_freezer_info(&info);
+		if (ret < 0)
+			goto err;
+
+		if (copy_to_user(ubuf, &info, sizeof(info))) {
+			ret = -EFAULT;
+			goto err;
+		}
+		break;
+	}
 	default:
 		ret = -EINVAL;
 		goto err;
@@ -5190,6 +5335,7 @@
 	proc->tsk = current->group_leader;
 	mutex_init(&proc->files_lock);
 	INIT_LIST_HEAD(&proc->todo);
+	init_waitqueue_head(&proc->freeze_wait);
 	if (binder_supported_policy(current->policy)) {
 		proc->default_priority.sched_policy = current->policy;
 		proc->default_priority.prio = current->normal_prio;
@@ -5411,6 +5557,9 @@
 	proc->tmp_ref++;
 
 	proc->is_dead = true;
+	proc->is_frozen = false;
+	proc->sync_recv = false;
+	proc->async_recv = false;
 	threads = 0;
 	active_transactions = 0;
 	while ((n = rb_first(&proc->threads))) {
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c
index deb3797..ce98dc2 100644
--- a/drivers/android/binder_alloc.c
+++ b/drivers/android/binder_alloc.c
@@ -347,12 +347,50 @@
 	return vma;
 }
 
+static void debug_low_async_space_locked(struct binder_alloc *alloc, int pid)
+{
+	/*
+	 * Find the amount and size of buffers allocated by the current caller;
+	 * The idea is that once we cross the threshold, whoever is responsible
+	 * for the low async space is likely to try to send another async txn,
+	 * and at some point we'll catch them in the act. This is more efficient
+	 * than keeping a map per pid.
+	 */
+	struct rb_node *n = alloc->free_buffers.rb_node;
+	struct binder_buffer *buffer;
+	size_t total_alloc_size = 0;
+	size_t num_buffers = 0;
+
+	for (n = rb_first(&alloc->allocated_buffers); n != NULL;
+		 n = rb_next(n)) {
+		buffer = rb_entry(n, struct binder_buffer, rb_node);
+		if (buffer->pid != pid)
+			continue;
+		if (!buffer->async_transaction)
+			continue;
+		total_alloc_size += binder_alloc_buffer_size(alloc, buffer)
+			+ sizeof(struct binder_buffer);
+		num_buffers++;
+	}
+
+	/*
+	 * Warn if this pid has more than 50 transactions, or more than 50% of
+	 * async space (which is 25% of total buffer size).
+	 */
+	if (num_buffers > 50 || total_alloc_size > alloc->buffer_size / 4) {
+		binder_alloc_debug(BINDER_DEBUG_USER_ERROR,
+			     "%d: pid %d spamming oneway? %zd buffers allocated for a total size of %zd\n",
+			      alloc->pid, pid, num_buffers, total_alloc_size);
+	}
+}
+
 static struct binder_buffer *binder_alloc_new_buf_locked(
 				struct binder_alloc *alloc,
 				size_t data_size,
 				size_t offsets_size,
 				size_t extra_buffers_size,
-				int is_async)
+				int is_async,
+				int pid)
 {
 	struct rb_node *n = alloc->free_buffers.rb_node;
 	struct binder_buffer *buffer;
@@ -495,11 +533,20 @@
 	buffer->offsets_size = offsets_size;
 	buffer->async_transaction = is_async;
 	buffer->extra_buffers_size = extra_buffers_size;
+	buffer->pid = pid;
 	if (is_async) {
 		alloc->free_async_space -= size + sizeof(struct binder_buffer);
 		binder_alloc_debug(BINDER_DEBUG_BUFFER_ALLOC_ASYNC,
 			     "%d: binder_alloc_buf size %zd async free %zd\n",
 			      alloc->pid, size, alloc->free_async_space);
+		if (alloc->free_async_space < alloc->buffer_size / 10) {
+			/*
+			 * Start detecting spammers once we have less than 20%
+			 * of async space left (which is less than 10% of total
+			 * buffer size).
+			 */
+			debug_low_async_space_locked(alloc, pid);
+		}
 	}
 	return buffer;
 
@@ -517,6 +564,7 @@
  * @offsets_size:       user specified buffer offset
  * @extra_buffers_size: size of extra space for meta-data (eg, security context)
  * @is_async:           buffer for async transaction
+ * @pid:				pid to attribute allocation to (used for debugging)
  *
  * Allocate a new buffer given the requested sizes. Returns
  * the kernel version of the buffer pointer. The size allocated
@@ -529,13 +577,14 @@
 					   size_t data_size,
 					   size_t offsets_size,
 					   size_t extra_buffers_size,
-					   int is_async)
+					   int is_async,
+					   int pid)
 {
 	struct binder_buffer *buffer;
 
 	mutex_lock(&alloc->mutex);
 	buffer = binder_alloc_new_buf_locked(alloc, data_size, offsets_size,
-					     extra_buffers_size, is_async);
+					     extra_buffers_size, is_async, pid);
 	mutex_unlock(&alloc->mutex);
 	return buffer;
 }
diff --git a/drivers/android/binder_alloc.h b/drivers/android/binder_alloc.h
index b60d161..3daa3e2 100644
--- a/drivers/android/binder_alloc.h
+++ b/drivers/android/binder_alloc.h
@@ -41,6 +41,7 @@
  * @offsets_size:       size of array of offsets
  * @extra_buffers_size: size of space for other objects (like sg lists)
  * @user_data:          user pointer to base of buffer space
+ * @pid:                pid to attribute the buffer to (caller)
  *
  * Bookkeeping structure for binder transaction buffers
  */
@@ -60,6 +61,7 @@
 	size_t offsets_size;
 	size_t extra_buffers_size;
 	void __user *user_data;
+	int    pid;
 };
 
 /**
@@ -126,7 +128,8 @@
 						  size_t data_size,
 						  size_t offsets_size,
 						  size_t extra_buffers_size,
-						  int is_async);
+						  int is_async,
+						  int pid);
 extern void binder_alloc_init(struct binder_alloc *alloc);
 extern int binder_alloc_shrinker_init(void);
 extern void binder_alloc_vma_close(struct binder_alloc *alloc);
diff --git a/drivers/android/binder_alloc_selftest.c b/drivers/android/binder_alloc_selftest.c
index b727089..c839c49 100644
--- a/drivers/android/binder_alloc_selftest.c
+++ b/drivers/android/binder_alloc_selftest.c
@@ -128,7 +128,7 @@
 	int i;
 
 	for (i = 0; i < BUFFER_NUM; i++) {
-		buffers[i] = binder_alloc_new_buf(alloc, sizes[i], 0, 0, 0);
+		buffers[i] = binder_alloc_new_buf(alloc, sizes[i], 0, 0, 0, 0);
 		if (IS_ERR(buffers[i]) ||
 		    !check_buffer_pages_allocated(alloc, buffers[i],
 						  sizes[i])) {
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 1b37534..aab5853 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -227,24 +227,35 @@
 		blk_mq_unfreeze_queue(lo->lo_queue);
 }
 
+/**
+ * loop_validate_block_size() - validates the passed in block size
+ * @bsize: size to validate
+ */
 static int
-figure_loop_size(struct loop_device *lo, loff_t offset, loff_t sizelimit)
+loop_validate_block_size(unsigned short bsize)
 {
-	loff_t size = get_size(offset, sizelimit, lo->lo_backing_file);
-	sector_t x = (sector_t)size;
+	if (bsize < 512 || bsize > PAGE_SIZE || !is_power_of_2(bsize))
+		return -EINVAL;
+
+	return 0;
+}
+
+/**
+ * loop_set_size() - sets device size and notifies userspace
+ * @lo: struct loop_device to set the size for
+ * @size: new size of the loop device
+ *
+ * Callers must validate that the size passed into this function fits into
+ * a sector_t, eg using loop_validate_size()
+ */
+static void loop_set_size(struct loop_device *lo, loff_t size)
+{
 	struct block_device *bdev = lo->lo_device;
 
-	if (unlikely((loff_t)x != size))
-		return -EFBIG;
-	if (lo->lo_offset != offset)
-		lo->lo_offset = offset;
-	if (lo->lo_sizelimit != sizelimit)
-		lo->lo_sizelimit = sizelimit;
-	set_capacity(lo->lo_disk, x);
-	bd_set_size(bdev, (loff_t)get_capacity(bdev->bd_disk) << 9);
+	set_capacity(lo->lo_disk, size);
+	bd_set_size(bdev, size << SECTOR_SHIFT);
 	/* let user-space know about the new size */
 	kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE);
-	return 0;
 }
 
 static inline int
@@ -913,113 +924,6 @@
 	return 0;
 }
 
-static int loop_set_fd(struct loop_device *lo, fmode_t mode,
-		       struct block_device *bdev, unsigned int arg)
-{
-	struct file	*file;
-	struct inode	*inode;
-	struct address_space *mapping;
-	int		lo_flags = 0;
-	int		error;
-	loff_t		size;
-	bool		partscan;
-
-	/* This is safe, since we have a reference from open(). */
-	__module_get(THIS_MODULE);
-
-	error = -EBADF;
-	file = fget(arg);
-	if (!file)
-		goto out;
-
-	error = mutex_lock_killable(&loop_ctl_mutex);
-	if (error)
-		goto out_putf;
-
-	error = -EBUSY;
-	if (lo->lo_state != Lo_unbound)
-		goto out_unlock;
-
-	error = loop_validate_file(file, bdev);
-	if (error)
-		goto out_unlock;
-
-	mapping = file->f_mapping;
-	inode = mapping->host;
-
-	if (!(file->f_mode & FMODE_WRITE) || !(mode & FMODE_WRITE) ||
-	    !file->f_op->write_iter)
-		lo_flags |= LO_FLAGS_READ_ONLY;
-
-	error = -EFBIG;
-	size = get_loop_size(lo, file);
-	if ((loff_t)(sector_t)size != size)
-		goto out_unlock;
-	error = loop_prepare_queue(lo);
-	if (error)
-		goto out_unlock;
-
-	error = 0;
-
-	set_device_ro(bdev, (lo_flags & LO_FLAGS_READ_ONLY) != 0);
-
-	lo->use_dio = false;
-	lo->lo_device = bdev;
-	lo->lo_flags = lo_flags;
-	lo->lo_backing_file = file;
-	lo->transfer = NULL;
-	lo->ioctl = NULL;
-	lo->lo_sizelimit = 0;
-	lo->old_gfp_mask = mapping_gfp_mask(mapping);
-	mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
-
-	if (!(lo_flags & LO_FLAGS_READ_ONLY) && file->f_op->fsync)
-		blk_queue_write_cache(lo->lo_queue, true, false);
-
-	if (io_is_direct(lo->lo_backing_file) && inode->i_sb->s_bdev) {
-		/* In case of direct I/O, match underlying block size */
-		unsigned short bsize =
-			bdev_logical_block_size(inode->i_sb->s_bdev);
-
-		blk_queue_logical_block_size(lo->lo_queue, bsize);
-		blk_queue_physical_block_size(lo->lo_queue, bsize);
-		blk_queue_io_min(lo->lo_queue, bsize);
-	}
-
-	loop_update_dio(lo);
-	set_capacity(lo->lo_disk, size);
-	bd_set_size(bdev, size << 9);
-	loop_sysfs_init(lo);
-	/* let user-space know about the new size */
-	kobject_uevent(&disk_to_dev(bdev->bd_disk)->kobj, KOBJ_CHANGE);
-
-	set_blocksize(bdev, S_ISBLK(inode->i_mode) ?
-		      block_size(inode->i_bdev) : PAGE_SIZE);
-
-	lo->lo_state = Lo_bound;
-	if (part_shift)
-		lo->lo_flags |= LO_FLAGS_PARTSCAN;
-	partscan = lo->lo_flags & LO_FLAGS_PARTSCAN;
-
-	/* Grab the block_device to prevent its destruction after we
-	 * put /dev/loopXX inode. Later in __loop_clr_fd() we bdput(bdev).
-	 */
-	bdgrab(bdev);
-	mutex_unlock(&loop_ctl_mutex);
-	if (partscan)
-		loop_reread_partitions(lo, bdev);
-	return 0;
-
-out_unlock:
-	mutex_unlock(&loop_ctl_mutex);
-out_putf:
-	fput(file);
-out:
-	/* This is safe: open() is still holding a reference. */
-	module_put(THIS_MODULE);
-	return error;
-}
-
 static int
 loop_release_xfer(struct loop_device *lo)
 {
@@ -1057,6 +961,186 @@
 	return err;
 }
 
+/**
+ * loop_set_status_from_info - configure device from loop_info
+ * @lo: struct loop_device to configure
+ * @info: struct loop_info64 to configure the device with
+ *
+ * Configures the loop device parameters according to the passed
+ * in loop_info64 configuration.
+ */
+static int
+loop_set_status_from_info(struct loop_device *lo,
+			  const struct loop_info64 *info)
+{
+	int err;
+	struct loop_func_table *xfer;
+	kuid_t uid = current_uid();
+
+	if ((unsigned int) info->lo_encrypt_key_size > LO_KEY_SIZE)
+		return -EINVAL;
+
+	err = loop_release_xfer(lo);
+	if (err)
+		return err;
+
+	if (info->lo_encrypt_type) {
+		unsigned int type = info->lo_encrypt_type;
+
+		if (type >= MAX_LO_CRYPT)
+			return -EINVAL;
+		xfer = xfer_funcs[type];
+		if (xfer == NULL)
+			return -EINVAL;
+	} else
+		xfer = NULL;
+
+	err = loop_init_xfer(lo, xfer, info);
+	if (err)
+		return err;
+
+	lo->lo_offset = info->lo_offset;
+	lo->lo_sizelimit = info->lo_sizelimit;
+	memcpy(lo->lo_file_name, info->lo_file_name, LO_NAME_SIZE);
+	memcpy(lo->lo_crypt_name, info->lo_crypt_name, LO_NAME_SIZE);
+	lo->lo_file_name[LO_NAME_SIZE-1] = 0;
+	lo->lo_crypt_name[LO_NAME_SIZE-1] = 0;
+
+	if (!xfer)
+		xfer = &none_funcs;
+	lo->transfer = xfer->transfer;
+	lo->ioctl = xfer->ioctl;
+
+	lo->lo_flags = info->lo_flags;
+
+	lo->lo_encrypt_key_size = info->lo_encrypt_key_size;
+	lo->lo_init[0] = info->lo_init[0];
+	lo->lo_init[1] = info->lo_init[1];
+	if (info->lo_encrypt_key_size) {
+		memcpy(lo->lo_encrypt_key, info->lo_encrypt_key,
+		       info->lo_encrypt_key_size);
+		lo->lo_key_owner = uid;
+	}
+
+	return 0;
+}
+
+static int loop_configure(struct loop_device *lo, fmode_t mode,
+			  struct block_device *bdev,
+			  const struct loop_config *config)
+{
+	struct file	*file;
+	struct inode	*inode;
+	struct address_space *mapping;
+	int		error;
+	loff_t		size;
+	bool		partscan;
+	unsigned short  bsize;
+
+	/* This is safe, since we have a reference from open(). */
+	__module_get(THIS_MODULE);
+
+	error = -EBADF;
+	file = fget(config->fd);
+	if (!file)
+		goto out;
+
+	error = mutex_lock_killable(&loop_ctl_mutex);
+	if (error)
+		goto out_putf;
+
+	error = -EBUSY;
+	if (lo->lo_state != Lo_unbound)
+		goto out_unlock;
+
+	error = loop_validate_file(file, bdev);
+	if (error)
+		goto out_unlock;
+
+	mapping = file->f_mapping;
+	inode = mapping->host;
+
+	size = get_loop_size(lo, file);
+
+	if ((config->info.lo_flags & ~LOOP_CONFIGURE_SETTABLE_FLAGS) != 0) {
+		error = -EINVAL;
+		goto out_unlock;
+	}
+
+	if (config->block_size) {
+		error = loop_validate_block_size(config->block_size);
+		if (error)
+			goto out_unlock;
+	}
+
+	error = loop_set_status_from_info(lo, &config->info);
+	if (error)
+		goto out_unlock;
+
+	if (!(file->f_mode & FMODE_WRITE) || !(mode & FMODE_WRITE) ||
+	    !file->f_op->write_iter)
+		lo->lo_flags |= LO_FLAGS_READ_ONLY;
+
+	error = loop_prepare_queue(lo);
+	if (error)
+		goto out_unlock;
+
+	error = 0;
+
+	set_device_ro(bdev, (lo->lo_flags & LO_FLAGS_READ_ONLY) != 0);
+
+	lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO;
+	lo->lo_device = bdev;
+	lo->lo_backing_file = file;
+	lo->old_gfp_mask = mapping_gfp_mask(mapping);
+	mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS));
+
+	if (!(lo->lo_flags & LO_FLAGS_READ_ONLY) && file->f_op->fsync)
+		blk_queue_write_cache(lo->lo_queue, true, false);
+
+	if (config->block_size)
+		bsize = config->block_size;
+	else if (io_is_direct(lo->lo_backing_file) && inode->i_sb->s_bdev)
+		/* In case of direct I/O, match underlying block size */
+		bsize = bdev_logical_block_size(inode->i_sb->s_bdev);
+	else
+		bsize = 512;
+
+	blk_queue_logical_block_size(lo->lo_queue, bsize);
+	blk_queue_physical_block_size(lo->lo_queue, bsize);
+	blk_queue_io_min(lo->lo_queue, bsize);
+
+	loop_update_dio(lo);
+	loop_sysfs_init(lo);
+	loop_set_size(lo, size);
+
+	set_blocksize(bdev, S_ISBLK(inode->i_mode) ?
+		      block_size(inode->i_bdev) : PAGE_SIZE);
+
+	lo->lo_state = Lo_bound;
+	if (part_shift)
+		lo->lo_flags |= LO_FLAGS_PARTSCAN;
+	partscan = lo->lo_flags & LO_FLAGS_PARTSCAN;
+
+	/* Grab the block_device to prevent its destruction after we
+	 * put /dev/loopXX inode. Later in __loop_clr_fd() we bdput(bdev).
+	 */
+	bdgrab(bdev);
+	mutex_unlock(&loop_ctl_mutex);
+	if (partscan)
+		loop_reread_partitions(lo, bdev);
+	return 0;
+
+out_unlock:
+	mutex_unlock(&loop_ctl_mutex);
+out_putf:
+	fput(file);
+out:
+	/* This is safe: open() is still holding a reference. */
+	module_put(THIS_MODULE);
+	return error;
+}
+
 static int __loop_clr_fd(struct loop_device *lo, bool release)
 {
 	struct file *filp = NULL;
@@ -1204,10 +1288,11 @@
 loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
 {
 	int err;
-	struct loop_func_table *xfer;
-	kuid_t uid = current_uid();
 	struct block_device *bdev;
+	kuid_t uid = current_uid();
+	int prev_lo_flags;
 	bool partscan = false;
+	bool size_changed = false;
 
 	err = mutex_lock_killable(&loop_ctl_mutex);
 	if (err)
@@ -1222,13 +1307,10 @@
 		err = -ENXIO;
 		goto out_unlock;
 	}
-	if ((unsigned int) info->lo_encrypt_key_size > LO_KEY_SIZE) {
-		err = -EINVAL;
-		goto out_unlock;
-	}
 
 	if (lo->lo_offset != info->lo_offset ||
 	    lo->lo_sizelimit != info->lo_sizelimit) {
+		size_changed = true;
 		sync_blockdev(lo->lo_device);
 		kill_bdev(lo->lo_device);
 	}
@@ -1236,79 +1318,44 @@
 	/* I/O need to be drained during transfer transition */
 	blk_mq_freeze_queue(lo->lo_queue);
 
-	err = loop_release_xfer(lo);
+	if (size_changed && lo->lo_device->bd_inode->i_mapping->nrpages) {
+		/* If any pages were dirtied after kill_bdev(), try again */
+		err = -EAGAIN;
+		pr_warn("%s: loop%d (%s) has still dirty pages (nrpages=%lu)\n",
+			__func__, lo->lo_number, lo->lo_file_name,
+			lo->lo_device->bd_inode->i_mapping->nrpages);
+		goto out_unfreeze;
+	}
+
+	prev_lo_flags = lo->lo_flags;
+
+	err = loop_set_status_from_info(lo, info);
 	if (err)
 		goto out_unfreeze;
 
-	if (info->lo_encrypt_type) {
-		unsigned int type = info->lo_encrypt_type;
+	/* Mask out flags that can't be set using LOOP_SET_STATUS. */
+	lo->lo_flags &= LOOP_SET_STATUS_SETTABLE_FLAGS;
+	/* For those flags, use the previous values instead */
+	lo->lo_flags |= prev_lo_flags & ~LOOP_SET_STATUS_SETTABLE_FLAGS;
+	/* For flags that can't be cleared, use previous values too */
+	lo->lo_flags |= prev_lo_flags & ~LOOP_SET_STATUS_CLEARABLE_FLAGS;
 
-		if (type >= MAX_LO_CRYPT) {
-			err = -EINVAL;
-			goto out_unfreeze;
-		}
-		xfer = xfer_funcs[type];
-		if (xfer == NULL) {
-			err = -EINVAL;
-			goto out_unfreeze;
-		}
-	} else
-		xfer = NULL;
-
-	err = loop_init_xfer(lo, xfer, info);
-	if (err)
-		goto out_unfreeze;
-
-	if (lo->lo_offset != info->lo_offset ||
-	    lo->lo_sizelimit != info->lo_sizelimit) {
-		/* kill_bdev should have truncated all the pages */
-		if (lo->lo_device->bd_inode->i_mapping->nrpages) {
-			err = -EAGAIN;
-			pr_warn("%s: loop%d (%s) has still dirty pages (nrpages=%lu)\n",
-				__func__, lo->lo_number, lo->lo_file_name,
-				lo->lo_device->bd_inode->i_mapping->nrpages);
-			goto out_unfreeze;
-		}
-		if (figure_loop_size(lo, info->lo_offset, info->lo_sizelimit)) {
-			err = -EFBIG;
-			goto out_unfreeze;
-		}
+	if (size_changed) {
+		loff_t new_size = get_size(lo->lo_offset, lo->lo_sizelimit,
+					   lo->lo_backing_file);
+		loop_set_size(lo, new_size);
 	}
 
 	loop_config_discard(lo);
 
-	memcpy(lo->lo_file_name, info->lo_file_name, LO_NAME_SIZE);
-	memcpy(lo->lo_crypt_name, info->lo_crypt_name, LO_NAME_SIZE);
-	lo->lo_file_name[LO_NAME_SIZE-1] = 0;
-	lo->lo_crypt_name[LO_NAME_SIZE-1] = 0;
-
-	if (!xfer)
-		xfer = &none_funcs;
-	lo->transfer = xfer->transfer;
-	lo->ioctl = xfer->ioctl;
-
-	if ((lo->lo_flags & LO_FLAGS_AUTOCLEAR) !=
-	     (info->lo_flags & LO_FLAGS_AUTOCLEAR))
-		lo->lo_flags ^= LO_FLAGS_AUTOCLEAR;
-
-	lo->lo_encrypt_key_size = info->lo_encrypt_key_size;
-	lo->lo_init[0] = info->lo_init[0];
-	lo->lo_init[1] = info->lo_init[1];
-	if (info->lo_encrypt_key_size) {
-		memcpy(lo->lo_encrypt_key, info->lo_encrypt_key,
-		       info->lo_encrypt_key_size);
-		lo->lo_key_owner = uid;
-	}
-
 	/* update dio if lo_offset or transfer is changed */
 	__loop_update_dio(lo, lo->use_dio);
 
 out_unfreeze:
 	blk_mq_unfreeze_queue(lo->lo_queue);
 
-	if (!err && (info->lo_flags & LO_FLAGS_PARTSCAN) &&
-	     !(lo->lo_flags & LO_FLAGS_PARTSCAN)) {
-		lo->lo_flags |= LO_FLAGS_PARTSCAN;
+	if (!err && (lo->lo_flags & LO_FLAGS_PARTSCAN) &&
+	     !(prev_lo_flags & LO_FLAGS_PARTSCAN)) {
 		lo->lo_disk->flags &= ~GENHD_FL_NO_PART_SCAN;
 		bdev = lo->lo_device;
 		partscan = true;
@@ -1472,10 +1519,15 @@
 
 static int loop_set_capacity(struct loop_device *lo)
 {
+	loff_t size;
+
 	if (unlikely(lo->lo_state != Lo_bound))
 		return -ENXIO;
 
-	return figure_loop_size(lo, lo->lo_offset, lo->lo_sizelimit);
+	size = get_loop_size(lo, lo->lo_backing_file);
+	loop_set_size(lo, size);
+
+	return 0;
 }
 
 static int loop_set_dio(struct loop_device *lo, unsigned long arg)
@@ -1499,8 +1551,9 @@
 	if (lo->lo_state != Lo_bound)
 		return -ENXIO;
 
-	if (arg < 512 || arg > PAGE_SIZE || !is_power_of_2(arg))
-		return -EINVAL;
+	err = loop_validate_block_size(arg);
+	if (err)
+		return err;
 
 	if (lo->lo_queue->limits.logical_block_size == arg)
 		return 0;
@@ -1558,11 +1611,31 @@
 	unsigned int cmd, unsigned long arg)
 {
 	struct loop_device *lo = bdev->bd_disk->private_data;
+	void __user *argp = (void __user *) arg;
 	int err;
 
 	switch (cmd) {
-	case LOOP_SET_FD:
-		return loop_set_fd(lo, mode, bdev, arg);
+	case LOOP_SET_FD: {
+		/*
+		 * Legacy case - pass in a zeroed out struct loop_config with
+		 * only the file descriptor set , which corresponds with the
+		 * default parameters we'd have used otherwise.
+		 */
+		struct loop_config config;
+
+		memset(&config, 0, sizeof(config));
+		config.fd = arg;
+
+		return loop_configure(lo, mode, bdev, &config);
+	}
+	case LOOP_CONFIGURE: {
+		struct loop_config config;
+
+		if (copy_from_user(&config, argp, sizeof(config)))
+			return -EFAULT;
+
+		return loop_configure(lo, mode, bdev, &config);
+	}
 	case LOOP_CHANGE_FD:
 		return loop_change_fd(lo, bdev, arg);
 	case LOOP_CLR_FD:
@@ -1570,21 +1643,19 @@
 	case LOOP_SET_STATUS:
 		err = -EPERM;
 		if ((mode & FMODE_WRITE) || capable(CAP_SYS_ADMIN)) {
-			err = loop_set_status_old(lo,
-					(struct loop_info __user *)arg);
+			err = loop_set_status_old(lo, argp);
 		}
 		break;
 	case LOOP_GET_STATUS:
-		return loop_get_status_old(lo, (struct loop_info __user *) arg);
+		return loop_get_status_old(lo, argp);
 	case LOOP_SET_STATUS64:
 		err = -EPERM;
 		if ((mode & FMODE_WRITE) || capable(CAP_SYS_ADMIN)) {
-			err = loop_set_status64(lo,
-					(struct loop_info64 __user *) arg);
+			err = loop_set_status64(lo, argp);
 		}
 		break;
 	case LOOP_GET_STATUS64:
-		return loop_get_status64(lo, (struct loop_info64 __user *) arg);
+		return loop_get_status64(lo, argp);
 	case LOOP_SET_CAPACITY:
 	case LOOP_SET_DIRECT_IO:
 	case LOOP_SET_BLOCK_SIZE:
@@ -1736,6 +1807,7 @@
 	case LOOP_CLR_FD:
 	case LOOP_GET_STATUS64:
 	case LOOP_SET_STATUS64:
+	case LOOP_CONFIGURE:
 		arg = (unsigned long) compat_ptr(arg);
 		/* fall through */
 	case LOOP_SET_FD:
diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c
index fe2e057..8cbcee7 100644
--- a/drivers/char/adsprpc.c
+++ b/drivers/char/adsprpc.c
@@ -182,6 +182,9 @@
 static struct dentry *debugfs_root;
 static struct dentry *debugfs_global_file;
 
+static atomic_long_t total_dma_bytes;
+static struct kobject *fastrpc_kobj;
+
 static inline void mem_barrier(void)
 {
 	__asm__ __volatile__("dmb sy":::"memory");
@@ -677,6 +680,7 @@
 				srcVM, 2, destVM, destVMperm, 1);
 		}
 		trace_fastrpc_dma_free(fl->cid, buf->phys, buf->size);
+		atomic_long_sub(buf->size, &total_dma_bytes);
 		dma_free_attrs(fl->sctx->smmu.dev, buf->size, buf->virt,
 					buf->phys, buf->dma_attr);
 	}
@@ -890,6 +894,7 @@
 			return;
 		}
 		trace_fastrpc_dma_free(-1, map->phys, map->size);
+		atomic_long_sub(map->size, &total_dma_bytes);
 		if (map->phys) {
 			dma_free_attrs(me->dev, map->size, (void *)map->va,
 			(dma_addr_t)map->phys, (unsigned long)map->attr);
@@ -978,6 +983,7 @@
 			goto bail;
 		trace_fastrpc_dma_alloc(fl->cid, (uint64_t)region_phys, len,
 			(unsigned long)map->attr, mflags);
+		atomic_long_add(len, &total_dma_bytes);
 		map->phys = (uintptr_t)region_phys;
 		map->size = len;
 		map->va = (uintptr_t)region_vaddr;
@@ -1205,6 +1211,7 @@
 	trace_fastrpc_dma_alloc(fl->cid, buf->phys, size,
 		dma_attr, (int)rflags);
 
+	atomic_long_add(size, &total_dma_bytes);
 	vmid = fl->apps->channel[fl->cid].vmid;
 	if (vmid) {
 		int srcVM[1] = {VMID_HLOS};
@@ -5015,6 +5022,41 @@
 	return err;
 }
 
+static ssize_t total_dma_kb_show(struct kobject *kobj,
+	struct kobj_attribute *attr, char *buf)
+{
+	u64 size_in_bytes = atomic_long_read(&total_dma_bytes);
+
+	return snprintf(buf, PAGE_SIZE, "%llu\n", div_u64(size_in_bytes, 1024));
+}
+
+static struct kobj_attribute total_dma_kb_attr =
+	__ATTR_RO(total_dma_kb);
+
+static struct attribute *fastrpc_device_attrs[] = {
+	&total_dma_kb_attr.attr,
+	NULL,
+};
+
+ATTRIBUTE_GROUPS(fastrpc_device);
+
+static int fastrpc_init_sysfs(void)
+{
+	int ret;
+
+	fastrpc_kobj = kobject_create_and_add("fastrpc", kernel_kobj);
+	if (!fastrpc_kobj)
+		return -ENOMEM;
+
+	ret = sysfs_create_groups(fastrpc_kobj, fastrpc_device_groups);
+	if (ret) {
+		kobject_put(fastrpc_kobj);
+		return ret;
+	}
+
+	return 0;
+}
+
 static void fastrpc_deinit(void)
 {
 	struct fastrpc_channel_ctx *chan = gcinfo;
@@ -5069,6 +5111,7 @@
 	struct device *dev = NULL;
 	struct device *secure_dev = NULL;
 	int err = 0, i;
+	int ret = 0;
 
 	debugfs_root = debugfs_create_dir("adsprpc", NULL);
 	if (IS_ERR_OR_NULL(debugfs_root)) {
@@ -5077,6 +5120,12 @@
 		debugfs_remove_recursive(debugfs_root);
 		debugfs_root = NULL;
 	}
+
+	ret = fastrpc_init_sysfs();
+	if (ret) {
+		pr_err("fastrpc: failed to add sysfs attributes ret=%d\n", ret);
+	}
+
 	memset(me, 0, sizeof(*me));
 	fastrpc_init(me);
 	me->dev = NULL;
@@ -5212,6 +5261,10 @@
 	if (me->wake_source_secure)
 		wakeup_source_unregister(me->wake_source_secure);
 	debugfs_remove_recursive(debugfs_root);
+	if (fastrpc_kobj) {
+		sysfs_remove_groups(fastrpc_kobj, fastrpc_device_groups);
+		kobject_put(fastrpc_kobj);
+	}
 }
 
 late_initcall(fastrpc_device_init);
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index d8d6e77..0ecb815 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -5,4 +5,5 @@
 obj-$(CONFIG_TEGRA_HOST1X)	+= host1x/
 obj-y			+= drm/ vga/
 obj-$(CONFIG_IMX_IPUV3_CORE)	+= ipu-v3/
+obj-$(CONFIG_TRACE_GPU_MEM)		+= trace/
 obj-$(CONFIG_QCOM_KGSL) += msm/
diff --git a/drivers/gpu/msm/Kconfig b/drivers/gpu/msm/Kconfig
index 5e983e1..ae28bcf 100644
--- a/drivers/gpu/msm/Kconfig
+++ b/drivers/gpu/msm/Kconfig
@@ -11,6 +11,7 @@
 	select DEVFREQ_GOV_PERFORMANCE
 	select DEVFREQ_GOV_QCOM_ADRENO_TZ
 	select DEVFREQ_GOV_QCOM_GPUBW_MON
+	select TRACE_GPU_MEM
 	help
 	  3D graphics driver for the Adreno family of GPUs from QTI.
 	  Required to use hardware accelerated OpenGL, compute and Vulkan
diff --git a/drivers/gpu/msm/adreno_dispatch.c b/drivers/gpu/msm/adreno_dispatch.c
index b561214..6df0f5f 100644
--- a/drivers/gpu/msm/adreno_dispatch.c
+++ b/drivers/gpu/msm/adreno_dispatch.c
@@ -1185,7 +1185,16 @@
 		spin_lock(&drawctxt->lock);
 		trace_adreno_drawctxt_wake(drawctxt);
 
-		if (ret <= 0)
+		/*
+		 * Account for the possibility that the context got invalidated
+		 * while we were sleeping
+		 */
+
+		if (ret >= 1) {
+			ret = _check_context_state(&drawctxt->base);
+			if (ret)
+				return ret;
+		} else
 			return (ret == 0) ? -ETIMEDOUT : (int) ret;
 	}
 
@@ -1200,15 +1209,7 @@
 	if (ret)
 		return ret;
 
-	ret = _wait_for_room_in_context_queue(drawctxt);
-	if (ret)
-		return ret;
-
-	/*
-	 * Account for the possiblity that the context got invalidated
-	 * while we were sleeping
-	 */
-	return _check_context_state(&drawctxt->base);
+	return _wait_for_room_in_context_queue(drawctxt);
 }
 
 static void _queue_drawobj(struct adreno_context *drawctxt,
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index 664b5c4..e3a1457 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -239,7 +239,8 @@
 	return entry;
 }
 
-static void add_dmabuf_list(struct kgsl_dma_buf_meta *meta)
+static void add_dmabuf_list(struct kgsl_device *device,
+				struct kgsl_dma_buf_meta *meta)
 {
 	struct dmabuf_list_entry *dle;
 	struct page *page;
@@ -272,11 +273,14 @@
 		list_add(&dle->node, &kgsl_dmabuf_list);
 		meta->dle = dle;
 		list_add(&meta->node, &dle->dmabuf_list);
+		kgsl_trace_gpu_mem_total(device,
+				 meta->entry->memdesc.size);
 	}
 	spin_unlock(&kgsl_dmabuf_lock);
 }
 
-static void remove_dmabuf_list(struct kgsl_dma_buf_meta *meta)
+static void remove_dmabuf_list(struct kgsl_device *device,
+				struct kgsl_dma_buf_meta *meta)
 {
 	struct dmabuf_list_entry *dle = meta->dle;
 
@@ -288,15 +292,18 @@
 	if (list_empty(&dle->dmabuf_list)) {
 		list_del(&dle->node);
 		kfree(dle);
+		kgsl_trace_gpu_mem_total(device,
+				-(meta->entry->memdesc.size));
 	}
 	spin_unlock(&kgsl_dmabuf_lock);
 }
 
 #ifdef CONFIG_DMA_SHARED_BUFFER
-static void kgsl_destroy_ion(struct kgsl_dma_buf_meta *meta)
+static void kgsl_destroy_ion(struct kgsl_device *device,
+				struct kgsl_dma_buf_meta *meta)
 {
 	if (meta != NULL) {
-		remove_dmabuf_list(meta);
+		remove_dmabuf_list(device, meta);
 		dma_buf_unmap_attachment(meta->attach, meta->table,
 			DMA_BIDIRECTIONAL);
 		dma_buf_detach(meta->dmabuf, meta->attach);
@@ -305,16 +312,23 @@
 	}
 }
 #else
-static void kgsl_destroy_ion(struct kgsl_dma_buf_meta *meta)
+static void kgsl_destroy_ion(struct kgsl_device *device,
+				struct kgsl_dma_buf_meta *meta)
 {
-
 }
 #endif
 
 static void mem_entry_destroy(struct kgsl_mem_entry *entry)
 {
+	struct kgsl_device *device = NULL;
 	unsigned int memtype;
 
+	if (entry == NULL)
+		return;
+
+	if (entry->memdesc.pagetable != NULL)
+		device = KGSL_MMU_DEVICE(entry->memdesc.pagetable->mmu);
+
 	/* pull out the memtype before the flags get cleared */
 	memtype = kgsl_memdesc_usermem_type(&entry->memdesc);
 
@@ -354,16 +368,16 @@
 		}
 	}
 
-	kgsl_sharedmem_free(&entry->memdesc);
-
 	switch (memtype) {
 	case KGSL_MEM_ENTRY_ION:
-		kgsl_destroy_ion(entry->priv_data);
+		kgsl_destroy_ion(device, entry->priv_data);
 		break;
 	default:
 		break;
 	}
 
+	kgsl_sharedmem_free(&entry->memdesc);
+
 	kfree(entry);
 }
 
@@ -2829,7 +2843,7 @@
 
 unmap:
 	if (kgsl_memdesc_usermem_type(&entry->memdesc) == KGSL_MEM_ENTRY_ION) {
-		kgsl_destroy_ion(entry->priv_data);
+		kgsl_destroy_ion(dev_priv->device, entry->priv_data);
 		entry->memdesc.sgt = NULL;
 	}
 
@@ -2974,7 +2988,7 @@
 		goto out;
 	}
 
-	add_dmabuf_list(meta);
+	add_dmabuf_list(device, meta);
 	entry->memdesc.size = PAGE_ALIGN(entry->memdesc.size);
 
 out:
@@ -3144,7 +3158,7 @@
 error_attach:
 	switch (kgsl_memdesc_usermem_type(&entry->memdesc)) {
 	case KGSL_MEM_ENTRY_ION:
-		kgsl_destroy_ion(entry->priv_data);
+		kgsl_destroy_ion(dev_priv->device, entry->priv_data);
 		entry->memdesc.sgt = NULL;
 		break;
 	default:
diff --git a/drivers/gpu/msm/kgsl_device.h b/drivers/gpu/msm/kgsl_device.h
index 05f52122..9851d9f 100644
--- a/drivers/gpu/msm/kgsl_device.h
+++ b/drivers/gpu/msm/kgsl_device.h
@@ -7,6 +7,7 @@
 
 #include <linux/sched/mm.h>
 #include <linux/sched/task.h>
+#include <trace/events/gpu_mem.h>
 
 #include "kgsl.h"
 #include "kgsl_drawobj.h"
@@ -275,6 +276,7 @@
 	uint32_t requested_state;
 
 	atomic_t active_cnt;
+	atomic64_t total_mapped;
 
 	wait_queue_head_t wait_queue;
 	wait_queue_head_t active_cnt_wq;
@@ -983,4 +985,28 @@
 	struct kgsl_device *device;
 };
 
+/**
+ * kgsl_trace_gpu_mem_total - Overall gpu memory usage tracking which includes
+ * process allocations, imported dmabufs and kgsl globals
+ * @device: A KGSL device handle
+ * @delta: delta of total mapped memory size
+ */
+#ifdef CONFIG_TRACE_GPU_MEM
+static inline void kgsl_trace_gpu_mem_total(struct kgsl_device *device,
+						s64 delta)
+{
+	u64 total_size;
+
+	if (!device)
+		return;
+
+	total_size = atomic64_add_return(delta, &device->total_mapped);
+
+	trace_gpu_mem_total(0, 0, total_size);
+}
+#else
+static inline void kgsl_trace_gpu_mem_total(struct kgsl_device *device,
+						s64 delta) {}
+#endif
+
 #endif  /* __KGSL_DEVICE_H */
diff --git a/drivers/gpu/msm/kgsl_mmu.c b/drivers/gpu/msm/kgsl_mmu.c
index 60d012ce..cad3b91 100644
--- a/drivers/gpu/msm/kgsl_mmu.c
+++ b/drivers/gpu/msm/kgsl_mmu.c
@@ -195,6 +195,21 @@
 	return ret;
 }
 
+#ifdef CONFIG_TRACE_GPU_MEM
+static void kgsl_mmu_trace_gpu_mem_pagetable(struct kgsl_pagetable *pagetable)
+{
+	if (!kgsl_mmu_is_perprocess_pt(pagetable))
+		return;
+
+	trace_gpu_mem_total(0, pagetable->name,
+			(u64)atomic_long_read(&pagetable->stats.mapped));
+}
+#else
+static void kgsl_mmu_trace_gpu_mem_pagetable(struct kgsl_pagetable *pagetable)
+{
+}
+#endif
+
 void
 kgsl_mmu_detach_pagetable(struct kgsl_pagetable *pagetable)
 {
@@ -379,6 +394,7 @@
 				struct kgsl_memdesc *memdesc)
 {
 	int size;
+	struct kgsl_device *device = KGSL_MMU_DEVICE(pagetable->mmu);
 
 	if (!memdesc->gpuaddr)
 		return -EINVAL;
@@ -402,6 +418,13 @@
 		atomic_inc(&pagetable->stats.entries);
 		KGSL_STATS_ADD(size, &pagetable->stats.mapped,
 				&pagetable->stats.max_mapped);
+		kgsl_mmu_trace_gpu_mem_pagetable(pagetable);
+
+		if (!(kgsl_memdesc_is_global(memdesc)
+				&& (KGSL_MEMDESC_MAPPED & memdesc->priv))
+				&& !kgsl_memdesc_is_dmabuf(memdesc)) {
+			kgsl_trace_gpu_mem_total(device, size);
+		}
 
 		/* This is needed for non-sparse mappings */
 		memdesc->priv |= KGSL_MEMDESC_MAPPED;
@@ -465,6 +488,7 @@
 		struct kgsl_memdesc *memdesc)
 {
 	int ret = 0;
+	struct kgsl_device *device = KGSL_MMU_DEVICE(pagetable->mmu);
 
 	if (memdesc->size == 0)
 		return -EINVAL;
@@ -485,9 +509,13 @@
 
 		atomic_dec(&pagetable->stats.entries);
 		atomic_long_sub(size, &pagetable->stats.mapped);
+		kgsl_mmu_trace_gpu_mem_pagetable(pagetable);
 
-		if (!kgsl_memdesc_is_global(memdesc))
+		if (!kgsl_memdesc_is_global(memdesc)) {
 			memdesc->priv &= ~KGSL_MEMDESC_MAPPED;
+			if (!kgsl_memdesc_is_dmabuf(memdesc))
+				kgsl_trace_gpu_mem_total(device, -(size));
+		}
 	}
 
 	return ret;
@@ -499,6 +527,8 @@
 			struct kgsl_memdesc *memdesc, uint64_t physoffset,
 			uint64_t size, uint64_t flags)
 {
+	struct kgsl_device *device = KGSL_MMU_DEVICE(pagetable->mmu);
+
 	if (PT_OP_VALID(pagetable, mmu_map_offset)) {
 		int ret;
 
@@ -510,6 +540,9 @@
 		atomic_inc(&pagetable->stats.entries);
 		KGSL_STATS_ADD(size, &pagetable->stats.mapped,
 				&pagetable->stats.max_mapped);
+		kgsl_mmu_trace_gpu_mem_pagetable(pagetable);
+
+		kgsl_trace_gpu_mem_total(device, size);
 	}
 
 	return 0;
@@ -520,6 +553,8 @@
 		struct kgsl_memdesc *memdesc, uint64_t addr, uint64_t offset,
 		uint64_t size)
 {
+	struct kgsl_device *device = KGSL_MMU_DEVICE(pagetable->mmu);
+
 	if (PT_OP_VALID(pagetable, mmu_unmap_offset)) {
 		int ret;
 
@@ -530,6 +565,9 @@
 
 		atomic_dec(&pagetable->stats.entries);
 		atomic_long_sub(size, &pagetable->stats.mapped);
+		kgsl_mmu_trace_gpu_mem_pagetable(pagetable);
+
+		kgsl_trace_gpu_mem_total(device, -(size));
 	}
 
 	return 0;
@@ -539,6 +577,8 @@
 int kgsl_mmu_sparse_dummy_map(struct kgsl_pagetable *pagetable,
 		struct kgsl_memdesc *memdesc, uint64_t offset, uint64_t size)
 {
+	struct kgsl_device *device = KGSL_MMU_DEVICE(pagetable->mmu);
+
 	if (PT_OP_VALID(pagetable, mmu_sparse_dummy_map)) {
 		int ret;
 
@@ -549,6 +589,9 @@
 
 		atomic_dec(&pagetable->stats.entries);
 		atomic_long_sub(size, &pagetable->stats.mapped);
+		kgsl_mmu_trace_gpu_mem_pagetable(pagetable);
+
+		kgsl_trace_gpu_mem_total(device, -(size));
 	}
 
 	return 0;
diff --git a/drivers/gpu/msm/kgsl_mmu.h b/drivers/gpu/msm/kgsl_mmu.h
index 3eb84f9..2d7b650 100644
--- a/drivers/gpu/msm/kgsl_mmu.h
+++ b/drivers/gpu/msm/kgsl_mmu.h
@@ -336,6 +336,19 @@
 	return MMU_FEATURE(mmu, KGSL_MMU_GLOBAL_PAGETABLE) ? 0 : 1;
 }
 
+/*
+ * kgsl_mmu_is_perprocess_pt - Return true if the object is a
+ * per process pagetable
+ * @pt: A handle to the pagetable
+ *
+ * Return: True if the pagetable is per process pagetable
+ */
+static inline bool kgsl_mmu_is_perprocess_pt(struct kgsl_pagetable *pt)
+{
+	return (pt->name != KGSL_MMU_GLOBAL_PT &&
+			pt->name != KGSL_MMU_SECURE_PT);
+}
+
 static inline int kgsl_mmu_use_cpu_map(struct kgsl_mmu *mmu)
 {
 	return kgsl_mmu_is_perprocess(mmu);
diff --git a/drivers/gpu/msm/kgsl_sharedmem.h b/drivers/gpu/msm/kgsl_sharedmem.h
index 6569332..7f2262b 100644
--- a/drivers/gpu/msm/kgsl_sharedmem.h
+++ b/drivers/gpu/msm/kgsl_sharedmem.h
@@ -300,6 +300,18 @@
  */
 void kgsl_free_global(struct kgsl_device *device, struct kgsl_memdesc *memdesc);
 
+/*
+ * kgsl_memdesc_is_dmabuf - Return true if the object is an
+ * imported dma-buf
+ * @memdesc: A handle to GPU memory descriptor
+ *
+ * Return: True if the memdesc is an imported dma-buf
+ */
+static inline bool kgsl_memdesc_is_dmabuf(const struct kgsl_memdesc *memdesc)
+{
+	return memdesc->flags & KGSL_MEMFLAGS_USERMEM_ION;
+}
+
 void kgsl_sharedmem_set_noretry(bool val);
 bool kgsl_sharedmem_get_noretry(void);
 
diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
new file mode 100644
index 0000000..c24e9ed
--- /dev/null
+++ b/drivers/gpu/trace/Kconfig
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config TRACE_GPU_MEM
+	bool
diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
new file mode 100644
index 0000000..b70fbdc
--- /dev/null
+++ b/drivers/gpu/trace/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
new file mode 100644
index 0000000..01e8558
--- /dev/null
+++ b/drivers/gpu/trace/trace_gpu_mem.c
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#include <linux/module.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/gpu_mem.h>
+
+EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
diff --git a/drivers/iio/power/pac193x.c b/drivers/iio/power/pac193x.c
index a8b004e..8c6524d 100644
--- a/drivers/iio/power/pac193x.c
+++ b/drivers/iio/power/pac193x.c
@@ -27,6 +27,7 @@
 #include <linux/slab.h>
 #include <linux/jiffies.h>
 #include <linux/delay.h>
+#include <linux/math64.h>
 #include <linux/time.h>
 #include <linux/timer.h>
 #include <linux/util_macros.h>
@@ -773,6 +774,9 @@
 			 chip_info->chip_reg_data.tstamp_ms);
 
 	for (cnt = 0; cnt < chip_info->phys_channels; cnt++) {
+		u64 a;
+		u64 b;
+
 		if (!chip_info->chip_reg_data.active_channels[cnt])
 			continue;
 
@@ -784,15 +788,15 @@
 		ptr = chip_info->rail_name[cnt];
 
 		/* Scale register value to uW-secs */
-		temp = PAC193X_VSENSE_MILLIVOLTS_MAX;
-		temp /= chip_info->shunts[cnt] / 1000;
-		temp *= PAC193X_VOLTAGE_MILLIVOLTS_MAX * 1000;
-		temp *= chip_info->chip_reg_data.energy_sec_acc[cnt];
-		temp >>= bit_resolution;
+		a = PAC193X_VSENSE_MILLIVOLTS_MAX;
+		a /= chip_info->shunts[cnt] / 1000;
+		a *= PAC193X_VOLTAGE_MILLIVOLTS_MAX * 1000 / 100;
+		a *= chip_info->efficiency[cnt];
+		b = chip_info->chip_reg_data.energy_sec_acc[cnt];
+		temp = mul_u64_u64_shr(a, b, bit_resolution);
 
 		/* Convert to uW-secs */
 		temp /= chip_info->sample_rate_value;
-		temp = (temp / 100) * chip_info->efficiency[cnt];
 
 		len += scnprintf(buf + len, PAGE_SIZE - len, "%s, %lu\n",
 				 ptr,
diff --git a/drivers/input/touchscreen/touch_offload.c b/drivers/input/touchscreen/touch_offload.c
index 7a100e3..59c4e92 100644
--- a/drivers/input/touchscreen/touch_offload.c
+++ b/drivers/input/touchscreen/touch_offload.c
@@ -257,7 +257,8 @@
 				goto kzalloc_channel_fail;
 			coord = (struct TouchOffloadDataCoord *)
 					frame->channel_data[chan];
-			coord->size_bytes = size;
+			coord->header.channel_type = TOUCH_DATA_TYPE_COORD;
+			coord->header.channel_size = size;
 			frame->channel_data_size[chan] = size;
 			frame->header.frame_size += size;
 			chan++;
@@ -277,9 +278,9 @@
 					goto kzalloc_channel_fail;
 				data = (struct TouchOffloadData2d *)
 						frame->channel_data[chan];
-				data->size_bytes = size;
-				pr_debug("%s: data->size_bytes = %u.\n",
-					 __func__, data->size_bytes);
+				data->header.channel_type =
+				    TOUCH_SCAN_TYPE_MUTUAL | mask;
+				data->header.channel_size = size;
 				frame->channel_data_size[chan] = size;
 				frame->header.frame_size += size;
 				chan++;
@@ -300,9 +301,9 @@
 					goto kzalloc_channel_fail;
 				data = (struct TouchOffloadData1d *)
 						frame->channel_data[chan];
-				data->size_bytes = size;
-				pr_debug("%s: data->size_bytes = %u.\n",
-					 __func__, data->size_bytes);
+				data->header.channel_type =
+				    TOUCH_SCAN_TYPE_SELF | mask;
+				data->header.channel_size = size;
 				frame->channel_data_size[chan] = size;
 				frame->header.frame_size += size;
 				chan++;
@@ -310,6 +311,7 @@
 		}
 
 		frame->num_channels = chan;
+		frame->header.num_channels = chan;
 
 		if (context->packed_frame_size == 0)
 			context->packed_frame_size = frame->header.frame_size;
@@ -424,7 +426,7 @@
 	case TOUCH_OFFLOAD_IOC_WR_CONFIGURE:
 	{
 		struct TouchOffloadIocConfigure configure;
-		int NUM_BUFFERS = 3;
+		int NUM_BUFFERS = 4;
 		int num_channels;
 
 		err = copy_from_user(&configure, (void *)ioctl_param,
diff --git a/drivers/power/supply/google/google_battery.c b/drivers/power/supply/google/google_battery.c
index 44a9b67e..dd583d9 100644
--- a/drivers/power/supply/google/google_battery.c
+++ b/drivers/power/supply/google/google_battery.c
@@ -70,6 +70,11 @@
 #define HCC_WRITE_AGAIN	0xF0F0
 #define HCC_DEFAULT_DELTA_CYCLE_CNT	25
 
+/* Interval value used when health is settings disabled when not running */
+#define CHG_DEADLINE_SETTING -1
+/* Internal value used when health is settings disabled while running */
+#define CHG_DEADLINE_SETTING_STOP -2
+
 #define PREFIX_SERIALNO   "androidboot.serialno="
 #define DEV_SN_LENGTH         20
 #define STR_(x)	#x
@@ -182,26 +187,6 @@
 	int res_temp_high;
 };
 
-/* health/rest alternate charging policy */
-enum chg_health_state {
-	CHG_HEALTH_DISABLED = -1,
-	CHG_HEALTH_INACTIVE = 0,
-	CHG_HEALTH_ENABLED,
-	CHG_HEALTH_ACTIVE,
-	CHG_HEALTH_DONE,
-};
-
-struct batt_chg_health {
-	int rest_soc;		/* entry criteria */
-	int rest_voltage;	/* entry criteria */
-	time_t rest_deadline;	/* full by this in seconds */
-	int rest_rate;		/* centirate once enter */
-
-	enum chg_health_state rest_state;
-	int rest_cc_max;
-	int rest_fv_uv;
-};
-
 struct batt_history_data {
 	u16 cycle_cnt;
 	u16 fullcap;
@@ -329,7 +314,7 @@
 	u8 dev_info[GBMS_DINF_LEN];
 
 	/* Battery pack info for Suez*/
-	const char batt_pack_info[GBMS_MINF_LEN];
+	char batt_pack_info[GBMS_MINF_LEN];
 	bool pack_info_ready;
 };
 
@@ -593,7 +578,7 @@
 			qnum_fracdgt(rls->rl_ssoc_target),
 			qnum_toint(ssoc->ssoc_rl),
 			qnum_fracdgt(ssoc->ssoc_rl));
-		pr_warn("%s: now=%d last_update=%d\n",
+		pr_warn("%s: now=%ld last_update=%ld\n",
 			__func__,
 			now,
 			rls->rl_ssoc_last_update);
@@ -616,11 +601,14 @@
 	return ssoc->ssoc_rl;
 }
 
+#define SOC_ROUND_BASE	0.5
+
 /* reported to userspace: call while holding batt_lock */
 static int ssoc_get_capacity(const struct batt_ssoc_state *ssoc)
 {
 	const qnum_t raw = ssoc_get_capacity_raw(ssoc);
-	return qnum_roundint(raw, 0.5);
+
+	return qnum_roundint(raw, SOC_ROUND_BASE);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -643,11 +631,8 @@
 		  ssoc_uicurve_cstr(buff, sizeof(buff), ssoc_state->ssoc_curve),
 		  ssoc_state->rl_status);
 
-	if (log) {
-		logbuffer_log(log, "%s", ssoc_state->ssoc_state_cstr);
-	} else {
-		pr_info("%s\n", ssoc_state->ssoc_state_cstr);
-	}
+	logbuffer_log(log, "%s", ssoc_state->ssoc_state_cstr);
+	pr_debug("%s\n", ssoc_state->ssoc_state_cstr);
 }
 
 /* ------------------------------------------------------------------------- */
@@ -962,10 +947,13 @@
 
 /* ------------------------------------------------------------------------- */
 
+/* msc_logic_health() sync ce_data->ce_health to batt_drv->chg_health */
 static int batt_ttf_estimate(time_t *res, const struct batt_drv *batt_drv)
 {
-	int rc;
+	qnum_t soc_raw = ssoc_get_capacity_raw(&batt_drv->ssoc_state);
+	qnum_t raw_full = ssoc_point_full - qnum_rconst(SOC_ROUND_BASE);
 	time_t estimate = batt_drv->ttf_stats.ttf_fake;
+	int rc;
 
 	if (batt_drv->ssoc_state.buck_enabled != 1)
 		return -EINVAL;
@@ -973,15 +961,23 @@
 	if (batt_drv->ttf_stats.ttf_fake != -1)
 		goto done;
 
+	/* TTF is 0 when UI shows 100% */
+	if (ssoc_get_capacity(&batt_drv->ssoc_state) == SSOC_FULL) {
+		estimate = 0;
+		goto done;
+	}
+
+	/*
+	 * Handle rounding (removing it from the end)
+	 * example: 96.64% with SOC_ROUND_BASE = 0.5 -> UI = 97
+	 *    ttf = elap[96] * 0.36 + elap[97] + elap[98] +
+	 *          elap[99] * (1 - 0.5)
+	 */
 	rc = ttf_soc_estimate(&estimate, &batt_drv->ttf_stats,
-			      &batt_drv->ce_data,
-			      ssoc_get_capacity_raw(&batt_drv->ssoc_state),
-			      ssoc_point_full);
+			      &batt_drv->ce_data, soc_raw, raw_full);
 	if (rc < 0)
 		estimate = -1;
 
-	pr_info("ttf_soc: estimate=%ld\n", estimate);
-
 	if (estimate == -1)
 		return -ERANGE;
 
@@ -992,6 +988,7 @@
 
 /* ------------------------------------------------------------------------- */
 
+/* CEV = Charging EVent */
 static void cev_stats_init(struct gbms_charging_event *ce_data,
 			   const struct gbms_chg_profile *profile)
 {
@@ -1009,13 +1006,14 @@
 	ce_data->last_soc = -1;
 
 	for (i = 0; i < GBMS_STATS_TIER_COUNT ; i++) {
-		ce_data->tier_stats[i].temp_idx = -1;
 		ce_data->tier_stats[i].vtier_idx = i;
+		ce_data->tier_stats[i].temp_idx = -1;
 		ce_data->tier_stats[i].soc_in = -1;
 	}
 
+	/* batt_chg_health_stats_close() will fix this */
+	ce_data->health_stats.vtier_idx = GBMS_STATS_AC_TI_INVALID;
 	ce_data->health_stats.temp_idx = -1;
-	ce_data->health_stats.vtier_idx = i;
 	ce_data->health_stats.soc_in = -1;
 }
 
@@ -1110,18 +1108,18 @@
 	int cc;
 
 	/* TODO: read at start of tier and update cc_total of previous */
-	cc = GPSY_GET_PROP(batt_drv->fg_psy,
-				POWER_SUPPLY_PROP_CHARGE_COUNTER);
+	cc = GPSY_GET_PROP(batt_drv->fg_psy, POWER_SUPPLY_PROP_CHARGE_COUNTER);
 	if (cc < 0) {
-		pr_info("MSC_STAT cannot read cc=%d\n", cc);
+		pr_debug("MSC_STAT cannot read cc=%d\n", cc);
 		return;
 	}
 	cc = cc / 1000;
 
+	/* works because msc_logic books the time BEFORE updating msc_state */
 	if (msc_state == MSC_HEALTH) {
 		tier = &batt_drv->ce_data.health_stats;
 
-		/* TODO: book time to health ttf stats */
+		/* tier used for TTF during HC, check msc_logic_health() */
 	} else {
 		const qnum_t soc = ssoc_get_capacity_raw(&batt_drv->ssoc_state);
 
@@ -1208,8 +1206,60 @@
 	tier->sample_count += 1;
 }
 
-/* Only the qualified copy gets the timestamp and the exit voltage.
- */
+
+static int batt_chg_health_vti(const struct batt_chg_health *chg_health)
+{
+	enum chg_health_state rest_state = chg_health->rest_state;
+	time_t rest_deadline = chg_health->rest_deadline;
+	int tier_idx = GBMS_STATS_AC_TI_INVALID;
+	bool aon_enabled = chg_health->always_on_soc != -1;
+
+	switch (rest_state) {
+	/* user disabled with deadline */
+	case CHG_HEALTH_USER_DISABLED:
+		if (rest_deadline == CHG_DEADLINE_SETTING)
+			tier_idx = GBMS_STATS_AC_TI_DISABLE_SETTING;
+		else if (rest_deadline == CHG_DEADLINE_SETTING_STOP)
+			tier_idx = GBMS_STATS_AC_TI_DISABLE_SETTING_STOP;
+		else
+			tier_idx = GBMS_STATS_AC_TI_DISABLE_MISC;
+		break;
+	/* missed the deadline, TODO: log the deadline */
+	case CHG_HEALTH_DISABLED:
+		tier_idx = GBMS_STATS_AC_TI_DISABLED;
+		break;
+	/* disconnected in active mode, TODO: log the deadline */
+	case CHG_HEALTH_ACTIVE:
+		if (aon_enabled)
+			tier_idx = GBMS_STATS_AC_TI_ACTIVE_AON;
+		else
+			tier_idx = GBMS_STATS_AC_TI_ACTIVE;
+		break;
+	/* never became active */
+	case CHG_HEALTH_ENABLED:
+		if (aon_enabled)
+			tier_idx = GBMS_STATS_AC_TI_ENABLED_AON;
+		else
+			tier_idx = GBMS_STATS_AC_TI_ENABLED;
+		break;
+	/* active, worked */
+	case CHG_HEALTH_DONE:
+		tier_idx = GBMS_STATS_AC_TI_VALID;
+		break;
+	default:
+		break;
+	}
+
+	return tier_idx;
+}
+
+int batt_chg_vbat2tier(const int vbatt_idx)
+{
+	return vbatt_idx < GBMS_STATS_TIER_COUNT ?
+		vbatt_idx : GBMS_STATS_TIER_COUNT - 1;
+}
+
+/* Only the qualified copy gets the timestamp and the exit voltage. */
 static bool batt_chg_stats_close(struct batt_drv *batt_drv,
 				 char *reason,
 				 bool force)
@@ -1226,10 +1276,15 @@
 	if (batt_drv->vbatt_idx != -1 && batt_drv->temp_idx != -1) {
 		const time_t now = get_boot_sec();
 		const time_t elap = now - batt_drv->ce_data.last_update;
+		const int tier_idx = batt_chg_vbat2tier(batt_drv->vbatt_idx);
+		const int ibatt = GPSY_GET_PROP(batt_drv->fg_psy,
+						POWER_SUPPLY_PROP_CURRENT_NOW);
+		const int temp = GPSY_GET_PROP(batt_drv->fg_psy,
+					       POWER_SUPPLY_PROP_TEMP);
 
 		batt_chg_stats_update(batt_drv,
-				      batt_drv->temp_idx, batt_drv->vbatt_idx,
-				      0, 0, elap);
+				      batt_drv->temp_idx, tier_idx,
+				      ibatt / 1000, temp, elap);
 		batt_drv->ce_data.last_update = now;
 	}
 
@@ -1241,14 +1296,21 @@
 	batt_drv->ce_data.charging_stats.cc_out =
 				(cc_out < 0) ? -1 : cc_out / 1000;
 
+	/* close/fix heath charge data (if enabled) */
+	memcpy(&batt_drv->ce_data.ce_health, &batt_drv->chg_health,
+	       sizeof(batt_drv->ce_data.ce_health));
+	batt_drv->ce_data.health_stats.vtier_idx =
+				batt_chg_health_vti(&batt_drv->chg_health);
+
 	/* TODO: add a field to ce_data to qual weird charge sessions */
 	publish = force || batt_chg_stats_qual(&batt_drv->ce_data);
 	if (publish) {
 		struct gbms_charging_event *ce_qual = &batt_drv->ce_qual;
 
+		/* all charge tiers including health */
 		memcpy(ce_qual, &batt_drv->ce_data, sizeof(*ce_qual));
 
-		pr_info("MSC_STAT %s: elap=%ld ssoc=%d->%d v=%d->%d c=%d->%d\n",
+		pr_info("MSC_STAT %s: elap=%ld ssoc=%d->%d v=%d->%d c=%d->%d hdl=%ld hrs=%d hti=%d\n",
 			reason,
 			ce_qual->last_update - ce_qual->first_update,
 			ce_qual->charging_stats.ssoc_in,
@@ -1256,7 +1318,10 @@
 			ce_qual->charging_stats.voltage_in,
 			ce_qual->charging_stats.voltage_out,
 			ce_qual->charging_stats.cc_in,
-			ce_qual->charging_stats.cc_out);
+			ce_qual->charging_stats.cc_out,
+			ce_qual->ce_health.rest_deadline,
+			ce_qual->ce_health.rest_state,
+			ce_qual->health_stats.vtier_idx);
 	}
 
 	return publish;
@@ -1277,7 +1342,7 @@
 	return soc_next;
 }
 
-void bat_log_cstr_handler(struct logbuffer *log, char *buf, int len)
+static void bat_log_cstr_handler(struct logbuffer *log, char *buf, int len)
 {
 	int i, j = 0;
 	char tmp[LOG_BUFFER_ENTRY_SIZE];
@@ -1352,6 +1417,7 @@
 	}
 }
 
+/* End of charging: close stats, qualify event publish data */
 static void batt_chg_stats_pub(struct batt_drv *batt_drv,
 			       char *reason,
 			       bool force)
@@ -1371,6 +1437,7 @@
 	mutex_unlock(&batt_drv->stats_lock);
 }
 
+/* Log only when elap != 0 add a special meaning for health status */
 static int batt_chg_tier_stats_cstr(char *buff, int size,
 				    const struct gbms_ce_tier_stats *tier_stat,
 				    bool verbose)
@@ -1381,10 +1448,18 @@
 	const static char *codes[] = {"n", "s", "d", "l", "v", "vo", "p", "f",
 					"t", "dl", "st", "tc", "r", "w", "rs",
 					"n", "ny", "h"};
+	long temp_avg, ibatt_avg, icl_avg;
 	int j, len = 0;
 
-	if (!elap)
-		return 0;
+	if (elap) {
+		temp_avg = tier_stat->temp_sum / elap;
+		ibatt_avg = tier_stat->ibatt_sum / elap;
+		icl_avg = tier_stat->icl_sum / elap;
+	} else {
+		temp_avg = 0;
+		ibatt_avg = 0;
+		icl_avg = 0;
+	}
 
 	len += scnprintf(&buff[len], size - len, "\n%d%c ",
 		tier_stat->vtier_idx,
@@ -1392,24 +1467,24 @@
 
 	len += scnprintf(&buff[len], size - len,
 		"%d.%d,%d,%d, %d,%d,%d, %d,%ld,%d, %d,%ld,%d, %d,%ld,%d",
-			soc_in,
-			tier_stat->soc_in & 0xff,
-			tier_stat->cc_in,
-			tier_stat->temp_in,
-			tier_stat->time_fast,
-			tier_stat->time_taper,
-			tier_stat->time_other,
-			tier_stat->temp_min,
-			tier_stat->temp_sum / elap,
-			tier_stat->temp_max,
-			tier_stat->ibatt_min,
-			tier_stat->ibatt_sum / elap,
-			tier_stat->ibatt_max,
-			tier_stat->icl_min,
-			tier_stat->icl_sum / elap,
-			tier_stat->icl_max);
+		soc_in,
+		tier_stat->soc_in & 0xff,
+		tier_stat->cc_in,
+		tier_stat->temp_in,
+		tier_stat->time_fast,
+		tier_stat->time_taper,
+		tier_stat->time_other,
+		tier_stat->temp_min,
+		temp_avg,
+		tier_stat->temp_max,
+		tier_stat->ibatt_min,
+		ibatt_avg,
+		tier_stat->ibatt_max,
+		tier_stat->icl_min,
+		icl_avg,
+		tier_stat->icl_max);
 
-	if (!verbose)
+	if (!verbose || !elap)
 		return len;
 
 	/* time spent in every multi step charging state */
@@ -1431,6 +1506,31 @@
 	return len;
 }
 
+/* health_stats->tier_index is set on stats_close() */
+static int batt_health_stats_cstr(char *buff, int size,
+				  const struct gbms_charging_event *ce_data,
+				  bool verbose)
+{
+	const struct gbms_ce_tier_stats *health_stats = &ce_data->health_stats;
+	const int vti = batt_chg_health_vti(&ce_data->ce_health);
+	int len = 0;
+
+	len += scnprintf(&buff[len], size - len, "\nH: %d %d %ld %d\n",
+			 ce_data->ce_health.rest_state, vti,
+			 ce_data->ce_health.rest_deadline,
+			 ce_data->ce_health.always_on_soc);
+
+	/* no additional tier stats when vti is invalid */
+	if (vti == GBMS_STATS_AC_TI_INVALID)
+		return len;
+
+	len += batt_chg_tier_stats_cstr(&buff[len], size - len,
+						health_stats,
+						verbose);
+	return len;
+}
+
+/* doesn't output hc stats */
 static int batt_chg_stats_cstr(char *buff, int size,
 			       const struct gbms_charging_event *ce_data,
 			       bool verbose)
@@ -1471,11 +1571,17 @@
 	for (i = 0; i < GBMS_STATS_TIER_COUNT; i++) {
 		const int soc_next = batt_chg_stats_soc_next(ce_data, i);
 		const int soc_in = ce_data->tier_stats[i].soc_in >> 8;
+		const long elap = ce_data->tier_stats[i].time_fast +
+				  ce_data->tier_stats[i].time_taper +
+				  ce_data->tier_stats[i].time_other;
+
+		/* Do not output tiers without time */
+		if (!elap)
+			continue;
 
 		len += batt_chg_tier_stats_cstr(&buff[len], size - len,
 						&ce_data->tier_stats[i],
 						verbose);
-
 		if (soc_next) {
 			len += scnprintf(&buff[len], size - len, "\n");
 			len += ttf_soc_cstr(&buff[len], size - len,
@@ -1484,13 +1590,6 @@
 		}
 	}
 
-	/* halth based charging stats (when elap in health > 0) */
-	len += batt_chg_tier_stats_cstr(&buff[len], size - len,
-					&ce_data->health_stats,
-					verbose);
-
-	len += scnprintf(&buff[len], size - len, "\n");
-
 	return len;
 }
 
@@ -1622,6 +1721,17 @@
 
 /* ------------------------------------------------------------------------- */
 
+static inline void batt_reset_rest_state(struct batt_chg_health *chg_health)
+{
+	/* NOTE: should not reset always_on_soc */
+	chg_health->rest_state = CHG_HEALTH_INACTIVE;
+	chg_health->rest_cc_max = -1;
+	chg_health->rest_fv_uv = -1;
+
+	if (chg_health->rest_deadline > 0)
+		chg_health->rest_deadline = 0;
+}
+
 /* should not reset rl state */
 static inline void batt_reset_chg_drv_state(struct batt_drv *batt_drv)
 {
@@ -1649,10 +1759,7 @@
 	/* stats */
 	batt_drv->msc_state = -1;
 	/* health */
-	batt_drv->chg_health.rest_state = CHG_HEALTH_INACTIVE;
-	batt_drv->chg_health.rest_deadline = 0;
-	batt_drv->chg_health.rest_cc_max = -1;
-	batt_drv->chg_health.rest_fv_uv = -1;
+	batt_reset_rest_state(&batt_drv->chg_health);
 }
 
 /* software JEITA, disable charging when outside the charge table.
@@ -1848,113 +1955,148 @@
 	return msc_state;
 }
 
-/* battery health based charging */
-static enum chg_health_state msc_health_active(struct batt_chg_health *rest,
-					       const struct batt_drv *batt_drv)
+/* battery health based charging on SOC */
+static enum chg_health_state msc_health_active(const struct batt_drv *batt_drv)
 {
-	bool vrest = false, srest = false;
+	int ssoc, ssoc_threshold = -1;
 
-	if (rest->rest_soc != -1) {
-		const int ssoc = ssoc_get_capacity(&batt_drv->ssoc_state);
+	ssoc_threshold = CHG_HEALTH_REST_SOC(&batt_drv->chg_health);
+	if (ssoc_threshold < 0)
+		return CHG_HEALTH_INACTIVE;
 
-		srest = (ssoc >= batt_drv->chg_health.rest_soc);
-	}
+	ssoc = ssoc_get_capacity(&batt_drv->ssoc_state);
+	if (ssoc >= ssoc_threshold)
+		return CHG_HEALTH_ACTIVE;
 
-	if (rest->rest_voltage != -1) {
-		int vbatt;
-
-		vbatt = GPSY_GET_PROP(batt_drv->fg_psy,
-				      POWER_SUPPLY_PROP_VOLTAGE_NOW);
-		/* vbatt is negative on error */
-		vrest = (vbatt >= batt_drv->chg_health.rest_voltage);
-	}
-
-	return (srest || vrest) ? CHG_HEALTH_ACTIVE : CHG_HEALTH_ENABLED;
+	return CHG_HEALTH_ENABLED;
 }
 
-/* provide absolute deadline */
+/*
+ * for logging, userspace should use
+ *   deadline == 0 on fast replug (leave initial deadline ok)
+ *   deadline == -1 when the feature is disabled
+ *       if charge health was active/enabled, set to -2
+ *   deadline == absolute requested deadline (if always_on is set)
+ * return true if there was a change
+ */
 static bool batt_health_set_chg_deadline(struct batt_chg_health *chg_health,
-					 time_t deadline)
+					 long long deadline_s)
 {
-	const bool new_deadline = chg_health->rest_deadline != deadline;
 	enum chg_health_state rest_state = chg_health->rest_state;
+	bool new_deadline;
 
-	if (chg_health->rest_deadline == deadline)
-		return false;
+	/* disabled in settings */
+	if (deadline_s < 0) {
+		new_deadline = chg_health->rest_deadline != deadline_s;
+		chg_health->rest_state = CHG_HEALTH_USER_DISABLED;
 
-	if (deadline < 0) {
-		chg_health->rest_state = CHG_HEALTH_DISABLED;
-		chg_health->rest_deadline = -1;
-	} else if (deadline == 0) {
-		chg_health->rest_state = CHG_HEALTH_INACTIVE;
-		chg_health->rest_deadline = 0;
+		if (chg_health->rest_deadline > 0) /* was active */
+			chg_health->rest_deadline = CHG_DEADLINE_SETTING_STOP;
+		else
+			chg_health->rest_deadline = CHG_DEADLINE_SETTING;
+
+	/* disabled with replug */
+	} else if (deadline_s == 0) {
+		new_deadline = chg_health->rest_deadline != deadline_s;
+		/* ->rest_deadline will be reset to 0 on disconnect */
+		chg_health->rest_state = CHG_HEALTH_USER_DISABLED;
 	} else {
+		const time_t rest_deadline = get_boot_sec() + deadline_s;
+
+		/* ->always_on SOC overrides the deadline */
+		new_deadline = chg_health->rest_deadline != rest_deadline;
 		chg_health->rest_state = CHG_HEALTH_ENABLED;
-		chg_health->rest_deadline = deadline;
+		chg_health->rest_deadline = rest_deadline;
 	}
 
 	return new_deadline || rest_state != chg_health->rest_state;
 }
 
-/* health based charging trade charging speed for battery cycle life. */
-static bool msc_logic_health(struct batt_chg_health *rest,
-			     const struct batt_drv *batt_drv)
+/* cc_max in ua: capacity in mAh, rest_rate in deciPct */
+static int msc_logic_health_get_rate(const struct batt_chg_health *rest,
+				     int capacity_ma)
 {
+	return capacity_ma * rest->rest_rate * 10;
+}
+
+/* health based charging trade charging speed for battery cycle life. */
+static bool msc_logic_health(struct batt_drv *batt_drv)
+{
+	const struct gbms_chg_profile *profile = &batt_drv->chg_profile;
+	struct batt_chg_health *rest = &batt_drv->chg_health;
 	const time_t deadline = rest->rest_deadline;
 	const time_t now = get_boot_sec();
 	enum chg_health_state rest_state = rest->rest_state;
-	int ttf_ret = 0, fv_uv = -1, cc_max = -1;
+	int fv_uv = -1, cc_max = -1;
 	bool changed = false;
-	time_t ttf = -1;
+	time_t ttf = 0;
+	bool aon_enabled = rest->always_on_soc != -1;
 
-	/* Disabled is a one way trip until state is reset */
-	if (rest_state == CHG_HEALTH_DISABLED || !deadline)
+	/* DONE, USER_DISABLED reset on disconnect, _DISABLED didn't meet DL */
+	if (rest_state == CHG_HEALTH_USER_DISABLED ||
+	    rest_state == CHG_HEALTH_DONE ||
+	    (aon_enabled == false && (rest_state == CHG_HEALTH_DISABLED ||
+	    rest_state == CHG_HEALTH_INACTIVE)))
 		goto done_exit;
 
-	/*
-	 * ttf_ret < 0 when the device is discharging. This can happen with
-	 * a large sysload on a underpowered adapter. Current strategy leave
-	 * everything as is (hoping) that the load is temporary.
-	 * TODO: send out power supply events?
-	 */
-	ttf_ret = batt_ttf_estimate(&ttf, batt_drv);
-	if (ttf_ret < 0)
-		return false;
+	/* enable if not USER_DISABLED and INACTIVE */
+	if (aon_enabled && rest_state == CHG_HEALTH_INACTIVE)
+		rest_state = CHG_HEALTH_ENABLED;
 
-	if (ttf == 0)  {
-		rest_state = CHG_HEALTH_DONE;
-		rest->rest_deadline = 0;
-	} else if ((now + ttf) > deadline) {
+	/* rest->always_on_soc set ttf = 0 and honor a valid deadline */
+	if (aon_enabled == false) {
+		int ret;
+
 		/*
-		 * Disable health based charging for this session if the
-		 * deadline cannot be met with the current rate. Set a new
-		 * deadline to re-enable for this session.
+		 * ttf_ret < 0 when the device is discharging.
+		 * This can happen with a large sysload on a underpowered
+		 * adapter. Current strategy leaves everything as is (hoping)
+		 * that the load is temporary.
+		 * NOTE: if in ACTIVE mode we could retest msc_health_active()
+		 * and reset to DISABLED if the value returned is not ACTIVE.
+		 * NOTE: ttf needs to know that health is enabled! this is
+		 * done in the caller.
+		 */
+		ret = batt_ttf_estimate(&ttf, batt_drv);
+		if (ret < 0)
+			return false;
+
+		/* estimate is 0 at full, no need for it recharge logic */
+		if (ttf == 0) {
+			rest_state = CHG_HEALTH_DONE;
+			goto done_exit;
+		}
+
+	}
+
+	/* disabled from any state when now + ttf is over a valid deadline */
+	if (deadline > 0 && (now + ttf) > deadline) {
+		/*
+		 * Disable if the deadline cannot be met with the current rate.
+		 * Set a new deadline or reset always_on_soc to re-enable for
+		 * this session.
 		 * TODO: consider adding a margin or debounce it.
 		 */
 		rest_state = CHG_HEALTH_DISABLED;
-		rest->rest_deadline = -1;
-	} else {
-		const struct gbms_chg_profile *profile = &batt_drv->chg_profile;
+		goto done_exit;
+	}
+
+	/*
+	 * State will change from _ACTIVE to _ENABLED after a discharge.
+	 * State will transition back to _ENABLED after some time unless
+	 * the deadline is met.
+	 */
+	rest_state = msc_health_active(batt_drv);
+
+done_exit:
+	if (rest_state == CHG_HEALTH_ACTIVE || rest_state == CHG_HEALTH_DONE) {
+		const int capacity_ma = batt_drv->battery_capacity;
+
+		cc_max = msc_logic_health_get_rate(rest, capacity_ma);
 
 		/*
-		 * only needs to be done if rest_state != CHG_HEALTH_ACTIVE
-		 * NOTE: could also DISABLE when transitioning from
-		 * ACTIVE to ENABLED
-		 */
-		rest_state = msc_health_active(rest, batt_drv);
-		if (rest_state != CHG_HEALTH_ACTIVE)
-			goto done_exit;
-
-		/* battery_capacity in mAh, rest_rate in deciC, cc_max in */
-		if (rest->rest_rate == 0) {
-			cc_max = 0;
-		} else {
-			cc_max = batt_drv->battery_capacity * rest->rest_rate;
-			cc_max *= 10;
-		}
-
-		/*
-		 * default FV_UV to the last charge tier.
+		 * default FV_UV to the last charge tier since fv_uv will be
+		 * set to that on _DONE.
 		 * NOTE this might need to be adjusted for the actual charge
 		 * tiers that have nonzero charging current
 		 */
@@ -1963,20 +2105,28 @@
 		/* TODO: make sure that we wakeup when we are close to ttf */
 	}
 
-done_exit:
 	/* send a power supply event when rest_state changes */
 	changed = rest->rest_state != rest_state;
-	if (changed)
-		pr_info("MSC_HEALTH: now=%d deadline=%d ttf=%ld state=%d->%d fv_uv=%d, cc_max=%d\n",
-			now, rest->rest_deadline, (ttf_ret < 0) ? ttf_ret : ttf,
-			rest->rest_state, rest_state, fv_uv, cc_max);
 
 	/* msc_logic_* will vote on cc_max and fv_uv. */
-	rest->rest_state = rest_state;
 	rest->rest_cc_max = cc_max;
 	rest->rest_fv_uv = fv_uv;
 
-	return changed;
+	if (!changed)
+		return false;
+
+	pr_info("MSC_HEALTH: now=%d deadline=%d aon_soc=%d ttf=%ld state=%d->%d fv_uv=%d, cc_max=%d\n",
+		now, rest->rest_deadline, rest->always_on_soc,
+		ttf, rest->rest_state, rest_state, fv_uv, cc_max);
+	logbuffer_log(batt_drv->ttf_stats.ttf_log,
+		      "MSC_HEALTH: now=%d deadline=%d aon_soc=%d ttf=%ld state=%d->%d fv_uv=%d, cc_max=%d\n",
+		      now, rest->rest_deadline, rest->always_on_soc,
+		      ttf, rest->rest_state, rest_state, fv_uv, cc_max);
+
+	rest->rest_state = rest_state;
+	memcpy(&batt_drv->ce_data.ce_health, &batt_drv->chg_health,
+			sizeof(batt_drv->ce_data.ce_health));
+	return true;
 }
 
 static int msc_pm_hold(int msc_state)
@@ -2210,16 +2360,17 @@
 		batt_drv->checked_ov_cnt = 0;
 	}
 
-	/* book elapsed time to previous tier & msc_state
+	/*
+	 * book elapsed time to previous tier & msc_state
 	 * NOTE: temp_idx != -1 but batt_drv->msc_state could be -1
 	 */
 	mutex_lock(&batt_drv->stats_lock);
-	if (vbatt_idx != -1 && vbatt_idx < GBMS_STATS_TIER_COUNT) {
-		int tier_idx = batt_drv->vbatt_idx;
+	if (vbatt_idx != -1 && vbatt_idx < profile->volt_nb_limits) {
+		int tier_idx = batt_chg_vbat2tier(batt_drv->vbatt_idx);
 
 		/* this is the seed after the connect */
-		if (batt_drv->vbatt_idx == -1) {
-			tier_idx = vbatt_idx;
+		if (tier_idx == -1) {
+			tier_idx = batt_chg_vbat2tier(vbatt_idx);
 			elap = 0;
 		}
 
@@ -2283,6 +2434,7 @@
 
 		/* change curve before changing the state */
 		ssoc_change_curve(&batt_drv->ssoc_state, SSOC_UIC_TYPE_DSG);
+		batt_drv->chg_health.rest_deadline = 0;
 		batt_reset_chg_drv_state(batt_drv);
 		batt_update_cycle_count(batt_drv);
 		batt_rl_reset(batt_drv);
@@ -2353,13 +2505,12 @@
 		goto msc_logic_exit;
 	}
 
-	/* TTF estimates will return an error when discharging: ignore the
-	 * error and switch to POR profile for now.
-	 * TODO: this might need to behave in a different way when health
-	 * based charging is active
+	/*
+	 * TODO: might need to behave in a different way when health based
+	 * charging is active
 	 */
-	changed |= msc_logic_health(&batt_drv->chg_health, batt_drv);
-	if (batt_drv->chg_health.rest_state == CHG_HEALTH_ACTIVE) {
+	changed |= msc_logic_health(batt_drv);
+	if (CHG_HEALTH_REST_IS_ACTIVE(&batt_drv->chg_health)) {
 		batt_drv->msc_state = MSC_HEALTH;
 		/* make sure using rest_fv_uv when HEALTH_ACTIVE */
 		batt_drv->fv_uv = 0;
@@ -2901,35 +3052,6 @@
 			debug_chg_health_thr_soc_write, "%u\n");
 
 /* Adaptive Charging */
-static int debug_chg_health_thr_volt_read(void *data, u64 *val)
-{
-	struct batt_drv *batt_drv = (struct batt_drv *)data;
-
-	if (!batt_drv->psy)
-		return -EINVAL;
-
-	*val = batt_drv->chg_health.rest_voltage;
-	return 0;
-}
-
-/* Adaptive Charging */
-static int debug_chg_health_thr_volt_write(void *data, u64 val)
-{
-	struct batt_drv *batt_drv = (struct batt_drv *)data;
-
-	if (!batt_drv->psy)
-		return -EINVAL;
-
-	batt_drv->chg_health.rest_voltage = val;
-	return 0;
-}
-
-/* Adaptive Charging */
-DEFINE_SIMPLE_ATTRIBUTE(debug_chg_health_thr_volt_fops,
-			debug_chg_health_thr_volt_read,
-			debug_chg_health_thr_volt_write, "%u\n");
-
-/* Adaptive Charging */
 static int debug_chg_health_set_stage(void *data, u64 val)
 {
 	struct batt_drv *batt_drv = (struct batt_drv *)data;
@@ -3065,21 +3187,32 @@
 	return count;
 }
 
+/* regular and health stats */
+static ssize_t batt_chg_qual_stats_cstr(char *buff, int size,
+					struct gbms_charging_event *ce_qual,
+					bool verbose)
+{
+	ssize_t len = 0;
+
+	len += batt_chg_stats_cstr(&buff[len], size - len, ce_qual, verbose);
+	if (ce_qual->ce_health.rest_state != CHG_HEALTH_INACTIVE)
+		len += batt_health_stats_cstr(&buff[len], size - len,
+					      ce_qual, verbose);
+	return len;
+}
+
 static ssize_t batt_show_chg_stats(struct device *dev,
 				   struct device_attribute *attr, char *buf)
 {
 	struct power_supply *psy = container_of(dev, struct power_supply, dev);
 	struct batt_drv *batt_drv =(struct batt_drv *)
 					power_supply_get_drvdata(psy);
+	struct gbms_charging_event *ce_qual = &batt_drv->ce_qual;
 	int len = -ENODATA;
 
 	mutex_lock(&batt_drv->stats_lock);
-
-	if (batt_drv->ce_qual.last_update - batt_drv->ce_qual.first_update)
-		len = batt_chg_stats_cstr(buf,
-					  PAGE_SIZE,
-					  &batt_drv->ce_qual, false);
-
+	if (ce_qual->last_update - ce_qual->first_update)
+		len = batt_chg_qual_stats_cstr(buf, PAGE_SIZE, ce_qual, false);
 	mutex_unlock(&batt_drv->stats_lock);
 
 	return len;
@@ -3088,23 +3221,62 @@
 static const DEVICE_ATTR(charge_stats, 0664, batt_show_chg_stats,
 					     batt_ctl_chg_stats);
 
+/* show current/active and qual data */
 static ssize_t batt_show_chg_details(struct device *dev,
 				     struct device_attribute *attr, char *buf)
 {
 	struct power_supply *psy = container_of(dev, struct power_supply, dev);
 	struct batt_drv *batt_drv =(struct batt_drv *)
 					power_supply_get_drvdata(psy);
+	struct gbms_charging_event *ce_data = &batt_drv->ce_data;
 	const bool qual_valid = (batt_drv->ce_qual.last_update -
 				batt_drv->ce_qual.first_update) != 0;
 	int len = 0;
 
 	mutex_lock(&batt_drv->stats_lock);
 
-	len += batt_chg_stats_cstr(&buf[len], PAGE_SIZE - len,
-				   &batt_drv->ce_data, true);
-	if (qual_valid)
-		len += batt_chg_stats_cstr(&buf[len], PAGE_SIZE - len,
-					   &batt_drv->ce_qual, true);
+	/* this is the current one */
+	len += batt_chg_stats_cstr(&buf[len], PAGE_SIZE - len, ce_data, true);
+
+	/*
+	 * stats are accumulated in ce_data->health_stats, rest_* fields
+	 * are set on stats_close()
+	 */
+	if (batt_drv->chg_health.rest_state != CHG_HEALTH_INACTIVE) {
+		struct gbms_ce_tier_stats *health_stats =
+					&batt_drv->ce_data.health_stats;
+		const long elap = health_stats->time_fast +
+				  health_stats->time_taper +
+				  health_stats->time_other;
+		const time_t now = get_boot_sec();
+		int vti;
+
+		vti = batt_chg_health_vti(&batt_drv->chg_health);
+		len += scnprintf(&buf[len], PAGE_SIZE - len,
+				"\nH: %d %d %ld %ld %ld %d",
+				batt_drv->chg_health.rest_state,
+				vti,
+				elap,
+				now,
+				batt_drv->chg_health.rest_deadline,
+				batt_drv->chg_health.always_on_soc);
+
+		/* NOTE: vtier_idx is -1, can also check elap  */
+		if (health_stats->soc_in != -1)
+			len += batt_chg_tier_stats_cstr(&buf[len],
+							PAGE_SIZE - len,
+							health_stats,
+							!!elap);
+	}
+
+	len += scnprintf(&buf[len], PAGE_SIZE - len, "\n");
+
+	/* this was the last one (if present) */
+	if (qual_valid) {
+		len += batt_chg_qual_stats_cstr(&buf[len], PAGE_SIZE - len,
+						&batt_drv->ce_qual, true);
+		len += scnprintf(&buf[len], PAGE_SIZE - len, "\n");
+	}
 
 	mutex_unlock(&batt_drv->stats_lock);
 
@@ -3233,7 +3405,7 @@
 		s = "Active";
 		break;
 	case CHG_HEALTH_DONE:
-		s = "Active";
+		s = "Done";
 		break;
 	default:
 		break;
@@ -3245,6 +3417,80 @@
 
 static const DEVICE_ATTR(charge_stage, 0444, chg_health_show_stage, NULL);
 
+static ssize_t chg_health_charge_limit_get(struct device *dev,
+					   struct device_attribute *attr,
+					   char *buf)
+{
+	struct power_supply *psy = container_of(dev, struct power_supply, dev);
+	struct batt_drv *batt_drv = (struct batt_drv *)
+					power_supply_get_drvdata(psy);
+
+	return scnprintf(buf, PAGE_SIZE, "%d\n",
+			 batt_drv->chg_health.always_on_soc);
+}
+/* setting disable (deadline = -1) or replug (deadline == 0) will disable */
+static ssize_t chg_health_charge_limit_set(struct device *dev,
+					   struct device_attribute *attr,
+					   const char *buf, size_t count)
+{
+	struct power_supply *psy = container_of(dev, struct power_supply, dev);
+	struct batt_drv *batt_drv = (struct batt_drv *)
+					power_supply_get_drvdata(psy);
+	enum chg_health_state rest_state;
+	long always_on_soc;
+
+	if (kstrtol(buf, 10, &always_on_soc) != 0)
+		return -EINVAL;
+
+	/* Always enable AC when SOC is over trigger */
+	if (always_on_soc < -1 || always_on_soc > 99)
+		return -EINVAL;
+
+	mutex_lock(&batt_drv->chg_lock);
+
+	/*
+	 * There are interesting overlaps with the AC standard behavior since
+	 * the aon limit can be set at any time (and while AC limit is active)
+	 * TODO: fully document the state machine
+	 */
+	rest_state = batt_drv->chg_health.rest_state;
+
+	if (always_on_soc != -1) {
+		switch (rest_state) {
+		case CHG_HEALTH_DISABLED: /* didn't meet deadline */
+		case CHG_HEALTH_INACTIVE: /* deadline was not provided */
+			rest_state = CHG_HEALTH_ENABLED;
+			break;
+		default:
+			/* _DONE, _ENABLED, _ACTIVE, _USER_DISABLED */
+			break;
+		}
+	} else if (batt_drv->chg_health.always_on_soc != -1) {
+
+		switch (rest_state) {
+		case CHG_HEALTH_ENABLED: /* waiting for always_on_soc */
+		case CHG_HEALTH_ACTIVE: /* activated at always_on_soc */
+			if (batt_drv->chg_health.rest_deadline > 0)
+				rest_state = CHG_HEALTH_ENABLED;
+			else
+				rest_state = CHG_HEALTH_INACTIVE;
+			break;
+		default:
+			/* _DONE, _DISABLED, _USER_DISABLED */
+			break;
+		}
+	}
+
+	batt_drv->chg_health.always_on_soc = always_on_soc;
+	batt_drv->chg_health.rest_state = rest_state;
+
+	mutex_unlock(&batt_drv->chg_lock);
+	power_supply_changed(batt_drv->psy);
+	return count;
+}
+
+static DEVICE_ATTR(charge_limit, 0660, chg_health_charge_limit_get,
+		   chg_health_charge_limit_set);
 
 static ssize_t batt_show_chg_deadline(struct device *dev,
 				      struct device_attribute *attr, char *buf)
@@ -3255,16 +3501,31 @@
 	const time_t now = get_boot_sec();
 	long long deadline = 0;
 
-	/* API works in seconds */
 	mutex_lock(&batt_drv->chg_lock);
 
+	/*
+	 * = (rest_deadline <= 0) means state is either Inactive or Disabled
+	 * = (rest_deadline < now) means state is either Done or Disabled
+	 *
+	 * State becomes Disabled from Enabled or Active when/if msc_logic()
+	 * determines that the device cannot reach full before the deadline.
+	 *
+	 * UI checks for:
+	 *   (stage == 'Active' || stage == 'Enabled') && deadline > 0
+	 */
 	deadline = batt_drv->chg_health.rest_deadline;
-	if (batt_drv->chg_health.rest_deadline > 0)
+	if (deadline > 0 && deadline > now)
 		deadline -= now;
+	else if (deadline > 0)
+		deadline = 0;
 
 	mutex_unlock(&batt_drv->chg_lock);
 
-	return scnprintf(buf, PAGE_SIZE, "%lld\n", (unsigned long)deadline);
+	/*
+	 * deadline < 0 feature disabled. deadline = 0 expired or disabled for
+	 * this session, deadline > 0 time to deadline otherwise.
+	 */
+	return scnprintf(buf, PAGE_SIZE, "%lld\n", (long long)deadline);
 }
 
 /* userspace restore the TTF data with this */
@@ -3275,29 +3536,31 @@
 	struct power_supply *psy = container_of(dev, struct power_supply, dev);
 	struct batt_drv *batt_drv = (struct batt_drv *)
 					power_supply_get_drvdata(psy);
-	const time_t now = get_boot_sec();
-	int deadline_min;
+	long long deadline_s;
 	bool changed;
 
-	deadline_min = simple_strtoull(buf, NULL, 10);
-
 	/* API works in seconds */
+	kstrtoll(buf, 10, &deadline_s);
+
 	mutex_lock(&batt_drv->chg_lock);
-	if (!batt_drv->ssoc_state.buck_enabled) {
+	/* Let deadline < 0 pass to set stats */
+	if (!batt_drv->ssoc_state.buck_enabled && deadline_s >= 0) {
 		mutex_unlock(&batt_drv->chg_lock);
 		return -EINVAL;
 	}
 
 	changed = batt_health_set_chg_deadline(&batt_drv->chg_health,
-					       now + deadline_min);
+					       deadline_s);
 	mutex_unlock(&batt_drv->chg_lock);
 
 	if (changed)
 		power_supply_changed(batt_drv->psy);
 
-	pr_info("MSC_HEALTH deadline at %ld, now=%ld\n",
-		batt_drv->chg_health.rest_deadline,
-		now);
+	pr_info("MSC_HEALTH deadline_s=%ld deadline at %ld\n",
+		deadline_s, batt_drv->chg_health.rest_deadline);
+	logbuffer_log(batt_drv->ttf_stats.ttf_log,
+		     "MSC_HEALTH: deadline_s=%ld deadline at %ld",
+		     deadline_s, batt_drv->chg_health.rest_deadline);
 
 	return count;
 }
@@ -3305,6 +3568,46 @@
 static const DEVICE_ATTR(charge_deadline, 0664, batt_show_chg_deadline,
 						batt_set_chg_deadline);
 
+static ssize_t time_to_ac_show(struct device *dev,
+				    struct device_attribute *attr, char *buf)
+{
+	struct power_supply *psy = container_of(dev, struct power_supply, dev);
+	struct batt_drv *batt_drv = (struct batt_drv *)
+					power_supply_get_drvdata(psy);
+	const int soc = CHG_HEALTH_REST_SOC(&batt_drv->chg_health);
+	qnum_t soc_raw = ssoc_get_capacity_raw(&batt_drv->ssoc_state);
+	qnum_t soc_health = qnum_fromint(soc);
+	time_t estimate;
+	int rc;
+
+	rc = ttf_soc_estimate(&estimate, &batt_drv->ttf_stats,
+			      &batt_drv->ce_data, soc_raw,
+			      soc_health - qnum_rconst(SOC_ROUND_BASE));
+	if (rc < 0)
+		estimate = -1;
+
+	if (estimate == -1)
+		return -ERANGE;
+
+	return scnprintf(buf, PAGE_SIZE, "%lld\n", (long long)estimate);
+}
+
+static const DEVICE_ATTR_RO(time_to_ac);
+
+static ssize_t ac_soc_show(struct device *dev,
+				    struct device_attribute *attr, char *buf)
+{
+	struct power_supply *psy = container_of(dev, struct power_supply, dev);
+	struct batt_drv *batt_drv = (struct batt_drv *)
+					power_supply_get_drvdata(psy);
+
+	return scnprintf(buf, PAGE_SIZE, "%d\n",
+			 CHG_HEALTH_REST_SOC(&batt_drv->chg_health));
+}
+
+static const DEVICE_ATTR_RO(ac_soc);
+
+
 enum batt_ssoc_status {
 	BATT_SSOC_STATUS_UNKNOWN = 0,
 	BATT_SSOC_STATUS_CONNECTED = 1,
@@ -3387,13 +3690,23 @@
 	ret = device_create_file(&batt_drv->psy->dev,
 				 &dev_attr_charge_deadline);
 	if (ret)
-		dev_err(&batt_drv->psy->dev,
-				"Failed to create chg_deadline\n");
+		dev_err(&batt_drv->psy->dev, "Failed to create chg_deadline\n");
 
 	ret = device_create_file(&batt_drv->psy->dev, &dev_attr_charge_stage);
 	if (ret)
-		dev_err(&batt_drv->psy->dev,
-				"Failed to create charge_stage\n");
+		dev_err(&batt_drv->psy->dev, "Failed to create charge_stage\n");
+
+	ret = device_create_file(&batt_drv->psy->dev, &dev_attr_charge_limit);
+	if (ret != 0)
+		dev_err(&batt_drv->psy->dev, "Failed to create charge_limit\n");
+
+	ret = device_create_file(&batt_drv->psy->dev, &dev_attr_time_to_ac);
+	if (ret != 0)
+		dev_err(&batt_drv->psy->dev, "Failed to create time_to_ac\n");
+
+	ret = device_create_file(&batt_drv->psy->dev, &dev_attr_ac_soc);
+	if (ret != 0)
+		dev_err(&batt_drv->psy->dev, "Failed to create ac_soc\n");
 
 	/* time to full */
 	ret = device_create_file(&batt_drv->psy->dev, &dev_attr_ttf_stats);
@@ -3430,8 +3743,6 @@
 		/* health charging */
 		debugfs_create_file("chg_health_thr_soc", 0600, de,
 				    batt_drv, &debug_chg_health_thr_soc_fops);
-		debugfs_create_file("chg_health_thr_volt", 0600, de,
-				    batt_drv, &debug_chg_health_thr_volt_fops);
 		debugfs_create_file("chg_health_rest_rate", 0600, de,
 				    batt_drv, &debug_chg_health_rest_rate_fops);
 		debugfs_create_file("chg_health_stage", 0600, de,
@@ -4521,7 +4832,9 @@
 	/* google_resistance  */
 	batt_res_load_data(&batt_drv->res_state, batt_drv->fg_psy);
 
-	/* health based charging */
+	/* health based charging, triggers */
+	batt_drv->chg_health.always_on_soc = -1;
+
 	ret = of_property_read_u32(batt_drv->device->of_node,
 				   "google,chg-rest-soc",
 				   &batt_drv->chg_health.rest_soc);
@@ -4529,22 +4842,11 @@
 		batt_drv->chg_health.rest_soc = -1;
 
 	ret = of_property_read_u32(batt_drv->device->of_node,
-				   "google,chg-rest-voltage",
-				   &batt_drv->chg_health.rest_voltage);
-	if (ret < 0)
-		batt_drv->chg_health.rest_voltage = -1;
-
-	ret = of_property_read_u32(batt_drv->device->of_node,
 				   "google,chg-rest-rate",
 				   &batt_drv->chg_health.rest_rate);
 	if (ret < 0)
 		batt_drv->chg_health.rest_rate = 0;
 
-	batt_drv->chg_health.rest_state = CHG_HEALTH_INACTIVE;
-	batt_drv->chg_health.rest_deadline = 0;
-	batt_drv->chg_health.rest_cc_max = -1;
-	batt_drv->chg_health.rest_fv_uv = -1;
-
 	/* override setting google,battery-roundtrip = 0 in device tree */
 	batt_drv->disable_votes =
 		of_property_read_bool(node, "google,disable-votes");
diff --git a/drivers/power/supply/google/google_bms.h b/drivers/power/supply/google/google_bms.h
index 98d8642..7303e22 100644
--- a/drivers/power/supply/google/google_bms.h
+++ b/drivers/power/supply/google/google_bms.h
@@ -137,7 +137,7 @@
 
 struct gbms_ce_tier_stats {
 	int8_t		temp_idx;
-	uint8_t		vtier_idx;
+	int8_t		vtier_idx;
 
 	int16_t		soc_in;		/* 8.8 */
 	uint16_t	cc_in;
@@ -203,6 +203,71 @@
 	struct logbuffer *ttf_log;
 };
 
+/*
+ * health based changing can be enabled from userspace with a deadline
+ *
+ * initial state:
+ *	deadline = 0, rest_state = CHG_HEALTH_INACTIVE
+ *
+ * deadline = -1 from userspace
+ *	CHG_HEALTH_* -> CHG_HEALTH_USER_DISABLED (settings disabled)
+ * on deadline = 0 from userspace
+ *	CHG_HEALTH_* -> CHG_HEALTH_USER_DISABLED (alarm, plug or misc. disabled)
+ * on deadline > 0 from userspace
+ *	CHG_HEALTH_* -> CHG_HEALTH_ENABLED
+ *
+ *  from CHG_HEALTH_ENABLED, msc_logic_health() can change the state to
+ *	CHG_HEALTH_ENABLED  <-> CHG_HEALTH_ACTIVE
+ *	CHG_HEALTH_ENABLED  -> CHG_HEALTH_DISABLED
+ *
+ * from CHG_HEALTH_ACTIVE, msc_logic_health() can change the state to
+ *	CHG_HEALTH_ACTIVE   <-> CHG_HEALTH_ENABLED
+ *	CHG_HEALTH_ACTIVE   -> CHG_HEALTH_DISABLED
+ *	CHG_HEALTH_ACTIVE   -> CHG_HEALTH_DONE
+ */
+enum chg_health_state {
+	CHG_HEALTH_USER_DISABLED = -3,
+	CHG_HEALTH_DISABLED = -2,
+	CHG_HEALTH_DONE = -1,
+	CHG_HEALTH_INACTIVE = 0,
+	CHG_HEALTH_ENABLED,
+	CHG_HEALTH_ACTIVE,
+};
+
+/* tier index used to log the session */
+enum gbms_stats_ac_tier_idx_t {
+	GBMS_STATS_AC_TI_DISABLE_SETTING_STOP = -4,
+	GBMS_STATS_AC_TI_DISABLE_MISC = -3,
+	GBMS_STATS_AC_TI_DISABLE_SETTING = -2,
+	GBMS_STATS_AC_TI_INVALID = -1,
+	GBMS_STATS_AC_TI_VALID = 10,
+	GBMS_STATS_AC_TI_DISABLED,
+	GBMS_STATS_AC_TI_ENABLED,
+	GBMS_STATS_AC_TI_ACTIVE,
+	GBMS_STATS_AC_TI_ENABLED_AON,
+	GBMS_STATS_AC_TI_ACTIVE_AON,
+};
+
+/* health state */
+struct batt_chg_health {
+	int rest_soc;		/* entry criteria */
+	int rest_voltage;	/* entry criteria */
+	int always_on_soc;	/* entry criteria */
+
+	time_t rest_deadline;	/* full by this in seconds */
+	int rest_rate;		/* centirate once enter */
+
+	enum chg_health_state rest_state;
+	int rest_cc_max;
+	int rest_fv_uv;
+};
+
+#define CHG_HEALTH_REST_IS_ACTIVE(rest) \
+	((rest)->rest_state == CHG_HEALTH_ACTIVE)
+
+#define CHG_HEALTH_REST_SOC(rest) (((rest)->always_on_soc != -1) ? \
+			(rest)->always_on_soc : (rest)->rest_soc)
+
 struct gbms_charging_event {
 	union gbms_ce_adapter_details	adapter_details;
 
@@ -211,7 +276,6 @@
 	/* charge event and tier tracking */
 	struct gbms_ce_stats		charging_stats;
 	struct gbms_ce_tier_stats	tier_stats[GBMS_STATS_TIER_COUNT];
-	struct gbms_ce_tier_stats	health_stats;
 
 	/* soc tracking for time to full */
 	struct ttf_soc_stats soc_stats;
@@ -221,6 +285,10 @@
 	time_t last_update;
 	uint32_t chg_sts_qual_time;
 	uint32_t chg_sts_delta_soc;
+
+	/* health based charging */
+	struct batt_chg_health		ce_health;	/* updated on close */
+	struct gbms_ce_tier_stats	health_stats;	/* updated in HC */
 };
 
 #define GBMS_CCCM_LIMITS(profile, ti, vi) \
diff --git a/drivers/power/supply/google/google_ttf.c b/drivers/power/supply/google/google_ttf.c
index b781326..0f6f7f91 100644
--- a/drivers/power/supply/google/google_ttf.c
+++ b/drivers/power/supply/google/google_ttf.c
@@ -45,15 +45,14 @@
 /* actual adapter current capability for this charging event
  * NOTE: performance for a tier are known only after entering the tier
  */
-static int ttf_pwr_icl(const struct gbms_charging_event *ce_data,
-		       int temp_idx, int vbatt_idx)
+static int ttf_pwr_icl(const struct gbms_ce_tier_stats *ts,
+		       const union gbms_ce_adapter_details *ad)
 {
-	const struct gbms_ce_tier_stats *ts = &ce_data->tier_stats[vbatt_idx];
 	int elap, amperage;
 
 	elap = ts->time_fast + ts->time_taper;
 	if (elap <= ELAP_LIMIT_S)
-		amperage = ce_data->adapter_details.ad_amperage * 100;
+		amperage = ad->ad_amperage * 100;
 	else
 		amperage = ts->icl_sum / (elap + ts->time_other);
 
@@ -61,36 +60,33 @@
 }
 
 /* NOTE: the current in taper might need to be accounted in a different way */
-static int ttf_pwr_ibatt(const struct gbms_charging_event *ce_data,
-			 int temp_idx, int vbatt_idx)
+static int ttf_pwr_ibatt(const struct gbms_ce_tier_stats *ts)
 {
-	const struct gbms_ce_tier_stats *ts = &ce_data->tier_stats[vbatt_idx];
 	int avg_ibatt, elap, sign = 1;
 
 	elap = ts->time_fast + ts->time_taper;
+	/* averages are not reliable until after some time in tier */
 	if (elap <= ELAP_LIMIT_S) {
-		pr_debug("%d,%d: fast=%d taper=%d other=%d limit=%d\n",
-			vbatt_idx, temp_idx,
-			ts->time_fast, ts->time_taper, ts->time_other,
-			ELAP_LIMIT_S);
+		pr_debug("%s: limit=%d elap=%d (%d+%d) o=%d\n", __func__,
+			 elap, ELAP_LIMIT_S, ts->time_fast, ts->time_taper,
+			 ts->time_other);
 		return 0;
 	}
 
-	/* actual */
+	/* actual, called only when avg_ibatt in tier indicates charging */
 	avg_ibatt = ts->ibatt_sum / (elap + ts->time_other);
 	if (avg_ibatt < 0)
 		sign = -1;
 
-	pr_debug("%d,%d: fast=%d taper=%d other=%d avg_ibatt=%d\n",
-		vbatt_idx, temp_idx,
-		ts->time_fast, ts->time_taper, ts->time_other,
-		avg_ibatt * sign);
+	pr_debug("%s: elap=%d (%d+%d+%d) sum=%ld avg_ibatt=%d\n", __func__,
+		 elap, ts->time_fast, ts->time_taper, ts->time_other,
+		 ts->ibatt_sum, avg_ibatt * sign);
 
 	return avg_ibatt * sign;
 }
 
 /* nominal voltage tier index for this soc */
-static int ttf_pwr_tier(const struct batt_ttf_stats *stats, int soc)
+static int ttf_pwr_vtier_idx(const struct batt_ttf_stats *stats, int soc)
 {
 	int i;
 
@@ -101,28 +97,101 @@
 	return i - 1;
 }
 
-/* nominal average current demand for this tier at max rate
- * NOTE: tier and soc stats keep track of aging (might not need)
+/*
+ * reference or current average current demand for a soc at max rate.
+ * NOTE: always <= cc_max for reference temperature
  */
-static int ttf_pwr_avg_cc(const struct batt_ttf_stats *stats, int soc)
+static int ttf_ref_cc(const struct batt_ttf_stats *stats, int soc)
 {
 	const struct ttf_soc_stats *sstat = NULL;
 	int delta_cc;
 
 	/* soc average current demand */
-	if (stats->soc_stats.cc[soc] && stats->soc_stats.elap[soc])
+	if (stats->soc_stats.cc[soc + 1] && stats->soc_stats.cc[soc] &&
+	    stats->soc_stats.elap[soc])
 		sstat = &stats->soc_stats;
-	else if (stats->soc_ref.cc[soc] && stats->soc_ref.elap[soc])
+	else if (stats->soc_ref.cc[soc + 1] && stats->soc_ref.cc[soc] &&
+		 stats->soc_ref.elap[soc])
 		sstat = &stats->soc_ref;
 	else
 		return 0;
 
 	delta_cc = (sstat->cc[soc + 1] - sstat->cc[soc]);
 
+	pr_debug("%s %d: delta_cc=%d elap=%ld\n", __func__, soc,
+		delta_cc, sstat->elap[soc]);
+
 	return (delta_cc * 3600) / sstat->elap[soc];
 }
 
-/* time scaling factor for available power and SOC demand.
+/* assumes that health is active for any soc greater than CHG_HEALTH_REST_SOC */
+static int ttf_pwr_health(const struct gbms_charging_event *ce_data,
+			  int soc)
+{
+	return CHG_HEALTH_REST_IS_ACTIVE(&ce_data->ce_health) &&
+	       soc >= CHG_HEALTH_REST_SOC(&ce_data->ce_health);
+}
+
+/*
+ * equivalent icl: minimum between actual input current limit and battery
+ * everage current _while_in_tier. actual_icl will be lower in high current
+ * tiers for bad cables, ibatt is affected by temperature tier and sysload.
+ */
+static int ttf_pwr_equiv_icl(const struct gbms_charging_event *ce_data,
+			     int vbatt_idx, int soc)
+{
+	const struct gbms_chg_profile *profile = ce_data->chg_profile;
+	const int aratio = (ce_data->adapter_details.ad_voltage * 10000) /
+			   (profile->volt_limits[vbatt_idx] / 1000);
+	const struct gbms_ce_tier_stats *tier_stats;
+	const int efficiency = 95; /* TODO: use real efficiency */
+	int equiv_icl, act_icl, act_ibatt, health_ibatt = -1;
+
+	/* Health collects in ce_data->health_stats vtier */
+	if (ttf_pwr_health(ce_data, soc)) {
+		health_ibatt = ce_data->ce_health.rest_cc_max / 1000;
+		tier_stats = &ce_data->health_stats;
+	} else {
+		tier_stats = &ce_data->tier_stats[vbatt_idx];
+	}
+
+	/*
+	 * actual adapter capabilities at adapter voltage for vtier
+	 * NOTE: demand and cable might cause voltage and icl do droop
+	 */
+	act_icl = ttf_pwr_icl(tier_stats, &ce_data->adapter_details);
+	if (act_icl <= 0) {
+		pr_debug("%s: negative,null act_icl=%d\n", __func__, act_icl);
+		return -EINVAL;
+	}
+
+	/* scale icl (at adapter voltage) to vtier */
+	equiv_icl = (act_icl * aratio * 100) / efficiency;
+	pr_debug("%s: act_icl=%d aratio=%d equiv_icl=%d\n",
+		 __func__, act_icl, aratio, equiv_icl);
+
+	/* actual ibatt in this tier: act_ibatt==0 when too early to tell */
+	act_ibatt = ttf_pwr_ibatt(tier_stats);
+	if (act_ibatt == 0 && health_ibatt > 0)
+		act_ibatt = health_ibatt;
+	if (act_ibatt < 0) {
+		pr_debug("%s: discharging ibatt=%d\n", __func__, act_ibatt);
+		return -EINVAL;
+	}
+
+	/* assume that can deliver equiv_icl when act_ibatt == 0 */
+	if (act_ibatt > 0 && act_ibatt < equiv_icl) {
+		pr_debug("%s: sysload ibatt=%d, reduce icl %d->%d\n",
+			 __func__, act_ibatt, equiv_icl, act_ibatt);
+		equiv_icl = act_ibatt;
+	}
+
+	pr_debug("%s: equiv_icl=%d\n", __func__, equiv_icl);
+	return equiv_icl;
+}
+
+/*
+ * time scaling factor for available power and SOC demand.
  * NOTE: usually called when soc < ssoc_in && soc > ce_data->last_soc
  * TODO: this is very inefficient
  */
@@ -130,14 +199,13 @@
 			 const struct gbms_charging_event *ce_data,
 			 int soc)
 {
-	int ratio;
-	int avg_cc, pwr_demand;
-	int act_icl, pwr_avail;
-	int act_ibatt, cc_max;
-	int vbatt_idx, temp_idx;
 	const struct gbms_chg_profile *profile = ce_data->chg_profile;
+	int cc_max, vbatt_idx, temp_idx;
+	int avg_cc, equiv_icl;
+	int ratio;
 
-	vbatt_idx = ttf_pwr_tier(stats, soc);
+	/* regular charging tier */
+	vbatt_idx = ttf_pwr_vtier_idx(stats, soc);
 	if (vbatt_idx < 0)
 		return -EINVAL;
 
@@ -154,9 +222,10 @@
 		if (t_avg == 0)
 			t_avg = 250;
 
+		/* average temperature in tier for charge tier index */
 		temp_idx = gbms_msc_temp_idx(profile, t_avg);
-		pr_debug("%d: temp_idx=%d t_avg=%ld sum=%ld elap=%d\n",
-			soc, temp_idx, t_avg,
+		pr_debug("%s %d: temp_idx=%d t_avg=%ld sum=%ld elap=%d\n",
+			__func__, soc, temp_idx, t_avg,
 			ce_data->tier_stats[vbatt_idx].temp_sum,
 			elap);
 
@@ -164,130 +233,148 @@
 			return -EINVAL;
 	}
 
-	/* max tier demand at this temperature index */
+	/* max tier demand for voltage tier at this temperature index */
 	cc_max = GBMS_CCCM_LIMITS(profile, temp_idx, vbatt_idx) / 1000;
-	/* statistical demand for soc, account for taper */
-	avg_cc = ttf_pwr_avg_cc(stats, soc);
-	if (avg_cc <= 0 || avg_cc > cc_max) {
-		pr_debug("%d: demand use default avg_cc=%d->%d\n",
-			soc, avg_cc, cc_max);
+	/* statistical current demand for soc (<= cc_max) */
+	avg_cc = ttf_ref_cc(stats, soc);
+	if (avg_cc <= 0) {
+		/* default to cc_max if we have no data */
+		pr_debug("%s %d: demand use default avg_cc=%d->%d\n",
+			__func__, soc, avg_cc, cc_max);
 		avg_cc = cc_max;
 	}
 
-	/* actual battery power demand */
-	pwr_demand = (profile->volt_limits[vbatt_idx] / 10000) * avg_cc;
-	pr_debug("%d:%d,%d: pwr_demand=%d avg_cc=%d cc_max=%d\n",
-		soc, temp_idx, vbatt_idx, pwr_demand,
-		avg_cc, cc_max);
+	/* statistical or reference max power demand for the tier at */
+	pr_debug("%s %d:%d,%d: avg_cc=%d cc_max=%d\n",
+		 __func__, soc, temp_idx, vbatt_idx,
+		 avg_cc, cc_max);
 
-	/* actual adapter current capabilities for this tier */
-	act_icl = ttf_pwr_icl(ce_data, temp_idx, vbatt_idx);
-	if (act_icl <= 0) {
-		pr_debug("%d: negative, null act_icl=%d\n", soc, act_icl);
+	/* equivalent input current for adapter at vtier */
+	equiv_icl = ttf_pwr_equiv_icl(ce_data, vbatt_idx, soc);
+	if (equiv_icl <= 0) {
+		pr_debug("%s %d: negative, null act_icl=%d\n",
+			 __func__, soc, equiv_icl);
 		return -EINVAL;
 	}
 
-	/* compensate for temperature (might not need) */
-	if (temp_idx != stats->ref_temp_idx && cc_max < act_icl) {
-		pr_debug("%d: temp_idx=%d, reduce icl %d->%d\n",
-			soc, temp_idx, act_icl, cc_max);
-		act_icl = cc_max;
+	/* lower to cc_max if in HOT and COLD */
+	if (cc_max < equiv_icl) {
+		pr_debug("%s %d: reduce act_icl=%d to cc_max=%d\n",
+			 __func__, soc, equiv_icl, cc_max);
+		equiv_icl = cc_max;
 	}
 
-	/* compensate for system load
-	 * NOTE: act_ibatt = 0 means no system load, need to fix later
+	/*
+	 * This is the trick that makes everything work:
+	 *   equiv_icl = min(act_icl, act_ibatt, cc_max)
+	 *
+	 * act_icl = adapter max or adapter actual icl (due to bad cable,
+	 *           AC enabled or temperature shift) scaled to vtier
+	 * act_ibatt = measured for
+	 *   at reference temperature or actual < cc_max due to sysload
+	 * cc_max = cc_max from profile (lower than ref for  HOT or COLD)
+	 *
 	 */
-	act_ibatt = ttf_pwr_ibatt(ce_data, temp_idx, vbatt_idx);
-	if (act_ibatt < 0) {
-		pr_debug("%d: ibatt=%d, discharging\n", soc, act_ibatt);
-		return -EINVAL;
-	} else if (act_ibatt > 0 && act_ibatt < act_icl) {
-		pr_debug("%d: sysload ibatt=%d, avg_cc=%d, reduce icl %d->%d\n",
-			soc, act_ibatt, avg_cc, act_icl, act_ibatt);
-		act_icl = act_ibatt;
-	}
 
-	pwr_avail = (ce_data->adapter_details.ad_voltage * 10) * act_icl;
-	if (!pwr_avail)
-		return -EINVAL;
-
-	/* TODO: scale for efficiency? */
-
-	if (pwr_avail < pwr_demand)
-		ratio = (stats->ref_watts * 100000) / pwr_avail;
+	/* ratio for elap time: it doesn't work if reference is not maximal */
+	if (equiv_icl < avg_cc)
+		ratio = (avg_cc * 100) / equiv_icl;
 	else
 		ratio = 100;
 
-	pr_debug("%d: pwr_avail=%d, pwr_demand=%d ratio=%d\n",
-		soc, pwr_avail, pwr_demand, ratio);
+	pr_debug("%s %d: equiv_icl=%d, avg_cc=%d ratio=%d\n",
+		 __func__, soc, equiv_icl, avg_cc, ratio);
 
 	return ratio;
 }
 
 /* SOC estimates ---------------------------------------------------------  */
 
-int ttf_elap(time_t *estimate, int i,
-	     const struct batt_ttf_stats *stats,
-	     const struct gbms_charging_event *ce_data)
+/* reference of current elap for a soc at max rate */
+static int ttf_ref_elap(const struct batt_ttf_stats *stats, int soc)
 {
-	int ratio;
 	time_t elap;
 
-	if (i < 0 || i >= 100) {
-		*estimate = 0;
+	if (soc < 0 || soc >= 100)
 		return 0;
-	}
 
-	elap = stats->soc_stats.elap[i];
+	elap = stats->soc_stats.elap[soc];
 	if (elap == 0)
-		elap = stats->soc_ref.elap[i];
+		elap = stats->soc_ref.elap[soc];
 
-	ratio = ttf_pwr_ratio(stats, ce_data, i);
-	if (ratio < 0) {
-		pr_debug("%d: negative ratio=%d\n", i, ratio);
+	return elap;
+}
+
+/* elap time for a single soc% */
+static int ttf_elap(time_t *estimate, const struct batt_ttf_stats *stats,
+		    const struct gbms_charging_event *ce_data,
+		    int soc)
+{
+	time_t elap;
+	int ratio;
+
+	/* cannot really return 0 elap unless the data is corrupted */
+	elap = ttf_ref_elap(stats, soc);
+	if (elap == 0) {
+		pr_debug("%s %d: zero elap\n", __func__, soc);
 		return -EINVAL;
 	}
 
-	pr_debug("i=%d elap=%ld ratio=%d\n", i, elap, ratio);
+	ratio = ttf_pwr_ratio(stats, ce_data, soc);
+	if (ratio < 0) {
+		pr_debug("%s %d: negative ratio=%d\n", __func__, soc, ratio);
+		return -EINVAL;
+	}
+
 	*estimate = elap * ratio;
 
+	pr_debug("%s: soc=%d estimate=%ld elap=%ld ratio=%d\n",
+		 __func__, soc, *estimate, elap, ratio);
+
 	return 0;
 }
 
-/* time to full from SOC%
+/*
+ * time to full from SOC% using the actual stats
  * NOTE: prediction is based stats and corrected with the ce_data
  * NOTE: usually called with soc > ce_data->last_soc
  */
-int ttf_soc_estimate(time_t *res,
-		     const struct batt_ttf_stats *stats,
+int ttf_soc_estimate(time_t *res, const struct batt_ttf_stats *stats,
 		     const struct gbms_charging_event *ce_data,
 		     qnum_t soc, qnum_t last)
 {
 	const int ssoc_in = ce_data->charging_stats.ssoc_in;
-	const int end = qnum_toint(last);
-	const int frac = qnum_fracdgt(soc);
-	int i = qnum_toint(soc);
-	time_t estimate = 0;
-	int ret;
+	time_t elap, estimate = 0;
+	int i = 0, ret, frac;
 
-	if (end > 100)
+	if (last > qnum_rconst(100) || last < soc)
 		return -EINVAL;
 
-	ret = ttf_elap(&estimate, i, stats, ce_data);
-	if (ret < 0)
-		return ret;
+	if (last == soc) {
+		*res = 0;
+		return 0;
+	}
 
-	/* add ttf_elap starting from i + 1 */
-	estimate = (estimate * (100 - frac)) / 100;
-	for (i += 1; i < end; i++) {
-		time_t elap;
+	/* FIRST: 100 - first 2 digits of the fractional part of soc if any */
+	frac = (int)qnum_nfracdgt(soc, 2);
+	if (frac) {
+
+		ret = ttf_elap(&elap, stats, ce_data, qnum_toint(soc));
+		if (ret == 0)
+			estimate += (elap * (100 - frac)) / 100;
+
+		i += 1;
+	}
+
+	/* accumulate ttf_elap starting from i + 1 until end */
+	for (i += qnum_toint(soc); i < qnum_toint(last); i++) {
 
 		if (i >= ssoc_in && i < ce_data->last_soc) {
 			/* use real data if within charging event */
 			elap = ce_data->soc_stats.elap[i] * 100;
 		} else {
 			/* future (and soc before ssoc_in) */
-			ret = ttf_elap(&elap, i, stats, ce_data);
+			ret = ttf_elap(&elap, stats, ce_data, i);
 			if (ret < 0)
 				return ret;
 		}
@@ -295,12 +382,19 @@
 		estimate += elap;
 	}
 
+	/* LAST: first 2 digits of the fractional part of soc if any */
+	frac = (int)qnum_nfracdgt(last, 2);
+	if (frac) {
+		ret = ttf_elap(&elap, stats, ce_data, qnum_toint(last));
+		if (ret == 0)
+			estimate += (elap * frac) / 100;
+	}
+
 	*res = estimate / 100;
 	return 0;
 }
 
-int ttf_soc_cstr(char *buff, int size,
-		 const struct ttf_soc_stats *soc_stats,
+int ttf_soc_cstr(char *buff, int size, const struct ttf_soc_stats *soc_stats,
 		 int start, int end)
 {
 	int i, len = 0, split = 100;
@@ -725,7 +819,7 @@
 		return;
 	}
 
-	/* ignore fist nozero and last entry because they are partial */
+	/* ignore first nozero and last entry because they are partial */
 	for ( ; first_soc <= last_soc; first_soc++)
 		if (ce_data->soc_stats.elap[first_soc] != 0)
 			break;
diff --git a/drivers/power/supply/google/p9221_charger.c b/drivers/power/supply/google/p9221_charger.c
index 77fe0db..2f46aaf 100644
--- a/drivers/power/supply/google/p9221_charger.c
+++ b/drivers/power/supply/google/p9221_charger.c
@@ -59,6 +59,7 @@
 #define P9382A_NEG_POWER_11W		(11 / 0.5)
 #define P9382_RTX_TIMEOUT_MS		(2 * 1000)
 #define SCREEN_NB_INIT_DELAY_MS		(2 * 1000)
+#define CSP_SEND_DELAY_MS               (0.5 * 1000)
 
 #define WLC_ALIGNMENT_MAX		100
 #define WLC_MFG_GOOGLE			0x72
@@ -3461,13 +3462,24 @@
 	dev_info(&charger->client->dev, "Fast serial ID send(%s)\n", s);
 
 	mutex_unlock(&charger->cmd_lock);
-	charger->last_capacity = -1;
+	cancel_delayed_work_sync(&charger->send_csp_work);
+	schedule_delayed_work(&charger->send_csp_work,
+			      msecs_to_jiffies(CSP_SEND_DELAY_MS));
 	return;
 error:
 	mutex_unlock(&charger->cmd_lock);
 	charger->com_busy = false;
 }
 
+static void p9382_send_csp_work(struct work_struct *work)
+{
+	struct p9221_charger_data *charger = container_of(work,
+			struct p9221_charger_data, send_csp_work.work);
+
+	if (charger->last_capacity > 0)
+		p9221_send_csp(charger, charger->last_capacity);
+}
+
 static void p9382_rtx_work(struct work_struct *work)
 {
 	u8 mode_reg;
@@ -3565,6 +3577,7 @@
 			schedule_delayed_work(&charger->txid_work,
 					msecs_to_jiffies(TXID_SEND_DELAY_MS));
 		} else {
+			cancel_delayed_work_sync(&charger->send_csp_work);
 			charger->rtx_csp = 0;
 			charger->com_busy = false;
 		}
@@ -4375,6 +4388,7 @@
 	INIT_DELAYED_WORK(&charger->rtx_work, p9382_rtx_work);
 	INIT_DELAYED_WORK(&charger->screen_nb_init_work,
 			  p9382_screen_nb_init_work);
+	INIT_DELAYED_WORK(&charger->send_csp_work, p9382_send_csp_work);
 	INIT_WORK(&charger->uevent_work, p9221_uevent_work);
 	INIT_WORK(&charger->rtx_disable_work, p9382_rtx_disable_work);
 	alarm_init(&charger->icl_ramp_alarm, ALARM_BOOTTIME,
@@ -4580,6 +4594,7 @@
 	cancel_delayed_work_sync(&charger->align_work);
 	cancel_delayed_work_sync(&charger->rtx_work);
 	cancel_delayed_work_sync(&charger->screen_nb_init_work);
+	cancel_delayed_work_sync(&charger->send_csp_work);
 	cancel_work_sync(&charger->uevent_work);
 	cancel_work_sync(&charger->rtx_disable_work);
 	alarm_try_to_cancel(&charger->icl_ramp_alarm);
diff --git a/drivers/power/supply/google/p9221_charger.h b/drivers/power/supply/google/p9221_charger.h
index 04e9793..20dd85e 100644
--- a/drivers/power/supply/google/p9221_charger.h
+++ b/drivers/power/supply/google/p9221_charger.h
@@ -341,6 +341,7 @@
 	struct delayed_work		tx_work;
 	struct delayed_work		icl_ramp_work;
 	struct delayed_work		txid_work;
+	struct delayed_work             send_csp_work;
 	struct delayed_work		rtx_work;
 	struct delayed_work		screen_nb_init_work;
 	struct work_struct		uevent_work;
diff --git a/drivers/power/supply/google/sm7250_bms.c b/drivers/power/supply/google/sm7250_bms.c
index c504d62..c103cd2 100644
--- a/drivers/power/supply/google/sm7250_bms.c
+++ b/drivers/power/supply/google/sm7250_bms.c
@@ -36,11 +36,14 @@
 
 #define BIAS_STS_READY	BIT(0)
 
+#define CHARGE_DISABLE_VOTER	"charge_disable"
+
 struct bms_dev {
 	struct	device			*dev;
 	struct	power_supply		*psy;
 	struct	regmap			*pmic_regmap;
 	struct	votable			*fv_votable;
+	struct	votable			*fcc_votable;
 	struct	notifier_block		nb;
 	int				batt_id_ohms;
 	int				rl_soc_threshold;
@@ -646,7 +649,7 @@
 	stat1 = stat1 & CHGR_BATTERY_CHARGER_STATUS_MASK;
 
 	if (!plugged)
-		ret = POWER_SUPPLY_STATUS_DISCHARGING;
+		return POWER_SUPPLY_STATUS_DISCHARGING;
 
 	switch (stat1) {
 	case SM7250_TRICKLE_CHARGE:
@@ -1112,6 +1115,11 @@
 							ivalue, val, rc);
 		break;
 	case POWER_SUPPLY_PROP_CHARGE_DISABLE:
+		if (!bms->fcc_votable)
+			bms->fcc_votable = find_votable(VOTABLE_MSC_FCC);
+		if (bms->fcc_votable)
+			vote(bms->fcc_votable, CHARGE_DISABLE_VOTER,
+			     pval->intval, 0);
 		rc = sm7250_charge_disable(bms, pval->intval != 0);
 		break;
 	case POWER_SUPPLY_PROP_RERUN_AICL:
diff --git a/drivers/scsi/ufs/ufs.h b/drivers/scsi/ufs/ufs.h
index 2c816de..af2835f 100644
--- a/drivers/scsi/ufs/ufs.h
+++ b/drivers/scsi/ufs/ufs.h
@@ -261,6 +261,8 @@
 	GEOMETRY_DESC_PARAM_WB_SUP_WB_TYPE	= 0x56,
 };
 
+#define UFSHCD_DEFAULT_PE_CYCLE		3000
+
 /* Health descriptor parameters offsets in bytes*/
 enum health_desc_param {
 	HEALTH_DESC_PARAM_LEN			= 0x0,
@@ -269,6 +271,7 @@
 	HEALTH_DESC_PARAM_LIFE_TIME_EST_A	= 0x3,
 	HEALTH_DESC_PARAM_LIFE_TIME_EST_B	= 0x4,
 	HEALTH_DESC_PARAM_LIFE_TIME_EST_C	= 0x24,
+	HEALTH_DESC_PARAM_ERASE_OFFSET		= 0x0D,
 };
 
 /*
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 6a63c1c..8022e10 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -6340,6 +6340,28 @@
 	}
 }
 
+static u32 health_get_bytes(u8 *desc_buf, int bytes, int len)
+{
+	u32 value = 0;
+
+	switch (len) {
+	case 1:
+		value = desc_buf[bytes];
+		break;
+	case 2:
+		value = desc_buf[bytes] << 8;
+		value += desc_buf[bytes + 1];
+		break;
+	case 4:
+		value = desc_buf[bytes] << 24;
+		value += desc_buf[bytes + 1] << 16;
+		value += desc_buf[bytes + 2] << 8;
+		value += desc_buf[bytes + 3];
+		break;
+	}
+	return value;
+}
+
 int ufshcd_update_health(struct ufs_hba *hba)
 {
 	int buff_len = QUERY_DESC_HEALTH_DEF_SIZE;
@@ -6364,6 +6386,13 @@
 			(u8)desc_buf[HEALTH_DESC_PARAM_LIFE_TIME_EST_B];
 		hba->dev_info.life_time_estimation_c =
 			(u8)desc_buf[HEALTH_DESC_PARAM_LIFE_TIME_EST_C];
+		if (!hba->dev_info.life_time_estimation_c) {
+			u32 erase = health_get_bytes(desc_buf,
+					HEALTH_DESC_PARAM_ERASE_OFFSET, 2);
+			if (erase)
+				hba->dev_info.life_time_estimation_c =
+					erase * 100 / UFSHCD_DEFAULT_PE_CYCLE;
+		}
 		hba->dev_info.health_cached_t = ktime_get();
 	}
 	return err;
diff --git a/drivers/usb/pd/pd_engine.c b/drivers/usb/pd/pd_engine.c
index c9bc7bdb..774df74 100644
--- a/drivers/usb/pd/pd_engine.c
+++ b/drivers/usb/pd/pd_engine.c
@@ -2217,13 +2217,9 @@
 	if (!pd)
 		return ERR_PTR(-ENOMEM);
 
-#ifdef CONFIG_DEBUG_FS
 	pd->log = logbuffer_register("usbpd");
-	if (IS_ERR_OR_NULL(pd->log)) {
-		ret = PTR_ERR(pd->log);
-		goto free_pd;
-	}
-#endif
+	if (IS_ERR(pd->log))
+		pd->log = NULL;
 
 	mutex_init(&pd->lock);
 
@@ -2441,10 +2437,8 @@
 #endif
 	device_del(&pd->dev);
 free_buffer:
-#ifdef CONFIG_DEBUG_FS
-	logbuffer_unregister(pd->log);
-free_pd:
-#endif
+	if (pd->log)
+		logbuffer_unregister(pd->log);
 	num_pd_instances--;
 	put_device(&pd->dev);
 	return ERR_PTR(ret);
@@ -2470,8 +2464,9 @@
 	destroy_workqueue(pd->wq);
 #ifdef CONFIG_DEBUG_FS
 	pd_engine_debugfs_exit(pd);
-	logbuffer_unregister(pd->log);
 #endif
+	if (pd->log)
+		logbuffer_unregister(pd->log);
 	num_pd_instances--;
 	device_unregister(&pd->dev);
 }
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 6028d81..566c9aa 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -30,6 +30,8 @@
 #include <linux/usb/typec_altmode.h>
 #include <linux/workqueue.h>
 
+#include <../../../power/supply/google/logbuffer.h>
+
 #define FOREACH_CHUNK_STATE(S)			\
 	S(INVALID_CHUNK_STATE),			\
 	S(RCH_WAIT_FOR_MESSAGE),		\
@@ -434,6 +436,7 @@
 	int logbuffer_tail;
 	u8 *logbuffer[LOG_BUFFER_ENTRIES];
 #endif
+	struct logbuffer *log;
 
 	/* Chunk */
 	struct mutex chunk_lock;	/* chunk lock */
@@ -596,6 +599,8 @@
 	mutex_unlock(&port->logbuffer_lock);
 }
 
+#endif
+
 __printf(2, 3)
 static void tcpm_log(struct tcpm_port *port, const char *fmt, ...)
 {
@@ -611,7 +616,11 @@
 		port->tcpc->log_rtc(port->tcpc);
 
 	va_start(args, fmt);
+#ifdef CONFIG_DEBUG_FS
 	_tcpm_log(port, fmt, args);
+#else
+	logbuffer_vlog(port->log, fmt, args);
+#endif
 	va_end(args);
 }
 
@@ -621,7 +630,11 @@
 	va_list args;
 
 	va_start(args, fmt);
+#ifdef CONFIG_DEBUG_FS
 	_tcpm_log(port, fmt, args);
+#else
+	logbuffer_vlog(port->log, fmt, args);
+#endif
 	va_end(args);
 }
 
@@ -688,6 +701,8 @@
 	}
 }
 
+#ifdef CONFIG_DEBUG_FS
+
 static int tcpm_debug_show(struct seq_file *s, void *v)
 {
 	struct tcpm_port *port = (struct tcpm_port *)s->private;
@@ -731,11 +746,6 @@
 
 #else
 
-__printf(2, 3)
-static void tcpm_log(const struct tcpm_port *port, const char *fmt, ...) { }
-__printf(2, 3)
-static void tcpm_log_force(struct tcpm_port *port, const char *fmt, ...) { }
-static void tcpm_log_source_caps(struct tcpm_port *port) { }
 static void tcpm_debugfs_init(const struct tcpm_port *port) { }
 static void tcpm_debugfs_exit(const struct tcpm_port *port) { }
 
@@ -6535,6 +6545,14 @@
 	init_completion(&port->pps_complete);
 	tcpm_debugfs_init(port);
 
+#ifndef CONFIG_DEBUG_FS
+	port->log = logbuffer_register("tcpm");
+	if (IS_ERR_OR_NULL(port->log)) {
+		pr_err("tcpm: failed to obtain logbuffer instance\n");
+		port->log = NULL;
+	}
+#endif
+
 	err = tcpm_fw_get_caps(port, tcpc->fwnode);
 	if ((err < 0) && tcpc->config)
 		err = tcpm_copy_caps(port, tcpc->config);
@@ -6620,6 +6638,8 @@
 	usb_role_switch_put(port->role_sw);
 out_destroy_wq:
 	tcpm_debugfs_exit(port);
+	if (port->log)
+		logbuffer_unregister(port->log);
 	destroy_workqueue(port->wq);
 	return ERR_PTR(err);
 }
@@ -6635,6 +6655,8 @@
 	typec_unregister_port(port->typec_port);
 	usb_role_switch_put(port->role_sw);
 	tcpm_debugfs_exit(port);
+	if (port->log)
+		logbuffer_unregister(port->log);
 	destroy_workqueue(port->wq);
 	kfree(port->chunk_event);
 }
diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h
index 3e1702b..9bf6a68 100644
--- a/include/linux/cgroup-defs.h
+++ b/include/linux/cgroup-defs.h
@@ -65,6 +65,12 @@
 	 * specified at mount time and thus is implemented here.
 	 */
 	CGRP_CPUSET_CLONE_CHILDREN,
+
+	/* Control group has to be frozen. */
+	CGRP_FREEZE,
+
+	/* Cgroup is frozen. */
+	CGRP_FROZEN,
 };
 
 /* cgroup_root->flags */
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h
index b764132..5df87a7 100644
--- a/include/linux/cgroup.h
+++ b/include/linux/cgroup.h
@@ -581,20 +581,11 @@
 static inline struct cgroup *cgroup_ancestor(struct cgroup *cgrp,
 					     int ancestor_level)
 {
-	struct cgroup *ptr;
-
 	if (cgrp->level < ancestor_level)
 		return NULL;
-
-	for (ptr = cgrp;
-	     ptr && ptr->level > ancestor_level;
-	     ptr = cgroup_parent(ptr))
-		;
-
-	if (ptr && ptr->level == ancestor_level)
-		return ptr;
-
-	return NULL;
+	while (cgrp && cgrp->level > ancestor_level)
+		cgrp = cgroup_parent(cgrp);
+	return cgrp;
 }
 
 /**
@@ -901,4 +892,47 @@
 		free_cgroup_ns(ns);
 }
 
+#ifdef CONFIG_CGROUPS
+
+void cgroup_enter_frozen(void);
+void cgroup_leave_frozen(bool always_leave);
+void cgroup_update_frozen(struct cgroup *cgrp);
+void cgroup_freeze(struct cgroup *cgrp, bool freeze);
+void cgroup_freezer_migrate_task(struct task_struct *task, struct cgroup *src,
+				 struct cgroup *dst);
+void cgroup_freezer_frozen_exit(struct task_struct *task);
+static inline bool cgroup_task_freeze(struct task_struct *task)
+{
+	bool ret;
+
+	if (task->flags & PF_KTHREAD)
+		return false;
+
+	rcu_read_lock();
+	ret = test_bit(CGRP_FREEZE, &task_dfl_cgroup(task)->flags);
+	rcu_read_unlock();
+
+	return ret;
+}
+
+static inline bool cgroup_task_frozen(struct task_struct *task)
+{
+	return task->frozen;
+}
+
+#else /* !CONFIG_CGROUPS */
+
+static inline void cgroup_enter_frozen(void) { }
+static inline void cgroup_leave_frozen(bool always_leave) { }
+static inline bool cgroup_task_freeze(struct task_struct *task)
+{
+	return false;
+}
+static inline bool cgroup_task_frozen(struct task_struct *task)
+{
+	return false;
+}
+
+#endif /* !CONFIG_CGROUPS */
+
 #endif /* _LINUX_CGROUP_H */
diff --git a/include/linux/sched/jobctl.h b/include/linux/sched/jobctl.h
index 98228bd..fa067de 100644
--- a/include/linux/sched/jobctl.h
+++ b/include/linux/sched/jobctl.h
@@ -18,6 +18,7 @@
 #define JOBCTL_TRAP_NOTIFY_BIT	20	/* trap for NOTIFY */
 #define JOBCTL_TRAPPING_BIT	21	/* switching to TRACED */
 #define JOBCTL_LISTENING_BIT	22	/* ptracer is listening for events */
+#define JOBCTL_TRAP_FREEZE_BIT	23	/* trap for cgroup freezer */
 
 #define JOBCTL_STOP_DEQUEUED	(1UL << JOBCTL_STOP_DEQUEUED_BIT)
 #define JOBCTL_STOP_PENDING	(1UL << JOBCTL_STOP_PENDING_BIT)
@@ -26,6 +27,7 @@
 #define JOBCTL_TRAP_NOTIFY	(1UL << JOBCTL_TRAP_NOTIFY_BIT)
 #define JOBCTL_TRAPPING		(1UL << JOBCTL_TRAPPING_BIT)
 #define JOBCTL_LISTENING	(1UL << JOBCTL_LISTENING_BIT)
+#define JOBCTL_TRAP_FREEZE	(1UL << JOBCTL_TRAP_FREEZE_BIT)
 
 #define JOBCTL_TRAP_MASK	(JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
 #define JOBCTL_PENDING_MASK	(JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h
index f25cef8..0beaea0 100644
--- a/include/linux/vmstat.h
+++ b/include/linux/vmstat.h
@@ -29,6 +29,7 @@
 	unsigned nr_activate;
 	unsigned nr_ref_keep;
 	unsigned nr_unmap_fail;
+	unsigned nr_lazyfree_fail;
 };
 
 #ifdef CONFIG_VM_EVENT_COUNTERS
diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
new file mode 100644
index 0000000..1897822
--- /dev/null
+++ b/include/trace/events/gpu_mem.h
@@ -0,0 +1,57 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gpu_mem
+
+#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_GPU_MEM_H
+
+#include <linux/tracepoint.h>
+
+/*
+ * The gpu_memory_total event indicates that there's an update to either the
+ * global or process total gpu memory counters.
+ *
+ * This event should be emitted whenever the kernel device driver allocates,
+ * frees, imports, unimports memory in the GPU addressable space.
+ *
+ * @gpu_id: This is the gpu id.
+ *
+ * @pid: Put 0 for global total, while positive pid for process total.
+ *
+ * @size: Virtual size of the allocation in bytes.
+ *
+ */
+TRACE_EVENT(gpu_mem_total,
+
+	TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
+
+	TP_ARGS(gpu_id, pid, size),
+
+	TP_STRUCT__entry(
+		__field(uint32_t, gpu_id)
+		__field(uint32_t, pid)
+		__field(uint64_t, size)
+	),
+
+	TP_fast_assign(
+		__entry->gpu_id = gpu_id;
+		__entry->pid = pid;
+		__entry->size = size;
+	),
+
+	TP_printk("gpu_id=%u pid=%u size=%llu",
+		__entry->gpu_id,
+		__entry->pid,
+		__entry->size)
+);
+
+#endif /* _TRACE_GPU_MEM_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
diff --git a/include/uapi/input/touch_offload.h b/include/uapi/input/touch_offload.h
index 46f8665..2549f7a 100644
--- a/include/uapi/input/touch_offload.h
+++ b/include/uapi/input/touch_offload.h
@@ -10,7 +10,8 @@
 #define BUS_TYPE_I3C 2
 
 /* Indicates full heatmap frame vs. partial */
-#define HEATMAP_SIZE_FULL (1 << 31)
+#define HEATMAP_SIZE_PARTIAL  0
+#define HEATMAP_SIZE_FULL     1
 
 /* Touch channel data types */
 #define TOUCH_DATA_TYPE_COORD	  0x01
@@ -28,6 +29,11 @@
 
 /* TouchOffloadCaps
  *
+ * touch_offload_major_version - Major version for breaking changes
+ * touch_offload_minor_version - Minor version for small, compatible changes
+ * device_id - device-specific identifier
+ * display_width - width of device display in pixels
+ * display_height - height of device display in pixels
  * tx_size - number of TX channels
  * rx_size - number of RX channels
  * bus_type - bus interface type
@@ -44,22 +50,36 @@
  * num_sensitivity_settings - number of sensitivity options provided
  */
 struct TouchOffloadCaps {
-	int tx_size;
-	int rx_size;
-	int bus_type;
-	__u32 bus_speed_hz;
-	int heatmap_size;
-	int touch_data_types;
-	int touch_scan_types;
+	/* Version info */
+	__u32 touch_offload_major_version;
+	__u32 touch_offload_minor_version;
+	__u8 reserved1[8];
 
-	// feature flags
-	bool continuous_reporting;
-	bool noise_reporting;
-	bool cancel_reporting;
-	bool size_reporting;
-	bool filter_grip;
-	bool filter_palm;
-	int num_sensitivity_settings;
+	/* Device info */
+	__u32 device_id;
+	__u16 display_width;
+	__u16 display_height;
+	__u16 tx_size;
+	__u16 rx_size;
+	__u8 bus_type;
+	__u32 bus_speed_hz;
+	__u8 reserved2[16];
+
+	/* Algorithm info */
+	__u8 heatmap_size;
+	__u16 touch_data_types;
+	__u16 touch_scan_types;
+	__u8 reserved3[16];
+
+	/* Feature flags */
+	__u8 continuous_reporting;
+	__u8 noise_reporting;
+	__u8 cancel_reporting;
+	__u8 size_reporting;
+	__u8 filter_grip;
+	__u8 filter_palm;
+	__u8 num_sensitivity_settings;
+	__u8 reserved4[32];
 };
 
 /* TouchOffloadConfig
@@ -75,18 +95,20 @@
  * self_data_types - bitfield of self data types to collect
  */
 struct TouchOffloadConfig {
-	// feature flags
-	bool continuous_reporting;
-	bool noise_reporting;
-	bool cancel_reporting;
-	bool filter_grip;
-	bool filter_palm;
-	int sensitivity_setting;
+	/* Feature flags */
+	__u8 continuous_reporting;
+	__u8 noise_reporting;
+	__u8 cancel_reporting;
+	__u8 filter_grip;
+	__u8 filter_palm;
+	__u8 sensitivity_setting;
+	__u8 reserved1[16];
 
-	// Data to read
-	bool read_coords;
-	int mutual_data_types;
-	int self_data_types;
+	/* Data to read */
+	__u8 read_coords;
+	__u16 mutual_data_types;
+	__u16 self_data_types;
+	__u8 reserved2[16];
 };
 
 /* TouchOffloadFrameHeader
@@ -94,11 +116,23 @@
  * frame_size - number of bytes in the frame
  * index - unique, sequential frame index
  * timestamp - frame timestamp in nanoseconds
+ * num_channels - number of channels included in the frame
  */
 struct TouchOffloadFrameHeader {
 	__u32 frame_size;
 	__u64 index;
 	__u64 timestamp;
+	__u8 num_channels;
+} __attribute__((packed));
+
+/* TouchOffloadChannelHeader
+ *
+ * channel_type - touch type stored in the channel
+ * channel_size - size in bytes of the channel sample
+ */
+struct TouchOffloadChannelHeader {
+	__u8 channel_type;
+	__u32 channel_size;
 } __attribute__((packed));
 
 /* CoordStatus
@@ -125,39 +159,44 @@
  * x - x component of touch location
  * y - y component of touch location
  * status - type of touch
+ * major - size of the larger axis of the touch blob
+ * minor - size of the smaller axis of the touch blob
+ * pressure - z-axis or force exerted on touch touch point
  */
 struct TouchOffloadCoord {
 	__u16 x;
 	__u16 y;
 	enum CoordStatus status;
-	__u8 filler[32];
-	// major, minor, id
-	// touch type: coord, cancel, palm, etc
-	// explicit up event vs. down?
+	__u32 major;
+	__u32 minor;
+	__u32 pressure;
+	__u8 reserved1[16];
 } __attribute__((packed));
 
 /* TouchOffloadDataCoord
  *
- * size_bytes - number of bytes per coordinate channel frame
+ * header - header shared by all channels in a frame
  * coords - array of MAX_COORD coordinates
  */
 struct TouchOffloadDataCoord {
-	__u32 size_bytes;
+	struct TouchOffloadChannelHeader header;
 	struct TouchOffloadCoord coords[MAX_COORDS];
+	__u8 reserved1[16];
 } __attribute__((packed));
 #define TOUCH_OFFLOAD_FRAME_SIZE_COORD (sizeof(struct TouchOffloadDataCoord))
 
 /* TouchOffloadData2d
  *
- * size_bytes - size in bytes of this frame of 2D touch data
+ * header - header shared by all channels in a frame
  * tx_size - number of tx channels
  * rx_size - number of rx channels
  * data - pointer to raw touch data buffer
  */
 struct TouchOffloadData2d {
-	__u32 size_bytes;
+	struct TouchOffloadChannelHeader header;
 	__u16 tx_size;
 	__u16 rx_size;
+	__u8 reserved1[16];
 	__u8 data[1];
 } __attribute__((packed));
 #define TOUCH_OFFLOAD_DATA_SIZE_2D(rx, tx) (sizeof(__u16)*(rx)*(tx))
@@ -167,15 +206,16 @@
 
 /* TouchOffloadData1d
  *
- * size_bytes - size in bytes of this frame of 2D touch data
+ * header - header shared by all channels in a frame
  * tx_size - number of tx channels
  * rx_size - number of rx channels
  * data - pointer to raw touch data buffer
  */
 struct TouchOffloadData1d {
-	__u32 size_bytes;
+	struct TouchOffloadChannelHeader header;
 	__u16 tx_size;
 	__u16 rx_size;
+	__u8 reserved1[16];
 	__u8 data[1];
 } __attribute__((packed));
 #define TOUCH_OFFLOAD_DATA_SIZE_1D(rx, tx) (sizeof(__u16)*((rx)+(tx)))
@@ -191,6 +231,7 @@
  */
 struct TouchOffloadIocGetCaps {
 	struct TouchOffloadCaps caps;
+	__u8 reserved1[16];
 };
 
 /* TouchOffloadIocConfigure
@@ -199,15 +240,21 @@
  */
 struct TouchOffloadIocConfigure {
 	struct TouchOffloadConfig config;
+	__u8 reserved1[16];
 };
 
 /* TouchOffloadIocReport
  *
- * numCoords - number of coordinates contained in "coords"
+ * index - unique, sequential frame index
+ * timestamp - frame timestamp in nanoseconds
+ * num_coords - number of coordinates contained in "coords"
  * coords - array of coordinates to be reported to the driver
  */
 struct TouchOffloadIocReport {
-	__u8 numCoords;
+	__u64 index;
+	__u64 timestamp;
+	__u8 num_coords;
+	__u8 reserved1[16];
 	struct TouchOffloadCoord coords[MAX_COORDS];
 };
 
@@ -229,4 +276,4 @@
 /* Ioctl to stop the touch_offload pipeline */
 #define TOUCH_OFFLOAD_IOC_STOP _IOC(TOUCH_OFFLOAD_MAGIC, 4)
 
-#endif // _UAPI_TOUCH_OFFLOAD_H
+#endif /* _UAPI_TOUCH_OFFLOAD_H */
diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h
index 7d62fcf..0e61c76 100644
--- a/include/uapi/linux/android/binder.h
+++ b/include/uapi/linux/android/binder.h
@@ -266,6 +266,18 @@
 	__u32            reserved3;
 };
 
+struct binder_freeze_info {
+	__u32            pid;
+	__u32            enable;
+	__u32            timeout_ms;
+};
+
+struct binder_frozen_status_info {
+	__u32            pid;
+	__u32            sync_recv;
+	__u32            async_recv;
+};
+
 #define BINDER_WRITE_READ		_IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT		_IOW('b', 3, __s64)
 #define BINDER_SET_MAX_THREADS		_IOW('b', 5, __u32)
@@ -276,6 +288,8 @@
 #define BINDER_GET_NODE_DEBUG_INFO	_IOWR('b', 11, struct binder_node_debug_info)
 #define BINDER_GET_NODE_INFO_FOR_REF	_IOWR('b', 12, struct binder_node_info_for_ref)
 #define BINDER_SET_CONTEXT_MGR_EXT	_IOW('b', 13, struct flat_binder_object)
+#define BINDER_FREEZE			_IOW('b', 14, struct binder_freeze_info)
+#define BINDER_GET_FROZEN_INFO		_IOWR('b', 15, struct binder_frozen_status_info)
 
 /*
  * NOTE: Two special error codes you should check for when calling
@@ -460,6 +474,12 @@
 	 * The the last transaction (either a bcTRANSACTION or
 	 * a bcATTEMPT_ACQUIRE) failed (e.g. out of memory).  No parameters.
 	 */
+
+	BR_FROZEN_REPLY = _IO('r', 18),
+	/*
+	 * The target of the last transaction (either a bcTRANSACTION or
+	 * a bcATTEMPT_ACQUIRE) is frozen.  No parameters.
+	 */
 };
 
 enum binder_driver_command_protocol {
diff --git a/include/uapi/linux/loop.h b/include/uapi/linux/loop.h
index 080a8df..24a1c45 100644
--- a/include/uapi/linux/loop.h
+++ b/include/uapi/linux/loop.h
@@ -25,6 +25,16 @@
 	LO_FLAGS_DIRECT_IO	= 16,
 };
 
+/* LO_FLAGS that can be set using LOOP_SET_STATUS(64) */
+#define LOOP_SET_STATUS_SETTABLE_FLAGS (LO_FLAGS_AUTOCLEAR | LO_FLAGS_PARTSCAN)
+
+/* LO_FLAGS that can be cleared using LOOP_SET_STATUS(64) */
+#define LOOP_SET_STATUS_CLEARABLE_FLAGS (LO_FLAGS_AUTOCLEAR)
+
+/* LO_FLAGS that can be set using LOOP_CONFIGURE */
+#define LOOP_CONFIGURE_SETTABLE_FLAGS (LO_FLAGS_READ_ONLY | LO_FLAGS_AUTOCLEAR \
+				       | LO_FLAGS_PARTSCAN | LO_FLAGS_DIRECT_IO)
+
 #include <asm/posix_types.h>	/* for __kernel_old_dev_t */
 #include <linux/types.h>	/* for __u64 */
 
@@ -37,7 +47,7 @@
 	int		   lo_offset;
 	int		   lo_encrypt_type;
 	int		   lo_encrypt_key_size; 	/* ioctl w/o */
-	int		   lo_flags;			/* ioctl r/o */
+	int		   lo_flags;
 	char		   lo_name[LO_NAME_SIZE];
 	unsigned char	   lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
 	unsigned long	   lo_init[2];
@@ -53,13 +63,29 @@
 	__u32		   lo_number;			/* ioctl r/o */
 	__u32		   lo_encrypt_type;
 	__u32		   lo_encrypt_key_size;		/* ioctl w/o */
-	__u32		   lo_flags;			/* ioctl r/o */
+	__u32		   lo_flags;
 	__u8		   lo_file_name[LO_NAME_SIZE];
 	__u8		   lo_crypt_name[LO_NAME_SIZE];
 	__u8		   lo_encrypt_key[LO_KEY_SIZE]; /* ioctl w/o */
 	__u64		   lo_init[2];
 };
 
+/**
+ * struct loop_config - Complete configuration for a loop device.
+ * @fd: fd of the file to be used as a backing file for the loop device.
+ * @block_size: block size to use; ignored if 0.
+ * @info: struct loop_info64 to configure the loop device with.
+ *
+ * This structure is used with the LOOP_CONFIGURE ioctl, and can be used to
+ * atomically setup and configure all loop device parameters at once.
+ */
+struct loop_config {
+	__u32			fd;
+	__u32                   block_size;
+	struct loop_info64	info;
+	__u64			__reserved[8];
+};
+
 /*
  * Loop filter types
  */
@@ -90,6 +116,7 @@
 #define LOOP_SET_CAPACITY	0x4C07
 #define LOOP_SET_DIRECT_IO	0x4C08
 #define LOOP_SET_BLOCK_SIZE	0x4C09
+#define LOOP_CONFIGURE		0x4C0A
 
 /* /dev/loop-control interface */
 #define LOOP_CTL_ADD		0x4C80
diff --git a/kernel/cgroup/Makefile b/kernel/cgroup/Makefile
index bfcdae8..5d7a76b 100644
--- a/kernel/cgroup/Makefile
+++ b/kernel/cgroup/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
-obj-y := cgroup.o rstat.o namespace.o cgroup-v1.o
+obj-y := cgroup.o rstat.o namespace.o cgroup-v1.o freezer.o
 
-obj-$(CONFIG_CGROUP_FREEZER) += freezer.o
+obj-$(CONFIG_CGROUP_FREEZER) += legacy_freezer.o
 obj-$(CONFIG_CGROUP_PIDS) += pids.o
 obj-$(CONFIG_CGROUP_RDMA) += rdma.o
 obj-$(CONFIG_CPUSETS) += cpuset.o
diff --git a/kernel/cgroup/cgroup-internal.h b/kernel/cgroup/cgroup-internal.h
index 75568fc..92717bb 100644
--- a/kernel/cgroup/cgroup-internal.h
+++ b/kernel/cgroup/cgroup-internal.h
@@ -196,7 +196,7 @@
 
 void cgroup_free_root(struct cgroup_root *root);
 void init_cgroup_root(struct cgroup_root *root, struct cgroup_sb_opts *opts);
-int cgroup_setup_root(struct cgroup_root *root, u16 ss_mask, int ref_flags);
+int cgroup_setup_root(struct cgroup_root *root, u16 ss_mask);
 int rebind_subsystems(struct cgroup_root *dst_root, u16 ss_mask);
 struct dentry *cgroup_do_mount(struct file_system_type *fs_type, int flags,
 			       struct cgroup_root *root, unsigned long magic,
@@ -224,6 +224,7 @@
 int cgroup_show_path(struct seq_file *sf, struct kernfs_node *kf_node,
 		     struct kernfs_root *kf_root);
 
+int __cgroup_task_count(const struct cgroup *cgrp);
 int cgroup_task_count(const struct cgroup *cgrp);
 
 /*
diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c
index 0a39b26..f66c9d4 100644
--- a/kernel/cgroup/cgroup-v1.c
+++ b/kernel/cgroup/cgroup-v1.c
@@ -27,6 +27,9 @@
 /* Controllers blocked by the commandline in v1 */
 static u16 cgroup_no_v1_mask;
 
+/* disable named v1 mounts */
+static bool cgroup_no_v1_named;
+
 /*
  * pidlist destructions need to be flushed on cgroup destruction.  Use a
  * separate workqueue as flush domain.
@@ -336,22 +339,6 @@
 	return l;
 }
 
-/**
- * cgroup_task_count - count the number of tasks in a cgroup.
- * @cgrp: the cgroup in question
- */
-int cgroup_task_count(const struct cgroup *cgrp)
-{
-	int count = 0;
-	struct cgrp_cset_link *link;
-
-	spin_lock_irq(&css_set_lock);
-	list_for_each_entry(link, &cgrp->cset_links, cset_link)
-		count += link->cset->nr_tasks;
-	spin_unlock_irq(&css_set_lock);
-	return count;
-}
-
 /*
  * Load a cgroup's pidarray with either procs' tgids or tasks' pids
  */
@@ -964,6 +951,10 @@
 		}
 		if (!strncmp(token, "name=", 5)) {
 			const char *name = token + 5;
+
+			/* blocked by boot param? */
+			if (cgroup_no_v1_named)
+				return -ENOENT;
 			/* Can't specify an empty name */
 			if (!strlen(name))
 				return -EINVAL;
@@ -1110,13 +1101,11 @@
 			     void *data, unsigned long magic,
 			     struct cgroup_namespace *ns)
 {
-	struct super_block *pinned_sb = NULL;
 	struct cgroup_sb_opts opts;
 	struct cgroup_root *root;
 	struct cgroup_subsys *ss;
 	struct dentry *dentry;
 	int i, ret;
-	bool new_root = false;
 
 	cgroup_lock_and_drain_offline(&cgrp_dfl_root.cgrp);
 
@@ -1178,29 +1167,6 @@
 		if (root->flags ^ opts.flags)
 			pr_warn("new mount options do not match the existing superblock, will be ignored\n");
 
-		/*
-		 * We want to reuse @root whose lifetime is governed by its
-		 * ->cgrp.  Let's check whether @root is alive and keep it
-		 * that way.  As cgroup_kill_sb() can happen anytime, we
-		 * want to block it by pinning the sb so that @root doesn't
-		 * get killed before mount is complete.
-		 *
-		 * With the sb pinned, tryget_live can reliably indicate
-		 * whether @root can be reused.  If it's being killed,
-		 * drain it.  We can use wait_queue for the wait but this
-		 * path is super cold.  Let's just sleep a bit and retry.
-		 */
-		pinned_sb = kernfs_pin_sb(root->kf_root, NULL);
-		if (IS_ERR(pinned_sb) ||
-		    !percpu_ref_tryget_live(&root->cgrp.self.refcnt)) {
-			mutex_unlock(&cgroup_mutex);
-			if (!IS_ERR_OR_NULL(pinned_sb))
-				deactivate_super(pinned_sb);
-			msleep(10);
-			ret = restart_syscall();
-			goto out_free;
-		}
-
 		ret = 0;
 		goto out_unlock;
 	}
@@ -1226,15 +1192,20 @@
 		ret = -ENOMEM;
 		goto out_unlock;
 	}
-	new_root = true;
 
 	init_cgroup_root(root, &opts);
 
-	ret = cgroup_setup_root(root, opts.subsys_mask, PERCPU_REF_INIT_DEAD);
+	ret = cgroup_setup_root(root, opts.subsys_mask);
 	if (ret)
 		cgroup_free_root(root);
 
 out_unlock:
+	if (!ret && !percpu_ref_tryget_live(&root->cgrp.self.refcnt)) {
+		mutex_unlock(&cgroup_mutex);
+		msleep(10);
+		ret = restart_syscall();
+		goto out_free;
+	}
 	mutex_unlock(&cgroup_mutex);
 out_free:
 	kfree(opts.release_agent);
@@ -1246,25 +1217,13 @@
 	dentry = cgroup_do_mount(&cgroup_fs_type, flags, root,
 				 CGROUP_SUPER_MAGIC, ns);
 
-	/*
-	 * There's a race window after we release cgroup_mutex and before
-	 * allocating a superblock. Make sure a concurrent process won't
-	 * be able to re-use the root during this window by delaying the
-	 * initialization of root refcnt.
-	 */
-	if (new_root) {
-		mutex_lock(&cgroup_mutex);
-		percpu_ref_reinit(&root->cgrp.self.refcnt);
-		mutex_unlock(&cgroup_mutex);
+	if (!IS_ERR(dentry) && percpu_ref_is_dying(&root->cgrp.self.refcnt)) {
+		struct super_block *sb = dentry->d_sb;
+		dput(dentry);
+		deactivate_locked_super(sb);
+		msleep(10);
+		dentry = ERR_PTR(restart_syscall());
 	}
-
-	/*
-	 * If @pinned_sb, we're reusing an existing root and holding an
-	 * extra ref on its sb.  Mount is complete.  Put the extra ref.
-	 */
-	if (pinned_sb)
-		deactivate_super(pinned_sb);
-
 	return dentry;
 }
 
@@ -1293,7 +1252,12 @@
 
 		if (!strcmp(token, "all")) {
 			cgroup_no_v1_mask = U16_MAX;
-			break;
+			continue;
+		}
+
+		if (!strcmp(token, "named")) {
+			cgroup_no_v1_named = true;
+			continue;
 		}
 
 		for_each_subsys(ss, i) {
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 0045bc1..b1f0a81 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -563,6 +563,39 @@
 	css_get(&cgrp->self);
 }
 
+/**
+ * __cgroup_task_count - count the number of tasks in a cgroup. The caller
+ * is responsible for taking the css_set_lock.
+ * @cgrp: the cgroup in question
+ */
+int __cgroup_task_count(const struct cgroup *cgrp)
+{
+	int count = 0;
+	struct cgrp_cset_link *link;
+
+	lockdep_assert_held(&css_set_lock);
+
+	list_for_each_entry(link, &cgrp->cset_links, cset_link)
+		count += link->cset->nr_tasks;
+
+	return count;
+}
+
+/**
+ * cgroup_task_count - count the number of tasks in a cgroup.
+ * @cgrp: the cgroup in question
+ */
+int cgroup_task_count(const struct cgroup *cgrp)
+{
+	int count;
+
+	spin_lock_irq(&css_set_lock);
+	count = __cgroup_task_count(cgrp);
+	spin_unlock_irq(&css_set_lock);
+
+	return count;
+}
+
 struct cgroup_subsys_state *of_css(struct kernfs_open_file *of)
 {
 	struct cgroup *cgrp = of->kn->parent->priv;
@@ -1898,7 +1931,7 @@
 		set_bit(CGRP_CPUSET_CLONE_CHILDREN, &root->cgrp.flags);
 }
 
-int cgroup_setup_root(struct cgroup_root *root, u16 ss_mask, int ref_flags)
+int cgroup_setup_root(struct cgroup_root *root, u16 ss_mask)
 {
 	LIST_HEAD(tmp_links);
 	struct cgroup *root_cgrp = &root->cgrp;
@@ -1915,7 +1948,7 @@
 	root_cgrp->ancestor_ids[0] = ret;
 
 	ret = percpu_ref_init(&root_cgrp->self.refcnt, css_release,
-			      ref_flags, GFP_KERNEL);
+			      0, GFP_KERNEL);
 	if (ret)
 		goto out;
 
@@ -2092,18 +2125,16 @@
 	struct cgroup_root *root = cgroup_root_from_kf(kf_root);
 
 	/*
-	 * If @root doesn't have any mounts or children, start killing it.
+	 * If @root doesn't have any children, start killing it.
 	 * This prevents new mounts by disabling percpu_ref_tryget_live().
 	 * cgroup_mount() may wait for @root's release.
 	 *
 	 * And don't kill the default root.
 	 */
-	if (!list_empty(&root->cgrp.self.children) ||
-	    root == &cgrp_dfl_root)
-		cgroup_put(&root->cgrp);
-	else
+	if (list_empty(&root->cgrp.self.children) && root != &cgrp_dfl_root &&
+	    !percpu_ref_is_dying(&root->cgrp.self.refcnt))
 		percpu_ref_kill(&root->cgrp.self.refcnt);
-
+	cgroup_put(&root->cgrp);
 	kernfs_kill_sb(sb);
 }
 
@@ -2332,8 +2363,15 @@
 			get_css_set(to_cset);
 			to_cset->nr_tasks++;
 			css_set_move_task(task, from_cset, to_cset, true);
-			put_css_set_locked(from_cset);
 			from_cset->nr_tasks--;
+			/*
+			 * If the source or destination cgroup is frozen,
+			 * the task might require to change its state.
+			 */
+			cgroup_freezer_migrate_task(task, from_cset->dfl_cgrp,
+						    to_cset->dfl_cgrp);
+			put_css_set_locked(from_cset);
+
 		}
 	}
 	spin_unlock_irq(&css_set_lock);
@@ -2532,7 +2570,7 @@
 
 		dst_cset = find_css_set(src_cset, src_cset->mg_dst_cgrp);
 		if (!dst_cset)
-			goto err;
+			return -ENOMEM;
 
 		WARN_ON_ONCE(src_cset->mg_dst_cset || dst_cset->mg_dst_cset);
 
@@ -2564,9 +2602,6 @@
 	}
 
 	return 0;
-err:
-	cgroup_migrate_finish(mgctx);
-	return -ENOMEM;
 }
 
 /**
@@ -3378,8 +3413,11 @@
 
 static int cgroup_events_show(struct seq_file *seq, void *v)
 {
-	seq_printf(seq, "populated %d\n",
-		   cgroup_is_populated(seq_css(seq)->cgroup));
+	struct cgroup *cgrp = seq_css(seq)->cgroup;
+
+	seq_printf(seq, "populated %d\n", cgroup_is_populated(cgrp));
+	seq_printf(seq, "frozen %d\n", test_bit(CGRP_FROZEN, &cgrp->flags));
+
 	return 0;
 }
 
@@ -3499,6 +3537,40 @@
 }
 #endif /* CONFIG_PSI */
 
+static int cgroup_freeze_show(struct seq_file *seq, void *v)
+{
+	struct cgroup *cgrp = seq_css(seq)->cgroup;
+
+	seq_printf(seq, "%d\n", cgrp->freezer.freeze);
+
+	return 0;
+}
+
+static ssize_t cgroup_freeze_write(struct kernfs_open_file *of,
+				   char *buf, size_t nbytes, loff_t off)
+{
+	struct cgroup *cgrp;
+	ssize_t ret;
+	int freeze;
+
+	ret = kstrtoint(strstrip(buf), 0, &freeze);
+	if (ret)
+		return ret;
+
+	if (freeze < 0 || freeze > 1)
+		return -ERANGE;
+
+	cgrp = cgroup_kn_lock_live(of->kn, false);
+	if (!cgrp)
+		return -ENOENT;
+
+	cgroup_freeze(cgrp, freeze);
+
+	cgroup_kn_unlock(of->kn);
+
+	return nbytes;
+}
+
 static int cgroup_file_open(struct kernfs_open_file *of)
 {
 	struct cftype *cft = of->kn->priv;
@@ -4684,6 +4756,12 @@
 		.seq_show = cgroup_stat_show,
 	},
 	{
+		.name = "cgroup.freeze",
+		.flags = CFTYPE_NOT_ON_ROOT,
+		.seq_show = cgroup_freeze_show,
+		.write = cgroup_freeze_write,
+	},
+	{
 		.name = "cpu.stat",
 		.flags = CFTYPE_NOT_ON_ROOT,
 		.seq_show = cpu_stat_show,
@@ -5042,12 +5120,37 @@
 	if (ret)
 		goto out_psi_free;
 
+	/*
+	 * New cgroup inherits effective freeze counter, and
+	 * if the parent has to be frozen, the child has too.
+	 */
+	cgrp->freezer.e_freeze = parent->freezer.e_freeze;
+	if (cgrp->freezer.e_freeze) {
+		/*
+		 * Set the CGRP_FREEZE flag, so when a process will be
+		 * attached to the child cgroup, it will become frozen.
+		 * At this point the new cgroup is unpopulated, so we can
+		 * consider it frozen immediately.
+		 */
+		set_bit(CGRP_FREEZE, &cgrp->flags);
+		set_bit(CGRP_FROZEN, &cgrp->flags);
+	}
+
 	spin_lock_irq(&css_set_lock);
 	for (tcgrp = cgrp; tcgrp; tcgrp = cgroup_parent(tcgrp)) {
 		cgrp->ancestor_ids[tcgrp->level] = tcgrp->id;
 
-		if (tcgrp != cgrp)
+		if (tcgrp != cgrp) {
 			tcgrp->nr_descendants++;
+
+			/*
+			 * If the new cgroup is frozen, all ancestor cgroups
+			 * get a new frozen descendant, but their state can't
+			 * change because of this.
+			 */
+			if (cgrp->freezer.e_freeze)
+				tcgrp->freezer.nr_frozen_descendants++;
+		}
 	}
 	spin_unlock_irq(&css_set_lock);
 
@@ -5338,6 +5441,12 @@
 	for (tcgrp = cgroup_parent(cgrp); tcgrp; tcgrp = cgroup_parent(tcgrp)) {
 		tcgrp->nr_descendants--;
 		tcgrp->nr_dying_descendants++;
+		/*
+		 * If the dying cgroup is frozen, decrease frozen descendants
+		 * counters of ancestor cgroups.
+		 */
+		if (test_bit(CGRP_FROZEN, &cgrp->flags))
+			tcgrp->freezer.nr_frozen_descendants--;
 	}
 	spin_unlock_irq(&css_set_lock);
 
@@ -5500,7 +5609,7 @@
 	hash_add(css_set_table, &init_css_set.hlist,
 		 css_set_hash(init_css_set.subsys));
 
-	BUG_ON(cgroup_setup_root(&cgrp_dfl_root, 0, 0));
+	BUG_ON(cgroup_setup_root(&cgrp_dfl_root, 0));
 
 	mutex_unlock(&cgroup_mutex);
 
@@ -5791,6 +5900,26 @@
 			cset->nr_tasks++;
 			css_set_move_task(child, NULL, cset, false);
 		}
+
+		/*
+		 * If the cgroup has to be frozen, the new task has too.
+		 * Let's set the JOBCTL_TRAP_FREEZE jobctl bit to get
+		 * the task into the frozen state.
+		 */
+		if (unlikely(cgroup_task_freeze(child))) {
+			spin_lock(&child->sighand->siglock);
+			WARN_ON_ONCE(child->frozen);
+			child->jobctl |= JOBCTL_TRAP_FREEZE;
+			spin_unlock(&child->sighand->siglock);
+
+			/*
+			 * Calling cgroup_update_frozen() isn't required here,
+			 * because it will be called anyway a bit later
+			 * from do_freezer_trap(). So we avoid cgroup's
+			 * transient switch from the frozen state and back.
+			 */
+		}
+
 		spin_unlock_irq(&css_set_lock);
 	}
 
@@ -5840,6 +5969,12 @@
 		css_set_move_task(tsk, cset, NULL, false);
 		list_add_tail(&tsk->cg_list, &cset->dying_tasks);
 		cset->nr_tasks--;
+
+		if (unlikely(cgroup_task_frozen(tsk)))
+			cgroup_freezer_frozen_exit(tsk);
+		else if (unlikely(cgroup_task_freeze(tsk)))
+			cgroup_update_frozen(task_dfl_cgroup(tsk));
+
 		spin_unlock_irq(&css_set_lock);
 	} else {
 		get_css_set(cset);
@@ -6130,10 +6265,8 @@
 
 		ret += snprintf(buf + ret, size - ret, "%s\n", cft->name);
 
-		if (unlikely(ret >= size)) {
-			WARN_ON(1);
+		if (WARN_ON(ret >= size))
 			break;
-		}
 	}
 
 	return ret;
diff --git a/kernel/cgroup/freezer.c b/kernel/cgroup/freezer.c
index 0823679..9d8cda4 100644
--- a/kernel/cgroup/freezer.c
+++ b/kernel/cgroup/freezer.c
@@ -1,481 +1,317 @@
-/*
- * cgroup_freezer.c -  control group freezer subsystem
- *
- * Copyright IBM Corporation, 2007
- *
- * Author : Cedric Le Goater <clg@fr.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2.1 of the GNU Lesser General Public License
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-#include <linux/export.h>
-#include <linux/slab.h>
+//SPDX-License-Identifier: GPL-2.0
 #include <linux/cgroup.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/freezer.h>
-#include <linux/seq_file.h>
-#include <linux/mutex.h>
+#include <linux/sched.h>
+#include <linux/sched/task.h>
+#include <linux/sched/signal.h>
+
+#include "cgroup-internal.h"
 
 /*
- * A cgroup is freezing if any FREEZING flags are set.  FREEZING_SELF is
- * set if "FROZEN" is written to freezer.state cgroupfs file, and cleared
- * for "THAWED".  FREEZING_PARENT is set if the parent freezer is FREEZING
- * for whatever reason.  IOW, a cgroup has FREEZING_PARENT set if one of
- * its ancestors has FREEZING_SELF set.
+ * Propagate the cgroup frozen state upwards by the cgroup tree.
  */
-enum freezer_state_flags {
-	CGROUP_FREEZER_ONLINE	= (1 << 0), /* freezer is fully online */
-	CGROUP_FREEZING_SELF	= (1 << 1), /* this freezer is freezing */
-	CGROUP_FREEZING_PARENT	= (1 << 2), /* the parent freezer is freezing */
-	CGROUP_FROZEN		= (1 << 3), /* this and its descendants frozen */
-
-	/* mask for all FREEZING flags */
-	CGROUP_FREEZING		= CGROUP_FREEZING_SELF | CGROUP_FREEZING_PARENT,
-};
-
-struct freezer {
-	struct cgroup_subsys_state	css;
-	unsigned int			state;
-};
-
-static DEFINE_MUTEX(freezer_mutex);
-
-static inline struct freezer *css_freezer(struct cgroup_subsys_state *css)
+static void cgroup_propagate_frozen(struct cgroup *cgrp, bool frozen)
 {
-	return css ? container_of(css, struct freezer, css) : NULL;
-}
-
-static inline struct freezer *task_freezer(struct task_struct *task)
-{
-	return css_freezer(task_css(task, freezer_cgrp_id));
-}
-
-static struct freezer *parent_freezer(struct freezer *freezer)
-{
-	return css_freezer(freezer->css.parent);
-}
-
-bool cgroup_freezing(struct task_struct *task)
-{
-	bool ret;
-
-	rcu_read_lock();
-	ret = task_freezer(task)->state & CGROUP_FREEZING;
-	rcu_read_unlock();
-
-	return ret;
-}
-
-static const char *freezer_state_strs(unsigned int state)
-{
-	if (state & CGROUP_FROZEN)
-		return "FROZEN";
-	if (state & CGROUP_FREEZING)
-		return "FREEZING";
-	return "THAWED";
-};
-
-static struct cgroup_subsys_state *
-freezer_css_alloc(struct cgroup_subsys_state *parent_css)
-{
-	struct freezer *freezer;
-
-	freezer = kzalloc(sizeof(struct freezer), GFP_KERNEL);
-	if (!freezer)
-		return ERR_PTR(-ENOMEM);
-
-	return &freezer->css;
-}
-
-/**
- * freezer_css_online - commit creation of a freezer css
- * @css: css being created
- *
- * We're committing to creation of @css.  Mark it online and inherit
- * parent's freezing state while holding both parent's and our
- * freezer->lock.
- */
-static int freezer_css_online(struct cgroup_subsys_state *css)
-{
-	struct freezer *freezer = css_freezer(css);
-	struct freezer *parent = parent_freezer(freezer);
-
-	mutex_lock(&freezer_mutex);
-
-	freezer->state |= CGROUP_FREEZER_ONLINE;
-
-	if (parent && (parent->state & CGROUP_FREEZING)) {
-		freezer->state |= CGROUP_FREEZING_PARENT | CGROUP_FROZEN;
-		atomic_inc(&system_freezing_cnt);
-	}
-
-	mutex_unlock(&freezer_mutex);
-	return 0;
-}
-
-/**
- * freezer_css_offline - initiate destruction of a freezer css
- * @css: css being destroyed
- *
- * @css is going away.  Mark it dead and decrement system_freezing_count if
- * it was holding one.
- */
-static void freezer_css_offline(struct cgroup_subsys_state *css)
-{
-	struct freezer *freezer = css_freezer(css);
-
-	mutex_lock(&freezer_mutex);
-
-	if (freezer->state & CGROUP_FREEZING)
-		atomic_dec(&system_freezing_cnt);
-
-	freezer->state = 0;
-
-	mutex_unlock(&freezer_mutex);
-}
-
-static void freezer_css_free(struct cgroup_subsys_state *css)
-{
-	kfree(css_freezer(css));
-}
-
-/*
- * Tasks can be migrated into a different freezer anytime regardless of its
- * current state.  freezer_attach() is responsible for making new tasks
- * conform to the current state.
- *
- * Freezer state changes and task migration are synchronized via
- * @freezer->lock.  freezer_attach() makes the new tasks conform to the
- * current state and all following state changes can see the new tasks.
- */
-static void freezer_attach(struct cgroup_taskset *tset)
-{
-	struct task_struct *task;
-	struct cgroup_subsys_state *new_css;
-
-	mutex_lock(&freezer_mutex);
+	int desc = 1;
 
 	/*
-	 * Make the new tasks conform to the current state of @new_css.
-	 * For simplicity, when migrating any task to a FROZEN cgroup, we
-	 * revert it to FREEZING and let update_if_frozen() determine the
-	 * correct state later.
+	 * If the new state is frozen, some freezing ancestor cgroups may change
+	 * their state too, depending on if all their descendants are frozen.
 	 *
-	 * Tasks in @tset are on @new_css but may not conform to its
-	 * current state before executing the following - !frozen tasks may
-	 * be visible in a FROZEN cgroup and frozen tasks in a THAWED one.
+	 * Otherwise, all ancestor cgroups are forced into the non-frozen state.
 	 */
-	cgroup_taskset_for_each(task, new_css, tset) {
-		struct freezer *freezer = css_freezer(new_css);
-
-		if (!(freezer->state & CGROUP_FREEZING)) {
-			__thaw_task(task);
+	while ((cgrp = cgroup_parent(cgrp))) {
+		if (frozen) {
+			cgrp->freezer.nr_frozen_descendants += desc;
+			if (!test_bit(CGRP_FROZEN, &cgrp->flags) &&
+			    test_bit(CGRP_FREEZE, &cgrp->flags) &&
+			    cgrp->freezer.nr_frozen_descendants ==
+			    cgrp->nr_descendants) {
+				set_bit(CGRP_FROZEN, &cgrp->flags);
+				cgroup_file_notify(&cgrp->events_file);
+				desc++;
+			}
 		} else {
-			freeze_task(task);
-			/* clear FROZEN and propagate upwards */
-			while (freezer && (freezer->state & CGROUP_FROZEN)) {
-				freezer->state &= ~CGROUP_FROZEN;
-				freezer = parent_freezer(freezer);
+			cgrp->freezer.nr_frozen_descendants -= desc;
+			if (test_bit(CGRP_FROZEN, &cgrp->flags)) {
+				clear_bit(CGRP_FROZEN, &cgrp->flags);
+				cgroup_file_notify(&cgrp->events_file);
+				desc++;
 			}
 		}
 	}
-
-	mutex_unlock(&freezer_mutex);
 }
 
-/**
- * freezer_fork - cgroup post fork callback
- * @task: a task which has just been forked
- *
- * @task has just been created and should conform to the current state of
- * the cgroup_freezer it belongs to.  This function may race against
- * freezer_attach().  Losing to freezer_attach() means that we don't have
- * to do anything as freezer_attach() will put @task into the appropriate
- * state.
+/*
+ * Revisit the cgroup frozen state.
+ * Checks if the cgroup is really frozen and perform all state transitions.
  */
-static void freezer_fork(struct task_struct *task)
+void cgroup_update_frozen(struct cgroup *cgrp)
 {
-	struct freezer *freezer;
+	bool frozen;
+
+	lockdep_assert_held(&css_set_lock);
 
 	/*
-	 * The root cgroup is non-freezable, so we can skip locking the
-	 * freezer.  This is safe regardless of race with task migration.
-	 * If we didn't race or won, skipping is obviously the right thing
-	 * to do.  If we lost and root is the new cgroup, noop is still the
-	 * right thing to do.
+	 * If the cgroup has to be frozen (CGRP_FREEZE bit set),
+	 * and all tasks are frozen and/or stopped, let's consider
+	 * the cgroup frozen. Otherwise it's not frozen.
 	 */
-	if (task_css_is_root(task, freezer_cgrp_id))
-		return;
+	frozen = test_bit(CGRP_FREEZE, &cgrp->flags) &&
+		cgrp->freezer.nr_frozen_tasks == __cgroup_task_count(cgrp);
 
-	mutex_lock(&freezer_mutex);
-	rcu_read_lock();
-
-	freezer = task_freezer(task);
-	if (freezer->state & CGROUP_FREEZING)
-		freeze_task(task);
-
-	rcu_read_unlock();
-	mutex_unlock(&freezer_mutex);
-}
-
-/**
- * update_if_frozen - update whether a cgroup finished freezing
- * @css: css of interest
- *
- * Once FREEZING is initiated, transition to FROZEN is lazily updated by
- * calling this function.  If the current state is FREEZING but not FROZEN,
- * this function checks whether all tasks of this cgroup and the descendant
- * cgroups finished freezing and, if so, sets FROZEN.
- *
- * The caller is responsible for grabbing RCU read lock and calling
- * update_if_frozen() on all descendants prior to invoking this function.
- *
- * Task states and freezer state might disagree while tasks are being
- * migrated into or out of @css, so we can't verify task states against
- * @freezer state here.  See freezer_attach() for details.
- */
-static void update_if_frozen(struct cgroup_subsys_state *css)
-{
-	struct freezer *freezer = css_freezer(css);
-	struct cgroup_subsys_state *pos;
-	struct css_task_iter it;
-	struct task_struct *task;
-
-	lockdep_assert_held(&freezer_mutex);
-
-	if (!(freezer->state & CGROUP_FREEZING) ||
-	    (freezer->state & CGROUP_FROZEN))
-		return;
-
-	/* are all (live) children frozen? */
-	rcu_read_lock();
-	css_for_each_child(pos, css) {
-		struct freezer *child = css_freezer(pos);
-
-		if ((child->state & CGROUP_FREEZER_ONLINE) &&
-		    !(child->state & CGROUP_FROZEN)) {
-			rcu_read_unlock();
+	if (frozen) {
+		/* Already there? */
+		if (test_bit(CGRP_FROZEN, &cgrp->flags))
 			return;
-		}
+
+		set_bit(CGRP_FROZEN, &cgrp->flags);
+	} else {
+		/* Already there? */
+		if (!test_bit(CGRP_FROZEN, &cgrp->flags))
+			return;
+
+		clear_bit(CGRP_FROZEN, &cgrp->flags);
 	}
-	rcu_read_unlock();
+	cgroup_file_notify(&cgrp->events_file);
 
-	/* are all tasks frozen? */
-	css_task_iter_start(css, 0, &it);
-
-	while ((task = css_task_iter_next(&it))) {
-		if (freezing(task)) {
-			/*
-			 * freezer_should_skip() indicates that the task
-			 * should be skipped when determining freezing
-			 * completion.  Consider it frozen in addition to
-			 * the usual frozen condition.
-			 */
-			if (!frozen(task) && !freezer_should_skip(task))
-				goto out_iter_end;
-		}
-	}
-
-	freezer->state |= CGROUP_FROZEN;
-out_iter_end:
-	css_task_iter_end(&it);
+	/* Update the state of ancestor cgroups. */
+	cgroup_propagate_frozen(cgrp, frozen);
 }
 
-static int freezer_read(struct seq_file *m, void *v)
-{
-	struct cgroup_subsys_state *css = seq_css(m), *pos;
-
-	mutex_lock(&freezer_mutex);
-	rcu_read_lock();
-
-	/* update states bottom-up */
-	css_for_each_descendant_post(pos, css) {
-		if (!css_tryget_online(pos))
-			continue;
-		rcu_read_unlock();
-
-		update_if_frozen(pos);
-
-		rcu_read_lock();
-		css_put(pos);
-	}
-
-	rcu_read_unlock();
-	mutex_unlock(&freezer_mutex);
-
-	seq_puts(m, freezer_state_strs(css_freezer(css)->state));
-	seq_putc(m, '\n');
-	return 0;
-}
-
-static void freeze_cgroup(struct freezer *freezer)
-{
-	struct css_task_iter it;
-	struct task_struct *task;
-
-	css_task_iter_start(&freezer->css, 0, &it);
-	while ((task = css_task_iter_next(&it)))
-		freeze_task(task);
-	css_task_iter_end(&it);
-}
-
-static void unfreeze_cgroup(struct freezer *freezer)
-{
-	struct css_task_iter it;
-	struct task_struct *task;
-
-	css_task_iter_start(&freezer->css, 0, &it);
-	while ((task = css_task_iter_next(&it)))
-		__thaw_task(task);
-	css_task_iter_end(&it);
-}
-
-/**
- * freezer_apply_state - apply state change to a single cgroup_freezer
- * @freezer: freezer to apply state change to
- * @freeze: whether to freeze or unfreeze
- * @state: CGROUP_FREEZING_* flag to set or clear
- *
- * Set or clear @state on @cgroup according to @freeze, and perform
- * freezing or thawing as necessary.
+/*
+ * Increment cgroup's nr_frozen_tasks.
  */
-static void freezer_apply_state(struct freezer *freezer, bool freeze,
-				unsigned int state)
+static void cgroup_inc_frozen_cnt(struct cgroup *cgrp)
 {
-	/* also synchronizes against task migration, see freezer_attach() */
-	lockdep_assert_held(&freezer_mutex);
+	cgrp->freezer.nr_frozen_tasks++;
+}
 
-	if (!(freezer->state & CGROUP_FREEZER_ONLINE))
+/*
+ * Decrement cgroup's nr_frozen_tasks.
+ */
+static void cgroup_dec_frozen_cnt(struct cgroup *cgrp)
+{
+	cgrp->freezer.nr_frozen_tasks--;
+	WARN_ON_ONCE(cgrp->freezer.nr_frozen_tasks < 0);
+}
+
+/*
+ * Enter frozen/stopped state, if not yet there. Update cgroup's counters,
+ * and revisit the state of the cgroup, if necessary.
+ */
+void cgroup_enter_frozen(void)
+{
+	struct cgroup *cgrp;
+
+	if (current->frozen)
+		return;
+
+	spin_lock_irq(&css_set_lock);
+	current->frozen = true;
+	cgrp = task_dfl_cgroup(current);
+	cgroup_inc_frozen_cnt(cgrp);
+	cgroup_update_frozen(cgrp);
+	spin_unlock_irq(&css_set_lock);
+}
+
+/*
+ * Conditionally leave frozen/stopped state. Update cgroup's counters,
+ * and revisit the state of the cgroup, if necessary.
+ *
+ * If always_leave is not set, and the cgroup is freezing,
+ * we're racing with the cgroup freezing. In this case, we don't
+ * drop the frozen counter to avoid a transient switch to
+ * the unfrozen state.
+ */
+void cgroup_leave_frozen(bool always_leave)
+{
+	struct cgroup *cgrp;
+
+	spin_lock_irq(&css_set_lock);
+	cgrp = task_dfl_cgroup(current);
+	if (always_leave || !test_bit(CGRP_FREEZE, &cgrp->flags)) {
+		cgroup_dec_frozen_cnt(cgrp);
+		cgroup_update_frozen(cgrp);
+		WARN_ON_ONCE(!current->frozen);
+		current->frozen = false;
+	}
+	spin_unlock_irq(&css_set_lock);
+
+	if (unlikely(current->frozen)) {
+		/*
+		 * If the task remained in the frozen state,
+		 * make sure it won't reach userspace without
+		 * entering the signal handling loop.
+		 */
+		spin_lock_irq(&current->sighand->siglock);
+		recalc_sigpending();
+		spin_unlock_irq(&current->sighand->siglock);
+	}
+}
+
+/*
+ * Freeze or unfreeze the task by setting or clearing the JOBCTL_TRAP_FREEZE
+ * jobctl bit.
+ */
+static void cgroup_freeze_task(struct task_struct *task, bool freeze)
+{
+	unsigned long flags;
+
+	/* If the task is about to die, don't bother with freezing it. */
+	if (!lock_task_sighand(task, &flags))
 		return;
 
 	if (freeze) {
-		if (!(freezer->state & CGROUP_FREEZING))
-			atomic_inc(&system_freezing_cnt);
-		freezer->state |= state;
-		freeze_cgroup(freezer);
+		task->jobctl |= JOBCTL_TRAP_FREEZE;
+		signal_wake_up(task, false);
 	} else {
-		bool was_freezing = freezer->state & CGROUP_FREEZING;
-
-		freezer->state &= ~state;
-
-		if (!(freezer->state & CGROUP_FREEZING)) {
-			if (was_freezing)
-				atomic_dec(&system_freezing_cnt);
-			freezer->state &= ~CGROUP_FROZEN;
-			unfreeze_cgroup(freezer);
-		}
+		task->jobctl &= ~JOBCTL_TRAP_FREEZE;
+		wake_up_process(task);
 	}
+
+	unlock_task_sighand(task, &flags);
 }
 
-/**
- * freezer_change_state - change the freezing state of a cgroup_freezer
- * @freezer: freezer of interest
- * @freeze: whether to freeze or thaw
- *
- * Freeze or thaw @freezer according to @freeze.  The operations are
- * recursive - all descendants of @freezer will be affected.
+/*
+ * Freeze or unfreeze all tasks in the given cgroup.
  */
-static void freezer_change_state(struct freezer *freezer, bool freeze)
+static void cgroup_do_freeze(struct cgroup *cgrp, bool freeze)
 {
-	struct cgroup_subsys_state *pos;
+	struct css_task_iter it;
+	struct task_struct *task;
+
+	lockdep_assert_held(&cgroup_mutex);
+
+	spin_lock_irq(&css_set_lock);
+	if (freeze)
+		set_bit(CGRP_FREEZE, &cgrp->flags);
+	else
+		clear_bit(CGRP_FREEZE, &cgrp->flags);
+	spin_unlock_irq(&css_set_lock);
+
+	css_task_iter_start(&cgrp->self, 0, &it);
+	while ((task = css_task_iter_next(&it))) {
+		/*
+		 * Ignore kernel threads here. Freezing cgroups containing
+		 * kthreads isn't supported.
+		 */
+		if (task->flags & PF_KTHREAD)
+			continue;
+		cgroup_freeze_task(task, freeze);
+	}
+	css_task_iter_end(&it);
 
 	/*
-	 * Update all its descendants in pre-order traversal.  Each
-	 * descendant will try to inherit its parent's FREEZING state as
-	 * CGROUP_FREEZING_PARENT.
+	 * Cgroup state should be revisited here to cover empty leaf cgroups
+	 * and cgroups which descendants are already in the desired state.
 	 */
-	mutex_lock(&freezer_mutex);
-	rcu_read_lock();
-	css_for_each_descendant_pre(pos, &freezer->css) {
-		struct freezer *pos_f = css_freezer(pos);
-		struct freezer *parent = parent_freezer(pos_f);
+	spin_lock_irq(&css_set_lock);
+	if (cgrp->nr_descendants == cgrp->freezer.nr_frozen_descendants)
+		cgroup_update_frozen(cgrp);
+	spin_unlock_irq(&css_set_lock);
+}
 
-		if (!css_tryget_online(pos))
-			continue;
-		rcu_read_unlock();
+/*
+ * Adjust the task state (freeze or unfreeze) and revisit the state of
+ * source and destination cgroups.
+ */
+void cgroup_freezer_migrate_task(struct task_struct *task,
+				 struct cgroup *src, struct cgroup *dst)
+{
+	lockdep_assert_held(&css_set_lock);
 
-		if (pos_f == freezer)
-			freezer_apply_state(pos_f, freeze,
-					    CGROUP_FREEZING_SELF);
-		else
-			freezer_apply_state(pos_f,
-					    parent->state & CGROUP_FREEZING,
-					    CGROUP_FREEZING_PARENT);
+	/*
+	 * Kernel threads are not supposed to be frozen at all.
+	 */
+	if (task->flags & PF_KTHREAD)
+		return;
 
-		rcu_read_lock();
-		css_put(pos);
+	/*
+	 * Adjust counters of freezing and frozen tasks.
+	 * Note, that if the task is frozen, but the destination cgroup is not
+	 * frozen, we bump both counters to keep them balanced.
+	 */
+	if (task->frozen) {
+		cgroup_inc_frozen_cnt(dst);
+		cgroup_dec_frozen_cnt(src);
 	}
-	rcu_read_unlock();
-	mutex_unlock(&freezer_mutex);
+	cgroup_update_frozen(dst);
+	cgroup_update_frozen(src);
+
+	/*
+	 * Force the task to the desired state.
+	 */
+	cgroup_freeze_task(task, test_bit(CGRP_FREEZE, &dst->flags));
 }
 
-static ssize_t freezer_write(struct kernfs_open_file *of,
-			     char *buf, size_t nbytes, loff_t off)
+void cgroup_freezer_frozen_exit(struct task_struct *task)
 {
-	bool freeze;
+	struct cgroup *cgrp = task_dfl_cgroup(task);
 
-	buf = strstrip(buf);
+	lockdep_assert_held(&css_set_lock);
 
-	if (strcmp(buf, freezer_state_strs(0)) == 0)
-		freeze = false;
-	else if (strcmp(buf, freezer_state_strs(CGROUP_FROZEN)) == 0)
-		freeze = true;
-	else
-		return -EINVAL;
-
-	freezer_change_state(css_freezer(of_css(of)), freeze);
-	return nbytes;
+	cgroup_dec_frozen_cnt(cgrp);
+	cgroup_update_frozen(cgrp);
 }
 
-static u64 freezer_self_freezing_read(struct cgroup_subsys_state *css,
-				      struct cftype *cft)
+void cgroup_freeze(struct cgroup *cgrp, bool freeze)
 {
-	struct freezer *freezer = css_freezer(css);
+	struct cgroup_subsys_state *css;
+	struct cgroup *dsct;
+	bool applied = false;
 
-	return (bool)(freezer->state & CGROUP_FREEZING_SELF);
+	lockdep_assert_held(&cgroup_mutex);
+
+	/*
+	 * Nothing changed? Just exit.
+	 */
+	if (cgrp->freezer.freeze == freeze)
+		return;
+
+	cgrp->freezer.freeze = freeze;
+
+	/*
+	 * Propagate changes downwards the cgroup tree.
+	 */
+	css_for_each_descendant_pre(css, &cgrp->self) {
+		dsct = css->cgroup;
+
+		if (cgroup_is_dead(dsct))
+			continue;
+
+		if (freeze) {
+			dsct->freezer.e_freeze++;
+			/*
+			 * Already frozen because of ancestor's settings?
+			 */
+			if (dsct->freezer.e_freeze > 1)
+				continue;
+		} else {
+			dsct->freezer.e_freeze--;
+			/*
+			 * Still frozen because of ancestor's settings?
+			 */
+			if (dsct->freezer.e_freeze > 0)
+				continue;
+
+			WARN_ON_ONCE(dsct->freezer.e_freeze < 0);
+		}
+
+		/*
+		 * Do change actual state: freeze or unfreeze.
+		 */
+		cgroup_do_freeze(dsct, freeze);
+		applied = true;
+	}
+
+	/*
+	 * Even if the actual state hasn't changed, let's notify a user.
+	 * The state can be enforced by an ancestor cgroup: the cgroup
+	 * can already be in the desired state or it can be locked in the
+	 * opposite state, so that the transition will never happen.
+	 * In both cases it's better to notify a user, that there is
+	 * nothing to wait for.
+	 */
+	if (!applied)
+		cgroup_file_notify(&cgrp->events_file);
 }
-
-static u64 freezer_parent_freezing_read(struct cgroup_subsys_state *css,
-					struct cftype *cft)
-{
-	struct freezer *freezer = css_freezer(css);
-
-	return (bool)(freezer->state & CGROUP_FREEZING_PARENT);
-}
-
-static struct cftype files[] = {
-	{
-		.name = "state",
-		.flags = CFTYPE_NOT_ON_ROOT,
-		.seq_show = freezer_read,
-		.write = freezer_write,
-	},
-	{
-		.name = "self_freezing",
-		.flags = CFTYPE_NOT_ON_ROOT,
-		.read_u64 = freezer_self_freezing_read,
-	},
-	{
-		.name = "parent_freezing",
-		.flags = CFTYPE_NOT_ON_ROOT,
-		.read_u64 = freezer_parent_freezing_read,
-	},
-	{ }	/* terminate */
-};
-
-struct cgroup_subsys freezer_cgrp_subsys = {
-	.css_alloc	= freezer_css_alloc,
-	.css_online	= freezer_css_online,
-	.css_offline	= freezer_css_offline,
-	.css_free	= freezer_css_free,
-	.attach		= freezer_attach,
-	.fork		= freezer_fork,
-	.legacy_cftypes	= files,
-};
diff --git a/kernel/cgroup/legacy_freezer.c b/kernel/cgroup/legacy_freezer.c
new file mode 100644
index 0000000..0823679
--- /dev/null
+++ b/kernel/cgroup/legacy_freezer.c
@@ -0,0 +1,481 @@
+/*
+ * cgroup_freezer.c -  control group freezer subsystem
+ *
+ * Copyright IBM Corporation, 2007
+ *
+ * Author : Cedric Le Goater <clg@fr.ibm.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2.1 of the GNU Lesser General Public License
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#include <linux/export.h>
+#include <linux/slab.h>
+#include <linux/cgroup.h>
+#include <linux/fs.h>
+#include <linux/uaccess.h>
+#include <linux/freezer.h>
+#include <linux/seq_file.h>
+#include <linux/mutex.h>
+
+/*
+ * A cgroup is freezing if any FREEZING flags are set.  FREEZING_SELF is
+ * set if "FROZEN" is written to freezer.state cgroupfs file, and cleared
+ * for "THAWED".  FREEZING_PARENT is set if the parent freezer is FREEZING
+ * for whatever reason.  IOW, a cgroup has FREEZING_PARENT set if one of
+ * its ancestors has FREEZING_SELF set.
+ */
+enum freezer_state_flags {
+	CGROUP_FREEZER_ONLINE	= (1 << 0), /* freezer is fully online */
+	CGROUP_FREEZING_SELF	= (1 << 1), /* this freezer is freezing */
+	CGROUP_FREEZING_PARENT	= (1 << 2), /* the parent freezer is freezing */
+	CGROUP_FROZEN		= (1 << 3), /* this and its descendants frozen */
+
+	/* mask for all FREEZING flags */
+	CGROUP_FREEZING		= CGROUP_FREEZING_SELF | CGROUP_FREEZING_PARENT,
+};
+
+struct freezer {
+	struct cgroup_subsys_state	css;
+	unsigned int			state;
+};
+
+static DEFINE_MUTEX(freezer_mutex);
+
+static inline struct freezer *css_freezer(struct cgroup_subsys_state *css)
+{
+	return css ? container_of(css, struct freezer, css) : NULL;
+}
+
+static inline struct freezer *task_freezer(struct task_struct *task)
+{
+	return css_freezer(task_css(task, freezer_cgrp_id));
+}
+
+static struct freezer *parent_freezer(struct freezer *freezer)
+{
+	return css_freezer(freezer->css.parent);
+}
+
+bool cgroup_freezing(struct task_struct *task)
+{
+	bool ret;
+
+	rcu_read_lock();
+	ret = task_freezer(task)->state & CGROUP_FREEZING;
+	rcu_read_unlock();
+
+	return ret;
+}
+
+static const char *freezer_state_strs(unsigned int state)
+{
+	if (state & CGROUP_FROZEN)
+		return "FROZEN";
+	if (state & CGROUP_FREEZING)
+		return "FREEZING";
+	return "THAWED";
+};
+
+static struct cgroup_subsys_state *
+freezer_css_alloc(struct cgroup_subsys_state *parent_css)
+{
+	struct freezer *freezer;
+
+	freezer = kzalloc(sizeof(struct freezer), GFP_KERNEL);
+	if (!freezer)
+		return ERR_PTR(-ENOMEM);
+
+	return &freezer->css;
+}
+
+/**
+ * freezer_css_online - commit creation of a freezer css
+ * @css: css being created
+ *
+ * We're committing to creation of @css.  Mark it online and inherit
+ * parent's freezing state while holding both parent's and our
+ * freezer->lock.
+ */
+static int freezer_css_online(struct cgroup_subsys_state *css)
+{
+	struct freezer *freezer = css_freezer(css);
+	struct freezer *parent = parent_freezer(freezer);
+
+	mutex_lock(&freezer_mutex);
+
+	freezer->state |= CGROUP_FREEZER_ONLINE;
+
+	if (parent && (parent->state & CGROUP_FREEZING)) {
+		freezer->state |= CGROUP_FREEZING_PARENT | CGROUP_FROZEN;
+		atomic_inc(&system_freezing_cnt);
+	}
+
+	mutex_unlock(&freezer_mutex);
+	return 0;
+}
+
+/**
+ * freezer_css_offline - initiate destruction of a freezer css
+ * @css: css being destroyed
+ *
+ * @css is going away.  Mark it dead and decrement system_freezing_count if
+ * it was holding one.
+ */
+static void freezer_css_offline(struct cgroup_subsys_state *css)
+{
+	struct freezer *freezer = css_freezer(css);
+
+	mutex_lock(&freezer_mutex);
+
+	if (freezer->state & CGROUP_FREEZING)
+		atomic_dec(&system_freezing_cnt);
+
+	freezer->state = 0;
+
+	mutex_unlock(&freezer_mutex);
+}
+
+static void freezer_css_free(struct cgroup_subsys_state *css)
+{
+	kfree(css_freezer(css));
+}
+
+/*
+ * Tasks can be migrated into a different freezer anytime regardless of its
+ * current state.  freezer_attach() is responsible for making new tasks
+ * conform to the current state.
+ *
+ * Freezer state changes and task migration are synchronized via
+ * @freezer->lock.  freezer_attach() makes the new tasks conform to the
+ * current state and all following state changes can see the new tasks.
+ */
+static void freezer_attach(struct cgroup_taskset *tset)
+{
+	struct task_struct *task;
+	struct cgroup_subsys_state *new_css;
+
+	mutex_lock(&freezer_mutex);
+
+	/*
+	 * Make the new tasks conform to the current state of @new_css.
+	 * For simplicity, when migrating any task to a FROZEN cgroup, we
+	 * revert it to FREEZING and let update_if_frozen() determine the
+	 * correct state later.
+	 *
+	 * Tasks in @tset are on @new_css but may not conform to its
+	 * current state before executing the following - !frozen tasks may
+	 * be visible in a FROZEN cgroup and frozen tasks in a THAWED one.
+	 */
+	cgroup_taskset_for_each(task, new_css, tset) {
+		struct freezer *freezer = css_freezer(new_css);
+
+		if (!(freezer->state & CGROUP_FREEZING)) {
+			__thaw_task(task);
+		} else {
+			freeze_task(task);
+			/* clear FROZEN and propagate upwards */
+			while (freezer && (freezer->state & CGROUP_FROZEN)) {
+				freezer->state &= ~CGROUP_FROZEN;
+				freezer = parent_freezer(freezer);
+			}
+		}
+	}
+
+	mutex_unlock(&freezer_mutex);
+}
+
+/**
+ * freezer_fork - cgroup post fork callback
+ * @task: a task which has just been forked
+ *
+ * @task has just been created and should conform to the current state of
+ * the cgroup_freezer it belongs to.  This function may race against
+ * freezer_attach().  Losing to freezer_attach() means that we don't have
+ * to do anything as freezer_attach() will put @task into the appropriate
+ * state.
+ */
+static void freezer_fork(struct task_struct *task)
+{
+	struct freezer *freezer;
+
+	/*
+	 * The root cgroup is non-freezable, so we can skip locking the
+	 * freezer.  This is safe regardless of race with task migration.
+	 * If we didn't race or won, skipping is obviously the right thing
+	 * to do.  If we lost and root is the new cgroup, noop is still the
+	 * right thing to do.
+	 */
+	if (task_css_is_root(task, freezer_cgrp_id))
+		return;
+
+	mutex_lock(&freezer_mutex);
+	rcu_read_lock();
+
+	freezer = task_freezer(task);
+	if (freezer->state & CGROUP_FREEZING)
+		freeze_task(task);
+
+	rcu_read_unlock();
+	mutex_unlock(&freezer_mutex);
+}
+
+/**
+ * update_if_frozen - update whether a cgroup finished freezing
+ * @css: css of interest
+ *
+ * Once FREEZING is initiated, transition to FROZEN is lazily updated by
+ * calling this function.  If the current state is FREEZING but not FROZEN,
+ * this function checks whether all tasks of this cgroup and the descendant
+ * cgroups finished freezing and, if so, sets FROZEN.
+ *
+ * The caller is responsible for grabbing RCU read lock and calling
+ * update_if_frozen() on all descendants prior to invoking this function.
+ *
+ * Task states and freezer state might disagree while tasks are being
+ * migrated into or out of @css, so we can't verify task states against
+ * @freezer state here.  See freezer_attach() for details.
+ */
+static void update_if_frozen(struct cgroup_subsys_state *css)
+{
+	struct freezer *freezer = css_freezer(css);
+	struct cgroup_subsys_state *pos;
+	struct css_task_iter it;
+	struct task_struct *task;
+
+	lockdep_assert_held(&freezer_mutex);
+
+	if (!(freezer->state & CGROUP_FREEZING) ||
+	    (freezer->state & CGROUP_FROZEN))
+		return;
+
+	/* are all (live) children frozen? */
+	rcu_read_lock();
+	css_for_each_child(pos, css) {
+		struct freezer *child = css_freezer(pos);
+
+		if ((child->state & CGROUP_FREEZER_ONLINE) &&
+		    !(child->state & CGROUP_FROZEN)) {
+			rcu_read_unlock();
+			return;
+		}
+	}
+	rcu_read_unlock();
+
+	/* are all tasks frozen? */
+	css_task_iter_start(css, 0, &it);
+
+	while ((task = css_task_iter_next(&it))) {
+		if (freezing(task)) {
+			/*
+			 * freezer_should_skip() indicates that the task
+			 * should be skipped when determining freezing
+			 * completion.  Consider it frozen in addition to
+			 * the usual frozen condition.
+			 */
+			if (!frozen(task) && !freezer_should_skip(task))
+				goto out_iter_end;
+		}
+	}
+
+	freezer->state |= CGROUP_FROZEN;
+out_iter_end:
+	css_task_iter_end(&it);
+}
+
+static int freezer_read(struct seq_file *m, void *v)
+{
+	struct cgroup_subsys_state *css = seq_css(m), *pos;
+
+	mutex_lock(&freezer_mutex);
+	rcu_read_lock();
+
+	/* update states bottom-up */
+	css_for_each_descendant_post(pos, css) {
+		if (!css_tryget_online(pos))
+			continue;
+		rcu_read_unlock();
+
+		update_if_frozen(pos);
+
+		rcu_read_lock();
+		css_put(pos);
+	}
+
+	rcu_read_unlock();
+	mutex_unlock(&freezer_mutex);
+
+	seq_puts(m, freezer_state_strs(css_freezer(css)->state));
+	seq_putc(m, '\n');
+	return 0;
+}
+
+static void freeze_cgroup(struct freezer *freezer)
+{
+	struct css_task_iter it;
+	struct task_struct *task;
+
+	css_task_iter_start(&freezer->css, 0, &it);
+	while ((task = css_task_iter_next(&it)))
+		freeze_task(task);
+	css_task_iter_end(&it);
+}
+
+static void unfreeze_cgroup(struct freezer *freezer)
+{
+	struct css_task_iter it;
+	struct task_struct *task;
+
+	css_task_iter_start(&freezer->css, 0, &it);
+	while ((task = css_task_iter_next(&it)))
+		__thaw_task(task);
+	css_task_iter_end(&it);
+}
+
+/**
+ * freezer_apply_state - apply state change to a single cgroup_freezer
+ * @freezer: freezer to apply state change to
+ * @freeze: whether to freeze or unfreeze
+ * @state: CGROUP_FREEZING_* flag to set or clear
+ *
+ * Set or clear @state on @cgroup according to @freeze, and perform
+ * freezing or thawing as necessary.
+ */
+static void freezer_apply_state(struct freezer *freezer, bool freeze,
+				unsigned int state)
+{
+	/* also synchronizes against task migration, see freezer_attach() */
+	lockdep_assert_held(&freezer_mutex);
+
+	if (!(freezer->state & CGROUP_FREEZER_ONLINE))
+		return;
+
+	if (freeze) {
+		if (!(freezer->state & CGROUP_FREEZING))
+			atomic_inc(&system_freezing_cnt);
+		freezer->state |= state;
+		freeze_cgroup(freezer);
+	} else {
+		bool was_freezing = freezer->state & CGROUP_FREEZING;
+
+		freezer->state &= ~state;
+
+		if (!(freezer->state & CGROUP_FREEZING)) {
+			if (was_freezing)
+				atomic_dec(&system_freezing_cnt);
+			freezer->state &= ~CGROUP_FROZEN;
+			unfreeze_cgroup(freezer);
+		}
+	}
+}
+
+/**
+ * freezer_change_state - change the freezing state of a cgroup_freezer
+ * @freezer: freezer of interest
+ * @freeze: whether to freeze or thaw
+ *
+ * Freeze or thaw @freezer according to @freeze.  The operations are
+ * recursive - all descendants of @freezer will be affected.
+ */
+static void freezer_change_state(struct freezer *freezer, bool freeze)
+{
+	struct cgroup_subsys_state *pos;
+
+	/*
+	 * Update all its descendants in pre-order traversal.  Each
+	 * descendant will try to inherit its parent's FREEZING state as
+	 * CGROUP_FREEZING_PARENT.
+	 */
+	mutex_lock(&freezer_mutex);
+	rcu_read_lock();
+	css_for_each_descendant_pre(pos, &freezer->css) {
+		struct freezer *pos_f = css_freezer(pos);
+		struct freezer *parent = parent_freezer(pos_f);
+
+		if (!css_tryget_online(pos))
+			continue;
+		rcu_read_unlock();
+
+		if (pos_f == freezer)
+			freezer_apply_state(pos_f, freeze,
+					    CGROUP_FREEZING_SELF);
+		else
+			freezer_apply_state(pos_f,
+					    parent->state & CGROUP_FREEZING,
+					    CGROUP_FREEZING_PARENT);
+
+		rcu_read_lock();
+		css_put(pos);
+	}
+	rcu_read_unlock();
+	mutex_unlock(&freezer_mutex);
+}
+
+static ssize_t freezer_write(struct kernfs_open_file *of,
+			     char *buf, size_t nbytes, loff_t off)
+{
+	bool freeze;
+
+	buf = strstrip(buf);
+
+	if (strcmp(buf, freezer_state_strs(0)) == 0)
+		freeze = false;
+	else if (strcmp(buf, freezer_state_strs(CGROUP_FROZEN)) == 0)
+		freeze = true;
+	else
+		return -EINVAL;
+
+	freezer_change_state(css_freezer(of_css(of)), freeze);
+	return nbytes;
+}
+
+static u64 freezer_self_freezing_read(struct cgroup_subsys_state *css,
+				      struct cftype *cft)
+{
+	struct freezer *freezer = css_freezer(css);
+
+	return (bool)(freezer->state & CGROUP_FREEZING_SELF);
+}
+
+static u64 freezer_parent_freezing_read(struct cgroup_subsys_state *css,
+					struct cftype *cft)
+{
+	struct freezer *freezer = css_freezer(css);
+
+	return (bool)(freezer->state & CGROUP_FREEZING_PARENT);
+}
+
+static struct cftype files[] = {
+	{
+		.name = "state",
+		.flags = CFTYPE_NOT_ON_ROOT,
+		.seq_show = freezer_read,
+		.write = freezer_write,
+	},
+	{
+		.name = "self_freezing",
+		.flags = CFTYPE_NOT_ON_ROOT,
+		.read_u64 = freezer_self_freezing_read,
+	},
+	{
+		.name = "parent_freezing",
+		.flags = CFTYPE_NOT_ON_ROOT,
+		.read_u64 = freezer_parent_freezing_read,
+	},
+	{ }	/* terminate */
+};
+
+struct cgroup_subsys freezer_cgrp_subsys = {
+	.css_alloc	= freezer_css_alloc,
+	.css_online	= freezer_css_online,
+	.css_offline	= freezer_css_offline,
+	.css_free	= freezer_css_free,
+	.attach		= freezer_attach,
+	.fork		= freezer_fork,
+	.legacy_cftypes	= files,
+};
diff --git a/kernel/fork.c b/kernel/fork.c
index bd5f145..4b1a588 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -1210,7 +1210,9 @@
 	int killed;
 
 	freezer_do_not_count();
+	cgroup_enter_frozen();
 	killed = wait_for_completion_killable(vfork);
+	cgroup_leave_frozen(false);
 	freezer_count();
 
 	if (killed) {
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index d6f9756..0da3946 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2848,7 +2848,7 @@
 	if (is_min_capacity_cpu(cpu_of(rq)))
 		return;
 
-	if (p->pid > PID_MAX_DEFAULT)
+	if (unlikely(p->pid > PID_MAX_DEFAULT))
 		return;
 
 	bitset = bitmap_testbit(per_cpu(prioritized_task_mask, cpu_of(rq)),
@@ -2873,7 +2873,7 @@
 	if (is_min_capacity_cpu(cpu_of(rq)))
 		return;
 
-	if (p->pid > PID_MAX_DEFAULT)
+	if (unlikely(p->pid > PID_MAX_DEFAULT))
 		return;
 
 	if (bitmap_testbit(per_cpu(prioritized_task_mask, cpu_of(rq)),
@@ -8917,7 +8917,8 @@
 	     task_in_related_thread_group(p) &&
 	     (capacity_orig_of(dst_cpu) < capacity_orig_of(src_cpu))) ||
 	    (schedtune_prefer_high_cap(p) && p->prio <= DEFAULT_PRIO &&
-	     !is_min_capacity_cpu(src_cpu) && is_min_capacity_cpu(dst_cpu)))
+	     !is_min_capacity_cpu(src_cpu) && is_min_capacity_cpu(dst_cpu) &&
+	     per_cpu(prioritized_task_nr, src_cpu <= 1)))
 		return false;
 	return true;
 }
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 8530096..eba7a34 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2718,7 +2718,7 @@
 static inline unsigned long cpu_util(int cpu)
 {
 	return min(__cpu_util(cpu) + cpu_util_rt(cpu_rq(cpu)),
-	  capacity_orig_of(cpu));
+		   capacity_orig_of(cpu));
 }
 #endif
 #endif
diff --git a/kernel/signal.c b/kernel/signal.c
index 8e7ae16..55a61f21 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -43,6 +43,7 @@
 #include <linux/compiler.h>
 #include <linux/posix-timers.h>
 #include <linux/livepatch.h>
+#include <linux/cgroup.h>
 
 #define CREATE_TRACE_POINTS
 #include <trace/events/signal.h>
@@ -151,9 +152,10 @@
 
 static bool recalc_sigpending_tsk(struct task_struct *t)
 {
-	if ((t->jobctl & JOBCTL_PENDING_MASK) ||
+	if ((t->jobctl & (JOBCTL_PENDING_MASK | JOBCTL_TRAP_FREEZE)) ||
 	    PENDING(&t->pending, &t->blocked) ||
-	    PENDING(&t->signal->shared_pending, &t->blocked)) {
+	    PENDING(&t->signal->shared_pending, &t->blocked) ||
+	    cgroup_task_frozen(t)) {
 		set_tsk_thread_flag(t, TIF_SIGPENDING);
 		return true;
 	}
@@ -2124,8 +2126,10 @@
 		 */
 		preempt_disable();
 		read_unlock(&tasklist_lock);
+		cgroup_enter_frozen();
 		preempt_enable_no_resched();
 		freezable_schedule();
+		cgroup_leave_frozen(true);
 	} else {
 		/*
 		 * By the time we got the lock, our tracer went away.
@@ -2303,6 +2307,7 @@
 		}
 
 		/* Now we don't run again until woken by SIGCONT or SIGKILL */
+		cgroup_enter_frozen();
 		freezable_schedule();
 		return true;
 	} else {
@@ -2349,6 +2354,43 @@
 	}
 }
 
+/**
+ * do_freezer_trap - handle the freezer jobctl trap
+ *
+ * Puts the task into frozen state, if only the task is not about to quit.
+ * In this case it drops JOBCTL_TRAP_FREEZE.
+ *
+ * CONTEXT:
+ * Must be called with @current->sighand->siglock held,
+ * which is always released before returning.
+ */
+static void do_freezer_trap(void)
+	__releases(&current->sighand->siglock)
+{
+	/*
+	 * If there are other trap bits pending except JOBCTL_TRAP_FREEZE,
+	 * let's make another loop to give it a chance to be handled.
+	 * In any case, we'll return back.
+	 */
+	if ((current->jobctl & (JOBCTL_PENDING_MASK | JOBCTL_TRAP_FREEZE)) !=
+	     JOBCTL_TRAP_FREEZE) {
+		spin_unlock_irq(&current->sighand->siglock);
+		return;
+	}
+
+	/*
+	 * Now we're sure that there is no pending fatal signal and no
+	 * pending traps. Clear TIF_SIGPENDING to not get out of schedule()
+	 * immediately (if there is a non-fatal signal pending), and
+	 * put the task into sleep.
+	 */
+	__set_current_state(TASK_INTERRUPTIBLE);
+	clear_thread_flag(TIF_SIGPENDING);
+	spin_unlock_irq(&current->sighand->siglock);
+	cgroup_enter_frozen();
+	freezable_schedule();
+}
+
 static int ptrace_signal(int signr, siginfo_t *info)
 {
 	/*
@@ -2461,6 +2503,10 @@
 		trace_signal_deliver(SIGKILL, SEND_SIG_NOINFO,
 				&sighand->action[SIGKILL - 1]);
 		recalc_sigpending();
+		current->jobctl &= ~JOBCTL_TRAP_FREEZE;
+		spin_unlock_irq(&sighand->siglock);
+		if (unlikely(cgroup_task_frozen(current)))
+			cgroup_leave_frozen(true);
 		goto fatal;
 	}
 
@@ -2471,9 +2517,24 @@
 		    do_signal_stop(0))
 			goto relock;
 
-		if (unlikely(current->jobctl & JOBCTL_TRAP_MASK)) {
-			do_jobctl_trap();
+		if (unlikely(current->jobctl &
+			     (JOBCTL_TRAP_MASK | JOBCTL_TRAP_FREEZE))) {
+			if (current->jobctl & JOBCTL_TRAP_MASK) {
+				do_jobctl_trap();
+				spin_unlock_irq(&sighand->siglock);
+			} else if (current->jobctl & JOBCTL_TRAP_FREEZE)
+				do_freezer_trap();
+
+			goto relock;
+		}
+
+		/*
+		 * If the task is leaving the frozen state, let's update
+		 * cgroup counters and reset the frozen bit.
+		 */
+		if (unlikely(cgroup_task_frozen(current))) {
 			spin_unlock_irq(&sighand->siglock);
+			cgroup_leave_frozen(true);
 			goto relock;
 		}
 
@@ -2567,8 +2628,8 @@
 			continue;
 		}
 
-	fatal:
 		spin_unlock_irq(&sighand->siglock);
+	fatal:
 
 		/*
 		 * Anything else is fatal, maybe with a core dump.
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 81e35da..d22a677 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1117,6 +1117,7 @@
 	unsigned nr_immediate = 0;
 	unsigned nr_ref_keep = 0;
 	unsigned nr_unmap_fail = 0;
+	unsigned nr_lazyfree_fail = 0;
 
 	cond_resched();
 
@@ -1324,11 +1325,15 @@
 		 */
 		if (page_mapped(page)) {
 			enum ttu_flags flags = ttu_flags | TTU_BATCH_FLUSH;
+			bool was_swapbacked = PageSwapBacked(page);
 
 			if (unlikely(PageTransHuge(page)))
 				flags |= TTU_SPLIT_HUGE_PMD;
+
 			if (!try_to_unmap(page, flags)) {
 				nr_unmap_fail++;
+				if (!was_swapbacked && PageSwapBacked(page))
+					nr_lazyfree_fail++;
 				goto activate_locked;
 			}
 		}
@@ -1502,6 +1507,7 @@
 		stat->nr_activate = pgactivate;
 		stat->nr_ref_keep = nr_ref_keep;
 		stat->nr_unmap_fail = nr_unmap_fail;
+		stat->nr_lazyfree_fail = nr_lazyfree_fail;
 	}
 	return nr_reclaimed;
 }
@@ -1516,8 +1522,9 @@
 		/* Doesn't allow to write out dirty page */
 		.may_writepage = 0,
 	};
-	unsigned long ret;
 	struct page *page, *next;
+	struct reclaim_stat stat;
+	unsigned long nr_reclaimed;
 	LIST_HEAD(clean_pages);
 
 	list_for_each_entry_safe(page, next, page_list, lru) {
@@ -1528,11 +1535,21 @@
 		}
 	}
 
-	ret = shrink_page_list(&clean_pages, zone->zone_pgdat, &sc,
-			TTU_IGNORE_ACCESS, NULL, true);
+	nr_reclaimed = shrink_page_list(&clean_pages, zone->zone_pgdat, &sc,
+			TTU_IGNORE_ACCESS, &stat, true);
 	list_splice(&clean_pages, page_list);
-	mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE, -ret);
-	return ret;
+	mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE, -nr_reclaimed);
+	/*
+	 * Since lazyfree pages are isolated from file LRU from the beginning,
+	 * they will rotate back to anonymous LRU in the end if it failed to
+	 * discard so isolated count will be mismatched.
+	 * Compensate the isolated count for both LRU lists.
+	 */
+	mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_ANON,
+			    stat.nr_lazyfree_fail);
+	mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE,
+			    -stat.nr_lazyfree_fail);
+	return nr_reclaimed;
 }
 
 #ifdef CONFIG_PROCESS_RECLAIM
diff --git a/sound/soc/codecs/rt5514-spi.c b/sound/soc/codecs/rt5514-spi.c
index eb54d9e..df9b020 100644
--- a/sound/soc/codecs/rt5514-spi.c
+++ b/sound/soc/codecs/rt5514-spi.c
@@ -54,6 +54,7 @@
 static struct mutex spi_lock;
 static struct mutex switch_lock;
 static struct wakeup_source *rt5514_spi_ws;
+static struct wakeup_source *rt5514_watchdog_ws;
 static u32 spi_switch_mask;
 static int handshake_gpio, handshake_ack_irq;
 struct completion switch_ack;
@@ -952,13 +953,16 @@
 		container_of(work, struct rt5514_dsp, start_work.work);
 	struct snd_soc_component *component = rt5514_dsp->component;
 
+	__pm_stay_awake(rt5514_watchdog_ws);
 	if (!snd_power_wait(component->card->snd_card, SNDRV_CTL_POWER_D0)) {
 		if (rt5514_watchdog_dbg_info(rt5514_dsp)) {
 			if (rt5514_watchdog_handler_cb)
 				rt5514_watchdog_handler_cb();
+			__pm_relax(rt5514_watchdog_ws);
 			return;
 		}
 	}
+	__pm_relax(rt5514_watchdog_ws);
 
 	mutex_lock(&rt5514_dsp->dma_lock);
 	if (!(rt5514_dsp->substream[0] && rt5514_dsp->substream[0]->pcm) &&
@@ -1395,6 +1399,12 @@
 		return -ENODEV;
 	}
 
+	rt5514_watchdog_ws = wakeup_source_register(NULL, "rt5514-watchdog");
+	if (!rt5514_watchdog_ws) {
+		dev_err(&spi->dev, "Failed to register wakeup source\n");
+		return -ENODEV;
+	}
+
 	ret = devm_snd_soc_register_component(&spi->dev,
 					      &rt5514_spi_component,
 					      rt5514_spi_dai,
@@ -1402,6 +1412,7 @@
 	if (ret < 0) {
 		dev_err(&spi->dev, "Failed to register component.\n");
 		wakeup_source_unregister(rt5514_spi_ws);
+		wakeup_source_unregister(rt5514_watchdog_ws);
 		return ret;
 	}
 
@@ -1456,6 +1467,7 @@
 
 no_handshake:
 	wakeup_source_unregister(rt5514_spi_ws);
+	wakeup_source_unregister(rt5514_watchdog_ws);
 	rt5514_spi_request_switch(SPI_SWITCH_MASK_NO_IRQ, 1);
 	dev_info(&spi->dev, " rt5514-spi init success without handshake\n");
 
diff --git a/sound/soc/codecs/rt5514.c b/sound/soc/codecs/rt5514.c
index 55065dc..5f68c5f 100644
--- a/sound/soc/codecs/rt5514.c
+++ b/sound/soc/codecs/rt5514.c
@@ -687,6 +687,14 @@
 	struct snd_soc_component *component = rt5514->component;
 	unsigned int val = 0, i;
 
+	regmap_read(rt5514->regmap, RT5514_VENDOR_ID2, &val);
+	if (val != RT5514_DEVICE_ID) {
+		dev_err(component->dev,
+			"Device with ID register %x is not rt5514\n", val);
+		val = -ENODEV;
+		goto reset;
+	}
+
 	for (i = 0; i < 10; i++) {
 		regmap_read(rt5514->i2c_regmap, 0x18001014, &val);
 		if (val == 0)
@@ -695,9 +703,8 @@
 			usleep_range(10000, 15000);
 	}
 
+reset:
 	if (val) {
-		rt5514->load_default_sound_model = true;
-
 		dev_err(component->dev, "DSP run failure, reset DSP\n");
 
 		if (rt5514->gpiod_reset) {
@@ -1082,8 +1089,10 @@
 	rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 1);
 	rt5514->load_default_sound_model = false;
 	rt5514_dsp_enable(rt5514, false, false);
-	if (rt5514_dsp_status_check(rt5514))
+	if (rt5514_dsp_status_check(rt5514)) {
+		rt5514->load_default_sound_model = true;
 		rt5514_dsp_enable(rt5514, false, true);
+	}
 	rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 0);
 	rt5514->need_reload = false;
 }
@@ -1106,6 +1115,8 @@
 
 		rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 1);
 		rt5514_dsp_enable(rt5514, false, false);
+		if (rt5514_dsp_status_check(rt5514))
+			rt5514_dsp_enable(rt5514, false, true);
 		rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 0);
 	} else {
 		rt5514->dsp_enabled = ucontrol->value.integer.value[0];
@@ -1135,6 +1146,8 @@
 		rt5514->dsp_adc_enabled = ucontrol->value.integer.value[0];
 		rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 1);
 		rt5514_dsp_enable(rt5514, true, false);
+		if (rt5514_dsp_status_check(rt5514))
+			rt5514_dsp_enable(rt5514, false, true);
 		rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 0);
 	} else {
 		rt5514->dsp_adc_enabled = ucontrol->value.integer.value[0];
@@ -1540,6 +1553,37 @@
 	return 0;
 }
 
+static int rt5514_hotword_dsp_identifier_get(struct snd_kcontrol *kcontrol,
+		unsigned int __user *bytes, unsigned int size)
+{
+	struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
+	struct rt5514_priv *rt5514 = snd_soc_component_get_drvdata(component);
+	int ret = 0;
+	unsigned int identifier_addr;
+	char uuid[DSP_IDENTIFIER_SIZE];
+
+	if (size != DSP_IDENTIFIER_SIZE)
+		return -EINVAL;
+
+	regmap_write(rt5514->i2c_regmap, 0x18002fd0, 0x2 << 28);
+	regmap_write(rt5514->i2c_regmap, 0x18001014, 2);
+
+	msleep(20);
+
+	regmap_read(rt5514->i2c_regmap, 0x18002fd4, &identifier_addr);
+
+	if ((identifier_addr & 0xffe00000) == 0x4fe00000)
+		rt5514_spi_burst_read(identifier_addr, (u8 *)&uuid,
+			DSP_IDENTIFIER_SIZE);
+
+	if (copy_to_user(bytes, &uuid, DSP_IDENTIFIER_SIZE)) {
+		dev_warn(component->dev, "%s(), copy_to_user fail\n", __func__);
+		ret = -EFAULT;
+	}
+
+	return ret;
+}
+
 static const char * const dmic_divider_rate_txt[] = {
 	"1.024K", "1.536K", "2.048K", "3.072K",
 };
@@ -1615,6 +1659,8 @@
 		rt5514_ambient_hotword_version_get, NULL),
 	SOC_SINGLE_EXT("DSP Firmware Version", SND_SOC_NOPM, 0, 0x7fffffff,
 		0, rt5514_firmware_version_get, NULL),
+	SND_SOC_BYTES_TLV("DSP Identifier", DSP_IDENTIFIER_SIZE,
+		rt5514_hotword_dsp_identifier_get, NULL),
 };
 
 /* ADC Mixer*/
@@ -2009,6 +2055,8 @@
 	rt5514->dsp_adc_enabled = 1;
 	rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 1);
 	rt5514_dsp_enable(rt5514, false, false);
+	if (rt5514_dsp_status_check(rt5514))
+		rt5514_dsp_enable(rt5514, false, true);
 	rt5514_spi_request_switch(SPI_SWITCH_MASK_LOAD, 0);
 
 	rt5514->is_streaming = true;
diff --git a/sound/soc/codecs/rt5514.h b/sound/soc/codecs/rt5514.h
index 035ca0c..ca079d2 100644
--- a/sound/soc/codecs/rt5514.h
+++ b/sound/soc/codecs/rt5514.h
@@ -264,7 +264,8 @@
 #define RT5514P_FIRMWARE3	"rt5514p_dsp_fw3.bin"
 #define RT5514P_FIRMWARE4	"rt5514p_dsp_fw4.bin"
 
-#define AMBIENT_COMMON_MAX_PAYLOAD_BUFFER_SIZE (128)
+#define AMBIENT_COMMON_MAX_PAYLOAD_BUFFER_SIZE	(128)
+#define DSP_IDENTIFIER_SIZE			(40)
 
 #define DIVIDER_1_P024		1024000
 #define DIVIDER_1_P536		1536000