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(¤t->sighand->siglock);
+ recalc_sigpending();
+ spin_unlock_irq(¤t->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(¤t->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(¤t->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(¤t->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